mysql5.5 升級至5.7

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';
Tags: