天天看點

mysql5.5更新報錯_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

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

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