Mysql

當 MariaDB 中沒有密碼時,無法授予“root”權限

  • October 17, 2016

我正在設置一個小型開發本地伺服器(是一個執行 CentOS 7 的 VM),因此在執行命令後我沒有向 MySQL 添加任何密碼:mysql_secure_installation. 現在我需要通過 MySQL Administrator 從主機連接,但我不能,因為root不允許使用者從主機 IP 地址連接,所以我將通過授予root所有權限和主機來更改它。

這是我到目前為止所做的:

$ mysql -uroot -p
Enter password:  [here is just ENTER because root hasn't a password]
Server version: 10.1.18-MariaDB MariaDB Server

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.3.%' WITH GRANT OPTION;
ERROR 1133 (28000): Can't find any matching row in the user table

我發現了這個錯誤,所以我在Google上做了一些研究,發現了一堆連結,所以我選擇了其中一些,比如這個並嘗試了:

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.3.%' WITH GRANT OPTION;
ERROR 1133 (28000): Can't find any matching row in the user table

但仍然無法正常工作,是一種限制,我不知道嗎?是my.cnf文件上的配置嗎?SQL查詢有問題嗎?有什麼幫助嗎?

“如果設置了 NO_AUTO_CREATE_USER SQL_MODE,則只能使用 CREATE USER 語句創建使用者。這種情況下,當指定的使用者不存在時,GRANT 會產生錯誤。” – https://mariadb.com/kb/en/mariadb/grant/

如果是這種情況,那麼解決方案可能是:

CREATE USER 'root'@'192.168.3.%';
GRANT ... (as you tried)

“找不到任何匹配的行…”表示沒有使用者=‘root’ 和主機=‘192.168.3.%’ 的行。你進來的是 user=‘root’ 和 host=‘localhost’ (或類似的東西)。

引用自:https://dba.stackexchange.com/questions/151826