【mysql升級步驟】windows mysql版本升級 ,mysql 5.6 升級到5.7.27


   最近博主由於工作原因需要把之前安裝好的的mysql 5.6.44版本卸載,然后安裝mysql 5.7.*版本。

前提:為什么要升級到5.7版本?

因為博主在5.6版本上執行腳本時候報出異常:to your MySQL server version for the right syntax to use near 'json DEFAULT...

大概意思是5.6版本不支持原生json 數據的插入 

度娘說:MySQL5.7版本終於支持了原生的JSON格式,即將關系型數據庫和文檔型NO_SQL數據庫集於一身。

鏈接地址:http://www.bubuko.com/infodetail-1777950.html

所以不得已要升級到5.7,期間走了很多彎路,遇到很多坑,現總結如下,希望能幫助到你:

 

安裝過程十分艱辛,遇到了好幾個錯誤總結如下:

1:Can't connect to MySQL server on 'localhost' (10061)

2:-initialize specified but the data directory has files in it. Aborting

3:TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults

4:Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

 解決方案,無非就是需要注意幾點:

1:某些命令一定要在管理員權限下執行,就是用管理員模式開啟命令提示符

2:某些命令一定要在mysql/bin  目錄下執行,文章中有標出

3:mysql 5.7默認是無data文件夾的,net start mysql  #啟動mysql  命令一定要保證有data文件夾

4:mysql 5.7.27版本 my-default.ini  不能寫port=3306 不然會報錯

5:有時候錯誤需要在my-default.ini 文件中加入explicit_defaults_for_timestamp=true

6:查看mysql啟動錯誤命令     mysqld --console

 7:如果遇到中途的mysql配置路徑錯誤導致服務中存在mysql

如:mysqld install MySQL --defaults-file="D:\mysql5.7.27\mysql-5.7.27-winx64\my-default.ini" #安裝新版本mysql    這里邊的ini路徑輸入錯誤后 回車,系統服務中會存在mysql,但是啟動不了),

  執行sc delete mysql 刪除不掉服務的情況,需要打開任務管理器中找到mysql進程關閉之后再  執行sc delete mysql就可以成功刪除mysql 服務了

8:如果在安裝過程中某一步錯誤,導致需要重新執行安裝mysql命令,切記需要保證(D:\mysql5.7.27\mysql-5.7.27-winx64\data\)data 路徑下為空,如果有文件要刪除后執行安裝命令。

 

第一步:官網下載mysql5.7.27 zip文件,官方地址:https://dev.mysql.com/downloads/mysql/

有32位和64位兩個版本,博主64位點擊下載

 

第二步:下載好之后解壓

第三步:文件夾里面默認沒有my-default.ini文件,需要我們新建一個basedir和datadir需要改成你安裝的路徑地址,以下是我的my-default.ini配置

[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8 
[mysqld]
# 設置mysql的安裝目錄
basedir = D:\Mysql5.27\mysql-5.7.27-winx64
# 設置mysql數據庫的數據的存放目錄
datadir = D:\Mysql5.27\mysql-5.7.27-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 如果需要的存儲引擎被禁用或未編譯,可以防止自動替換存儲引擎
# 為事務存儲引擎啟用嚴格模式,也可能為非事務存儲引擎啟用嚴格模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
# 開啟查詢緩存
explicit_defaults_for_timestamp=true

  

MySQL 5.7版本中sql_mode更加嚴格。解釋下各個mode的含義:

ONLY_FULL_GROUP_BY             不要讓GROUP BY部分中的查詢指向未選擇的列  
STRICT_TRANS_TABLES                為事務存儲引擎啟用嚴格模式,也可能為非事務存儲引擎啟用嚴格模式
NO_ZERO_IN_DATE                      在嚴格模式,不接受月或日部分為0的日期
NO_ZERO_DATE                          在嚴格模式,不將 '0000-00-00'做為合法日期
ERROR_FOR_DIVISION_BY_ZERO   在嚴格模式,在INSERT或UPDATE過程中,如果被零除(或MOD(X,0)),則產生錯誤  
NO_AUTO_CREATE_USER             防止GRANT自動創建新用戶,除非還指定了密碼
NO_ENGINE_SUBSTITUTION          如果需要的存儲引擎被禁用或未編譯,可以防止自動替換存儲引擎

注意:在一個主從環境下,為保證數據的一致性,一定要設置主從的sql_mode一樣,在數據遷移的時候也要保證sql_mode的一致,不然復制和遷移遇到上面的限制均會失敗,所以盡可能使用標准SQL語法。

 

第四步:配置環境變量

 

第五步:停止服務里邊mysql

cmd->services.msc   #打開服務

找到mysql停止

第六步:查看mysql版本是否正確

cmd->mysql --help

第七步:卸載5.6版本,這步很關鍵,博主找了很多資料,終於解決  參考鏈接:https://blog.csdn.net/qq_39701269/article/details/77935490

cmd->sc query mysql        #管理員身份運行,輸入sc query mysql,查看一下名為mysql的服務

sc delete mysql #刪除該mysql

 

第八步:安裝mysql 5.7.27 參考鏈接:https://www.cnblogs.com/super-wking/p/10551936.html

1:安裝Mysql命令如下:

mysqld install MySQL --defaults-file="D:\mysql5.7.27\mysql-5.7.27-winx64\my-default.ini"  #安裝新版本mysql

  

2:獲取mysql臨時密碼如下

注意:一定要進入到mysql安裝bin目錄下執行以下命令!!!!

mysqld --initialize --user=mysql --console  #初始化 獲取root隨機密碼 “root@localhost”后的隨機字符串就是root的臨時密碼。

  

 

注意:如果出現如下情況,說明CMD沒有以管理員身份打開,以管理員身份打開后執行即可

3:啟動mysql

注意:一定要進入到mysql安裝bin目錄下執行以下命令!!!!

net start mysql #啟動mysql

  

第九步:修改mysql密碼

mysql -u root -p #進入mysql輸入之前的臨時密碼

  

 

第十步:設置root新密碼

set password = password('root');

 設置成功后exit 退出,重新執行以下命令,密碼是你自己設置的,我設置的密碼是root

mysql -u root -p

  

至此mysql升級完畢!!!

 

 

添加新用戶權限:

grant select,insert,update,delete on book.* to test@localhost Identified by "abc";

參考鏈接:https://www.cnblogs.com/wanghuaijun/p/5802209.html

給某個用戶某個數據庫權限

GRANT  select,insert,delete,update  ON  testdb.*  TO 'test'@'%';

參考鏈接:https://www.cnblogs.com/tianrunzhi/p/8316141.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM