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