mysql8.0創建用戶授予權限報錯解決方法


mysql8.0創建用戶授予權限報錯解決方法

問題一:8.0版本用之前的創建用戶和賦權一條語句的方式會報錯

會報錯的寫法:之前版本是沒問題的,但是8.0mysql會報語法錯誤

-- 創建用戶、設置密碼並且賦權
grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
-- 格式:grant 權限 on 數據庫教程名.表名 to 用戶@登錄主機 identified by "用戶密碼";
		 -- @ 后面是訪問mysql的客戶端ip地址(或是 主機名) % 代表任意的客戶端,如果填寫 localhost 為
		 -- 本地訪問(那此用戶就不能遠程訪問該mysql數據庫了)

mysql8.0中必須分開,先創建用戶、再給用戶賦值

-- 創建用戶 (如果執行這條語句報錯了:請參考問題二)
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
-- 給用戶分配權限
grant all privileges on *.* to 'myuser'@'%' ;
-- 單獨授予某種權限的寫法;具體再詳細的操作請參考其他文章
GRANT SELECT ON oilsystem.input TO 'myuser'@'%';
-- 刷新權限,使操作生效
FLUSH PRIVILEGES; 

問題二:Mysql遠程連接報錯:authentication plugin caching_sha2

​ Mysql遠程連接報錯:authentication plugin caching_sha2

​ 原因:mysql 8.0 默認使用 caching_sha2_password 身份驗證機制 之前版本的mysql使用的是: mysql_native_password

​ 注:從之前版本升級 8.0 版本的不會改變現有用戶的身份驗證方法,仍然采用mysql_native_password的驗證方式;但新用戶會默認使用新的 caching_sha2_password 。

​ MySQL8默認的認證插件是caching_sha2_password,很多客戶端都不支持。故而連接報錯;

​ 解決方案:

​ 方案一:

-- 修改加密規則 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 
-- 更新一下用戶的密碼 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';   
-- 刷新權限 
FLUSH PRIVILEGES;  

​ 方案二:修改my.cnf配置文件

​ 將默認的認證插件修改為mysql_native_password

​ 在my.cnf配置文件中增加配置:

default_authentication_plugin=mysql_native_password


免責聲明!

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



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