我知道这看起来像是一个重复的问题,但我尝试了几件事,但仍然没有用。
我想从另一台机器10.9.244.43
连接到机器10.102.5.83
上的mysql。但是当我尝试mysql -h10.9.244.43 -uroot -p
时,我收到以下错误:
ERROR 2003 (HY000): Can't connect to MySQL server on '10.9.244.43' (111)
我在/etc/mysql/my.cnf中检查并评论了bind-address。但它仍然无法连接。
当我在10.9.244.43上尝试以下命令时:
SELECT USER(),CURRENT_USER();
我得到了:
+----------------+----------------+
| USER() | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
当我尝试时:
SHOW GRANTS;
我得到了以下内容:
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*E7C06D40357612837106427CD0F2B2058' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
我该如何解决这个问题?
答案 0 :(得分:1)
如果你想从另一台机器(根本想法)以root身份连接,你想要将权限授予'root'@'%'而不是'root'@'localhost'。
'root'@'localhost'只允许root用户从本地机器连接。 'root'@'%'允许任何主机上的root连接,请注意这些是不同的用户,只是因为在两台服务器上调用root帐户并不会使它们成为同一个帐户,这就是您需要允许从任何计算机访问的原因。
如果您总是从特定机器连接,您也可以将权限分配给'root'@'10.102.5.83',但这有时会很棘手,具体取决于主机名的定义方式和公共IP地址等...
要测试的其他内容是防火墙和绑定地址。
如果您使用'root'@'%'打开世界访问权限,则应在设置完成后限制防火墙访问。
最后,请记住这些是两个独立的权限,因此您实际上可以分配'root'@'%'不同的权限,而不是'root'@'localhost',例如删除删除表,更改表的能力,等...