18

当我尝试使用它的远程 IP 地址连接到本地 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 地址对我的数据库进行本地访问?数据库服务器操作系统为Fedora 15,MySQL版本为5.5.23。

4

3 回答 3

10

尝试编辑/添加bind-address = 0.0.0.0到您的文件[mysqld]部分/etc/mysql/mysql.conf.d/mysqld.cnf并重新启动MySQL Service

于 2018-06-29T18:01:12.190 回答
8

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

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

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

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

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

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

于 2012-10-23T15:00:51.090 回答
-4

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

my.cnf我已经通过从我的配置文件中删除这个变量来解决我的特殊情况:

跳过名称解析

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

于 2013-09-05T16:01:35.993 回答