我在 PhpMyAdmin 中发出了命令DROP USER 'root'@'localhost'; GRANT ALL PRIVILEGES ON . TO 'root'@'%';
,执行之后立即被强制退出 PhpMyAdmin,出现错误#1130 - Host 'localhost' is not allowed to connect to this MySQL server
,如何解决我的问题?
答案1
打开一个终端。
$ mysql -u root --host=127.0.0.1 -p<yourpassword>
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 521
Server version: 5.1.38yes-debug yes
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY "<yourpassword>";
Query OK, 0 rows affected (0.22 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost;
Query OK, 0 rows affected (0.08 sec)
这应该可以解决你的问题;)。
答案2
mysql 对 % 和 localhost 的处理方式不同。您'root'@'localhost'
也需要授予所有权限。
答案3
在您的服务器上从命令行运行 mysql:
mysql -u root -p -h localhost -P 3306
然后在 mysql shell 中运行此命令:
>use mysql
>GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'pass';
>FLUSH PRIVILEGES;
祝你玩得愉快。
答案4
将 dlo 的回答与 Darren Chamberlain 的回答结合起来。原因是 'localhost' 在 MySQL 中具有特殊含义,它表示使用本地 unix 套接字 (mysql.sock) 而不是 TCP 套接字。这就是为什么指定 127.0.0.1 作为主机会让您进入,以便您可以修复这种情况;它表示 MySQL 客户端使用 TCP 套接字。