windows 下升級安裝mysql8,與舊版本5.6共存


應開發需求,自mysql5.7開始引入json列類型和相關函數。為了提高數據讀寫的訪問效率因此把數據庫從mysql 5.6版升級到最新發行版 mysql 8.0.11 。

特此記錄下多版本升級共存的過程!

 

升級前准備工作:

1、快捷win+R 運行【sysdm.cpl】打開系統屬性,刪除系統環境變量 "path" 中關於之前舊版本(我這是mysql-5.6.24 )的配置信息;

2、快捷win+R 運行 【services.msc】 打開【服務】,選擇關閉舊版本的mysql 服務。

 

安裝准備工作:

一、下載MySQL

1、進入官網 https://dev.mysql.com  選擇【DOWNLOADS】=>選擇開源社區服務【MySQL Community Server】頁面,下拉選擇操作系統下載。

或者直接進入 https://dev.mysql.com/downloads/file/?id=476233 頁面選擇 No thanks, just start my download 下載 mysql-8.0.11-winx64.zip文件到本地。

 

2、把下載下來的壓縮包解壓到 本地集成開發的目錄中,如 H:\phpapache\mysql-8.0.11-winx64 。

 

二、編譯安裝Mysql

1、把新版的mysql 加入到環境變量中。

 

2、編輯mysql的配置文件 my.ini,若解壓的壓縮包不存在該文件就自己創建一個。

[mysqld]
# 設置3307端口,為了與舊版本的區分不沖突
port=3307
# 設置mysql的安裝目錄
# 切記此處一定要用雙斜杠\\,單斜杠我這里會出錯,不過看別人的教程,有的是單斜杠。自己嘗試吧
basedir=H:\\phpapache\\mysql-8.0.11-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=H:\phpapache\mysql-8.0.11-winx64\\home\\data
# 允許最大連接數
max_connections=200
# 允許連接失敗的次數。這是為了防止有人從該主機試圖攻擊數據庫系統
max_connect_errors=10
# 服務端使用的字符集默認為UTF8
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
#MySQL8.0.4之前,MySQL的密碼認證插件是“mysql_native_password”,而現在使用的是“caching_sha2_password”。 # 但因為當前有很多數據庫工具和鏈接包都不支持“caching_sha2_password”,為了方便,我暫時改回了“mysql_native_password”認證插件。
#默認使用“mysql_native_password”插件認證 default_authentication_plugin=mysql_native_password [mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [client] # 設置mysql客戶端連接服務端時默認使用的端口 port=3307 default-character-set=utf8

 #用戶密碼的生命周期,設置為0 (不過期),或按公司的維護周期進行設置
 default_password_lifetime=0

注意:datadir 的文件目錄可自行創建也可以在初始化的時候自動生成。

 

3、安裝MySQL

3.1、以管理員的身份運行 【CMD】 ,打開DOS 命令窗口,否則會因權限問題導致安裝失敗。

3.2、初始化MySQL

  

DOS下執行命令
H:
cd H:\phpapache\mysql-8.0.11-winx64
跳轉到MySQL安裝目錄

  

在MySQL安裝目錄的 bin 目錄下執行命令:

  mysqld --initialize --console


執行完成會返回如圖

 

注意其中: A temporary password ....這段話,是初始化后生成的臨時密碼,需要幾下來后面登錄需要用到,如當前的是 【fbk,zURH81KC】,注意密碼前面的空格不要

 

3.3、 安裝mysql 服務

在MySQL安裝目錄的 bin 目錄下執行命令:

mysqld --install [服務名]

后面的服務名可以不寫,默認的名字為 mysql。當然,如果你的電腦上需要安裝多個MySQL服務,就可以用不同的名字區分了,比如我這是 mysql 和 mysql8。

安裝完成之后,就可以通過命令net start mysql啟動MySQL的服務了。通過命令net stop mysql停止服務。通過命令 sc delete 服務名 卸載服務

 

4、更改密碼

在MySQL安裝目錄的 bin 目錄下執行命令:

mysql -u root -p
這時候會提示輸入密碼,輸入上面第3.2步驟得到的初始密碼,填入即可登錄成功,進入MySQL命令模式。

 

在mysql 8.04 之前可以通過執行:

SET PASSWORD=PASSWORD('[修改的密碼]'); 來修改密碼

但是MySQL8.0.4開始,這樣是不行的。因為之前,MySQL的密碼認證插件是“mysql_native_password”,mysql 8.04 之后使用的是“caching_sha2_password”。

參考:https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

 

因為當前有很多數據庫工具和鏈接包都不支持“caching_sha2_password”,為了方便,暫時改回了“mysql_native_password”認證插件。

修改用戶密碼,在MySQL中執行命令:

  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';

 

如果想默認使用“mysql_native_password”插件認證,可以在配置文件中配置default_authentication_plugin項。

  default_authentication_plugin=mysql_native_password

 

 

到此,安裝部署就完成了。

 

可以用 命令查看一下默認安裝的數據庫:

看到默認初始化了mysql數據庫,其中user表里面存儲MySQL用戶信息。

有4個初始用戶,對其中3個對應了不同的初始系統庫

 

管理員root的host是localhost,代表僅限localhost登錄訪問。如果要允許開放其他ip登錄,則需要添加新的host。如果要允許遠程ip訪問,可以直接修改成“%”,但這樣會導致本地無法連接。

因此最好新建允許遠程連接的管理用戶。

創建用戶:

  CREATE USER 'zw'@'%' IDENTIFIED WITH mysql_native_password BY 'zw125408';

#(需要注意:mysql8.04后加密方式修改了)
#檢查用戶

  select user, host, plugin, authentication_string from user\G;

#查詢語句 \G 結尾表示格式化輸出

 

 

授於管理權限

#授權所有權限 
  GRANT ALL PRIVILEGES ON *.* TO 'zw'@'%';
#授權基本的查詢修改權限,按需求設置
  GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO 'baseroot'@'%';

 

  grant all privileges on *.* to '用戶'@'%' identified by '密碼' with grant option;

  • all privileges:表示將所有權限授予給用戶。也可指定具體的權限,如:SELECT、CREATE、DROP等。
  • on:表示這些權限對哪些數據庫和表生效,格式:數據庫名.表名,這里寫“*.*”表示所有數據庫,所有表。如果我要指定將權限應用到test庫的user表中,可以這么寫:test.user
  • to:將權限授予哪個用戶。格式:”用戶名”@”登錄IP或域名”。%表示沒有限制,在任何主機都可以登錄。比如:”zw”@”192.168.0.%”,表示zw這個用戶只能在192.168.0IP段登錄
  • identified by:指定用戶的登錄密碼
  • with grant option:表示允許用戶將自己的權限授權給其它用戶

  可以使用GRANT給用戶添加權限,權限會自動疊加,不會覆蓋之前授予的權限,比如你先給用戶添加一個SELECT權限,后來又給用戶添加了一個INSERT權限,那么該用戶就同時擁有了SELECT和INSERT權限。

  用戶詳情的權限列表請參考MySQL官網說明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html 

 

 #刷新權限:

  對用戶做了權限變更之后,一定記得重新加載一下權限,將權限信息從內存中寫入數據庫。

  mysql> flush privileges;

 

查看用戶權限
  show grants for 'zw'@'%';

 

 

參考資料

mysql8.0.11安裝 https://www.cnblogs.com/laumians-notes/p/9069498.html

多版本共存 https://blog.csdn.net/lizhikang2009/article/details/51123812

權限參考 https://blog.csdn.net/anzhen0429/article/details/78296814 

 


免責聲明!

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



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