我正在尝试使用 ip 连接到 mysql,但是出现了以下错误:
错误 2003 (HY000):无法连接到‘xxx.xxx.xxx.xxx’上的 MySQL 服务器 (111)
但我可以使用localhost
而不是 IP 来连接。
这不起作用:
mysql -u ryan -h xxx.xxx.xxx.xxx -p
但这确实有效:
mysql -u ryan -h localhost -p
我今天早些时候能够连接,然后我安装了 iRedMail,然后我卸载了 iRedMail,并且卸载过程对 mysql 做了一些事情,所以我使用以下命令从头开始重新安装了 mysql:
apt-get purge mysql-server mysql-client mysql-common mysql-client-5.5 mysql-server-5.5
然后:
apt-get install mysql-server
之后我创建了我的用户,现在我无法使用 IP 地址与新用户或 root 用户进行连接,但我可以使用 进行连接localhost
。
怎么了?
答案1
您的配置示例中的 MySQL 本地绑定到地址 localhost(或明确绑定到 IP 地址 127.0.0.1)。如果您想通过服务器的公共 IP 地址进行连接,访问将被拒绝。
netstat -ln
您可以通过使用命令以新样式执行或来查看这一点ss
。
删除并重新安装替换了 MySQL 的一些配置文件。apt-get purge
删除配置文件,包括依赖包的配置文件。通常,MySQL 仅在 Ubuntu 上的新安装上绑定到本地主机,因此这看起来像是您的 MySQL 配置文件已被默认配置文件替换。对于其他发行版,我无法谈论默认配置。
如果您想在本地计算机上使用 MySQL 管理工具(即 HeidiSQL),则不应将bind-address
MySQL 配置中的 IP 地址更改为公共 IP 地址。最好使用 SSH 隧道。
使用标准 Linux 命令,只要知道本地端口在哪里ssh
,就可以轻松实现这一点。您也可以使用 MySQL 端口 3306 作为本地端口,但如果您本地安装了 MySQL,则可能行不通。在 Windows 上,也可以使用 putty 来实现这一点,只需在 Google 上搜索“putty mysql tunnel”即可ssh -L 9999:localhost:3306 <servername>
9999
这教程应该可以做到,但是由于我是纯 Linux 用户,所以我无法验证它。