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 </home/mysql5.5/bin/all.sql

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可以连接mysql

use mysql;
grant all privileges on *.* to "root"@"%" identified by "xxxx";

12. 导入历史数据

cd bin
./mysql -uroot -pxxxx -h127.0.0.1 -P3306 </home/mysql5.5/bin/all.sql

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';
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/dedong/p/14310879.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!