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