MySQL8.x使用GRANT為用戶賦權時報錯的解決
MySQL8.x使用GRANT為用戶賦權時報錯
問題描述
在安裝 MySQL 8.x 的過程中,往往需要為 MySQL 中的一些賬戶賦予遠程訪問的權限。
在 MySQL 5.x 的版本中的操作方式
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
在 MySQL 8.x 中版本中按照以上操作
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456' WITH GRANT OPTION' at line 1
原因分析
通過官網文檔的指引可以知道,新版本的 MySQL 8.x 版本已經將創(chuàng)建賬戶和賦權的方式分開導致以上的命令在 MySQL 8.x 上執(zhí)行報語法錯誤。
解決方案
最終解決方案
# 創(chuàng)建賬戶 CREATE USER '用戶名'@'訪問主機' IDENTIFIED BY '密碼'; # 為創(chuàng)建的賬戶賦權 GRANT '權限列表' ON '數據庫' TO '用戶名'@'訪問主機'; GRANT ALL ON *.* TO 'root'@'%'; # 刷新 FLUSH PRIVILEGES;
mysql版本:'for the right syntax to use near 'identified by 'password' with grant option'
查詢mysql具體版本
SELECT @@VERSION
問題分析:
mysql版本8.0.13,在給新用戶授權時,發(fā)生了變化:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'password' with grant option' at line 5, Time: 0.000000s
出錯的語句:
grant all privileges on *.* to 'root'@'172.16.10.203' identified by ?'password' with grant option
修正后的語句:分開三次執(zhí)行
#創(chuàng)建賬戶 create user 'root'@'172.16.10.203' identified by ?'password' #賦予權限,with grant option這個選項表示該用戶可以將自己擁有的權限授權給別人 grant all privileges on *.* to 'root'@'172.16.10.203' with grant option #改密碼&授權超用戶,flush privileges 命令本質上的作用是將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存里 flush privileges;
原因分析:
此版的的mysql版本把將創(chuàng)建賬戶和賦予權限分開了。
創(chuàng)建賬戶::create user ‘用戶名'@‘訪問主機' identified by ‘密碼'; 賦予權限:grant 權限列表 on 數據庫 to ‘用戶名'@‘訪問主機' ; with grant option這個選項表示該用戶可以將自己擁有的權限授權給別人
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL登錄時出現 Access denied for user ‘
今天打開mysql的時候突然提示:Access denied for user 'root'@'localhost' (using password: YES) 在網上搜索了很多文章,本文就來做一下總結,介紹了幾種場景的解決方法,感興趣的可以了解一下2024-03-03教你如何在windows與linux系統(tǒng)中設置MySQL數據庫名、表名大小寫敏感
數據庫和表名在 Windows 中是大小寫不敏感的,而在大多數類型的 Unix/Linux 系統(tǒng)中是大小寫敏感的。那么我們如何來處理這個問題呢,經過一番查詢,發(fā)現lower_case_table_names這個參數可以實現大小寫敏感,下面我們來詳細說明2014-08-08UCenter info: MySQL Query Error SQL:SELECT value FROM [Table
大家先看下數據庫權限問題,然后再進行如下操作。2011-09-09關于MySQL繞過授予information_schema中對象時報ERROR 1044(4200)錯誤
這篇文章主要介紹了關于MySQL繞過授予information_schema中對象時報ERROR 1044(4200)錯誤,本文給大家分享解決方法,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10Linux下MYSQL 5.7 找回root密碼的問題(親測可用)
這篇文章主要介紹了Linux下MYSQL 5.7 找回root密碼的問題(親測可用),通過 --skip-grant-tables 找回,新增完成后,:wq 保存退出,重啟mysqld服務,具體內容詳情跟隨小編一起看看吧2021-10-10