mysql5.7安装
安装mysql我花了大半天时间,主要是踩了查资料的坑。与网上旧版资料相比,新版本mysql的安装、使用已经发生了一些变化,比如去除了my.cnf配置,没有mysql.service服务。所以最终还是参考官方资料比较靠谱。
1.下载官方包,以5.7为例, 5.7官方下载传送门
先查看一下linux的系统版本,输入 uname -a

依照系统版本选择安装包,这里我们用的是linux通用版本

可以拷贝下载地址,使用命令下载 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
2. 安装步骤
主要参考官方文档,传送门
先安装依赖库libaio,RedHat系列用yum命令,Ubuntu用apt命令

之后按文档步骤安装,这里我就不一一拷贝了,注意没权限的话加 sudo

特别注明一下,mysql5.7的启动命令是:
sudo bin/mysqld_safe --user=mysql &
创建数据库时,会给出一个临时密码,后面会用到
[Note] A temporary password is generated for root@localhost: HQ6?Nl/mwSmk
输入 ps -ef|grep mysql 确认mysql是否启动

3.用户名配置
首先登录进入mysql, mysql -u 你的用户名 -p ,输入临时密码
然后可以设置自己的密码,set password=password('你的密码');
4.连接地址配置 ,传送门
设置host,以我们内网为例, sudo mysql --host=192.168.0.110 --port=3306 -p
这个配置主要是为了能远程访问,因为默认的配置地址为localhost,是无法远程访问的
开放远程登陆,grant all privileges on *.* to root@'%' identified by 'root';
刷新配置, flush privileges;
5.关于MariaDB
MariaDB是mysql之父基于mysql的分支版本,这里我们不是要讲这个新数据库,是想说一下mysql安装时可能遇到报错:
Failed to start mysqld.service: Unit not found
然后网上就都说要配置 mariadb,什么mysql之父的忧虑啊,什么mariadb的性能啊,其实都是互相抄
按官方教程是不需要装mariadb的,你想想一个完整的数据库,它居然不能启动,要安装另一个数据库,这思路多奇葩?
比如启动mysql,官方是用是bin/mysqld_safe
比如重启服务,貌似有一个systemctl daemon-reload
总之是有解决方法的,不要看网上人云亦云
6.SQLServer的迁移
由于对服务器不熟悉,我们以前使用了Windows做服务器,数据库也用了SQLServer,估计也是很受鄙视啊,现在要迁移到mysql。
首先需要一个得心应手的工具,因为自己要手动迁移数据库是很麻烦的,其字段兼容、索引、报错等问题很难解决,还是得靠工具。
网上搜了一下,很多推荐Navicat,有中文版哦,很人性化,决定就用它。
我们用Navicat主要解决两个问题,一是跨数据库种类,二是跨机器。
就说说迁移的经验吧,首先要登录数据库,两个数据库都要登录。本地数据库就常规登录,跨机器数据库用SSH。注意数据库配置host,否则无法远程访问的。
mysql旧版本可以设置my.cnf,但是到了5.7已经没有这个配置,需要用命令 sudo mysql --host=192.168.0.110 --port=3306 -p


在新数据库建立数据库名,之后选 工具-数据传输

注意看是否有报错,有任意报错则传输过程会终止。目前我遇到两类问题,一是中文字段,二是数据超界。
中文字段主要是人名、物品名等字段,需要将对应新表的字段改为gbk,选中表单-设计表-字段。或者将整个库默认为gbk,选 编辑数据库。

数据超界,我们之前有用到tinyint,它的范围很小,-128到127,但SQLServer允许它超出,而mysql是强制校验的,不允许超出,传输的时候就会报错。网上说什么修改策略之类的,按我测试是无效的,我的方法是重新定义数值,tinyint主要是用来做一些type定义等小范围数值,比如原来是
201 202 203,我改为 31 32 33,把范围修正为不超界数值。
如果字段都占用完了,建议新建一个int字段,把tinyint字段拷贝过去,删除旧字段,然后再做数据库迁移。

一天的工作,摸索着搞定了数据库,还是挺有成就感,希望帖子对大家有用。
网友评论