Mysql
當 MariaDB 中沒有密碼時,無法授予“root”權限
我正在設置一個小型開發本地伺服器(是一個執行 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’ (或類似的東西)。