淺談mysql8.0新特性的坑和解決辦法(小結(jié))
一、創(chuàng)建用戶和授權(quán)
在mysql8.0創(chuàng)建用戶和授權(quán)和之前不太一樣了,其實嚴格上來講,也不能說是不一樣,只能說是更嚴格,mysql8.0需要先創(chuàng)建用戶和設置密碼,然后才能授權(quán)。
#先創(chuàng)建一個用戶 create user 'hong'@'%' identified by '123123'; #再進行授權(quán) grant all privileges on *.* to 'hong'@'%' with grant option;
如果還是用原來5.7的那種方式,會報錯誤:
grantallprivilegeson*.*to'sroot'@'%'identifiedby'123123';
ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondsto yourMySQLserverversionfortherightsyntaxtousenear'identifiedby'123123''atline1
二、MySQL8.0 的遠程鏈接
MySQL8.0 安裝完成后出現(xiàn)無法遠程鏈接的現(xiàn)象,這是因為MySQL8.0只支持 localhost 訪問,我們必須設置一下才可以遠程訪問。
具體設置步驟如下:
① 登錄MySQL
執(zhí)行命令為:mysql -u root -p
回車后輸入密碼
② 選擇 mysql 數(shù)據(jù)庫
執(zhí)行命令為:use mysql;
查看mysql 數(shù)據(jù)庫中存儲的用戶信息的 user 表。
③查看mysql 數(shù)據(jù)庫的 user 表中當前 root 用戶的相關(guān)信息
執(zhí)行命令為:select host,user,authentication_string,plugin from user;
執(zhí)行完命令后顯示一個表格, root 用戶的 host默認顯示的 localhost,說明只支持本地訪問,不允許遠程訪問。
④ 更改 host 的默認配置
執(zhí)行命令為:update user set host='%' where user='root';
⑤ 刷新
執(zhí)行命令為:flush privileges;
之前以為這樣就行了,然后呢,在用navicat進行mysql的遠程連接時,出現(xiàn)了彈窗報錯:

出現(xiàn)這個原因是mysql8 之前的版本中加密規(guī)則是mysql_native_password,而在mysql8之后,加密規(guī)則是caching_sha2_password, 解決問題方法有兩種,一種是升級navicat驅(qū)動,一種是把mysql用戶登錄密碼加密規(guī)則還原成mysql_native_password. 我用是第二種方式 :
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密規(guī)則 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';#更新一下用戶的密碼 FLUSH PRIVILEGES; #刷新權(quán)限
問題就解決了。
mysql8.0用戶密碼設置注意事項
在MySQL 8.0.11中,caching_sha2_password是默認的身份驗證插件,而不是以往的mysql_native_password。有關(guān)此更改對服務器操作的影響以及服務器與客戶端和連接器的兼容性的信息,請參閱caching_sha2_password作為首選的身份驗證插件。(翻譯自https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html)
今天在新服務上配置安裝mysql8.0.11時,像往常一樣設置mysql密碼,設置成功后在shell下輸入mysql -u root -p,再輸入密碼能正常進入,但在phpmyadmin或直接用http://php.net/manual/zh/mysqli.real-connect.php上的連接,均提示無法連接,具體報錯信息為
mysqli_real_connect(): The server requested authentication method unknown to the client [sha256_password]
搜了一圈,找到官方文檔才發(fā)現(xiàn)從8.0.11版本起,不再像mysql5.7及以前版本那樣,設置用戶密碼時默認的驗證方式為caching_sha2_password,如果發(fā)現(xiàn)升級mysql8.0.11后原有的程序不能連接mysql,可迅速在mysql command line client客戶端用下面的命令設置成mysql5.7及以前版本的密碼驗證方式,同時MYSQL8.0.11下修改密碼的方式與原先也不大一樣,原先的部分修改密碼的命令在mysql8.0.11下不能使用。
> use mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼'; > FLUSH PRIVILEGES;
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持本站。
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信