我正在设置一个小型开发本地服务器(是一个运行 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
我发现了这个错误,所以我在谷歌上做了一些研究,发现了一堆链接,所以我选择了其中一些,比如这个并尝试了:
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/
如果是这种情况,那么解决方案可能是:
“找不到任何匹配的行...”表示没有用户='root' 和主机='192.168.3.%' 的行。你进来的是 user='root' 和 host='localhost' (或类似的东西)。