應開發需求,自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”。
因為當前有很多數據庫工具和鏈接包都不支持“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