mysql:尝试使用远程IP连接到localhost时连接被拒绝

时间:2012-10-23 14:03:58

标签: mysql

当我尝试使用它的远程ip-address连接到本地mysql数据库时,我得到访问被拒绝。当我尝试从外部计算机连接到同一个数据库时,它没有任何问题。当我使用localhost连接到本地数据库时,它也可以完美地工作。例如,如果数据库服务器具有ip 1.2.3.4,那么我得到以下结果:

# From the db server
mysql -u username -h localhost -p #works perfectly
mysql -u username -h 127.0.0.1 -p #works perfectly
mysql -u username -h 1.2.3.4 -p #Access denied

# From any other machine
mysql -u username -h 1.2.3.4 -p #works perfectly

如何使用远程ip-address允许本地访问我的数据库?数据库服务器的操作系统是Fedora 15,MySQL版本是5.5.23。

3 个答案:

答案 0 :(得分:1)

我自己找到了问题的解决方案,但我仍然不太明白为什么它不起作用:

我在主机%和localhost上授予该用户权限:

# Before
+-----------------+------------+
| Host            | User       |
+-----------------+------------+
| %               | username   |
| localhost       | username   |
+-----------------+------------+

通过这些设置,我得到了上面显示的结果。当我在主机上授予该用户权限时,它突然发挥作用。

# After
+-----------------+------------+
| Host            | User       |
+-----------------+------------+
| %               | username   |
| localhost       | username   |
| <myIpAddress>   | username   |
+-----------------+------------+

显然%可用于远程连接,但不适用于本地连接。

答案 1 :(得分:1)

尝试将=> App Service=> Your site name => Files编辑/添加到bind-address = 0.0.0.0文件的[mysqld]部分,然后重新启动 MySQL Service

答案 2 :(得分:0)

此特定问题可能是由主机名解析引起的。

我已经在我的特定情况下通过从my.cnf配置文件中删除此变量来解决它:

<强>跳过名称解析

要么通过放置井号来标记变量#,要么在确保备份之后将其从my.cnf中删除,当然。