mysql5.5 升级至5.7
1.下载mysql5.7.32
解压tar xvf mysql.tar.gz mysql/
2. 进入旧的mysql的bin目录下导出mysql的数据./mysql -uroot -pxxxx -h127.0.0.1 -P3306
3. 进入新的mysql根目录下创建存放数据的data目录mkdir data
4. 对于刚解压的新数据库,首先执行初始化命令cd bin
./mysql_install_db --basedir=../ --datadir=../data
PS: 以上升级是在Cent OS上的,但是在中标麒麟我升级的时候,发现不认识上面的语句,需要替换成下面这个初始化语句./mysqld --defaults-file=../my.cnf --basedir=../ --datadir=../data --user=root --initialize
5. 设置跳过密码登录
在my.cnf 中的[mysqld]中添加skip-grant-tables
my.cnf 为数据库的配置文件
6. 启动服务./mysqld --defaults-file=../my.cnf --basedir=../ --datadir=../data --user=root
7. 设置密码
在新的命令行窗口登录mysql./mysql -uroot
use mysql;
update mysql.user set authentication_string=password('xxxx') where user='root';
8. 停止服务
注释掉配置文件中的skip-grant-tables
9. 启动服务
···
./mysqld --defaults-file=../my.cnf --basedir=../ --datadir=../data --user=root
···
10. 新命令行登录./mysql -uroot -pxxxx
use mysql;
这个时候:不管运行任何命令,总是提示这个 You must reset your password using ALTER USER statement before executing this statement.
这时执行下面的语句SET PASSWORD = PASSWORD('xxxx');
11. 设置其他ip可以连接mysqluse mysql;
grant all privileges on *.* to "root"@"%" identified by "xxxx";
12. 导入历史数据cd bin
./mysql -uroot -pxxxx -h127.0.0.1 -P3306
12. 执行更新cd bin
./mysql_upgrade
13. 升级后可能出现查询语句出现报错的情况,可执行下面的语句set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';