mysql:尝试使用远程 IP 连接到 localhost 时连接被拒绝
Posted
技术标签:
【中文标题】mysql:尝试使用远程 IP 连接到 localhost 时连接被拒绝【英文标题】:mysql: connection refused when trying to connect to localhost using remote IP 【发布时间】:2012-10-23 14:03:58 【问题描述】:当我尝试使用远程 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。
【问题讨论】:
您正在运行防火墙吗?防火墙设置是什么? “连接被拒绝”提示网络设置。如果 mysql 拒绝访问,它会这样说:“ERROR 1130 (HY000): Host '1.2.3.4' is not allowed to connect to this MySQL server” @Justinᚅᚔᚈᚄᚒᚔ - 我正在运行 ip-tables,但没有别的。 @Olaf - 对不起,我犯了一个错误:我得到了ERROR 1045 (28000): Access denied
,不是连接被拒绝。
【参考方案1】:
尝试将bind-address = 0.0.0.0
编辑/添加到/etc/mysql/mysql.conf.d/mysqld.cnf
文件的[mysqld]
部分并重新启动MySQL 服务。
【讨论】:
文件甚至不存在。 @FeloVilches 尝试使用find /etc -name mysqld.cnf
来定位您的配置文件。如果不存在,请尝试以root
用户身份在此路径创建它。
谢谢,这已经帮我解决了
这条评论帮助了我3年后,非常感谢。【参考方案2】:
我自己找到了解决问题的方法,但我仍然不太明白为什么它不起作用:
我在主机 % 和 localhost 上授予该用户权限:
# Before
+-----------------+------------+
| Host | User |
+-----------------+------------+
| % | username |
| localhost | username |
+-----------------+------------+
通过这些设置,我得到了上面显示的结果。当我在主机上向该用户授予权限时,它突然起作用了。
# After
+-----------------+------------+
| Host | User |
+-----------------+------------+
| % | username |
| localhost | username |
| <myIpAddress> | username |
+-----------------+------------+
显然 % 确实适用于远程连接,但不适用于本地连接。
【讨论】:
【参考方案3】:此特定问题可能是由主机名解析引起的。
我已经通过从我的 my.cnf
配置文件中删除这个变量来解决这个问题:
跳过名称解析
当然,要么通过放置井号 #
来注释变量,要么在确保备份后将其从 my.cnf
中删除。
【讨论】:
以上是关于mysql:尝试使用远程 IP 连接到 localhost 时连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章