MySQL无法使用IP地址登录如何解决mysql不能用ip登录

嘿,MySQL 有时候真是个烦人的小妖精。
上周一位客户问我为什么无法通过IP连接MySQL,这让他头晕。
我帮他解决了。
其实问题只涉及几点。
你可以写下来,下次见到他时跟进。

首先,你需要看看MySQL本身的特性。

您需要修改其配置文件。
这个东西默认识别IP地址,所以它只允许本地计算机连接,根本不识别其他IP地址。
找一个好用的文本编辑器,比如nano,使用sudo nano /etc/mysql/my.cnf(具体路径根据你的系统而定,有些是mysql.conf.d/mysqld.cnf)。

输入后,查找bind-address=1 2 7 .0.0.1 这一行。
你看到这个了吗?这就是他拒绝外出的原因。
只需将其替换为您要连接的 IP 地址,例如 bind-address=1 9 2 .1 6 8 .1 .2 0。
保存并不要忘记重新启动MySQL服务。
命令是 sudo systemctl restart mysql 或 sudo service mysql restart,具体取决于您使用的系统。

修改配置文件后,工作还没有完成。

你想想,既然门半开着,万一外面有坏人想进来怎么办?此时防火墙向前移动。
检查您的防火墙设置,看看您刚刚更改的 IP 地址是否被阻止。

例如,在 Ubuntu 上,您可以使用 sudo ufw allowed 3 3 06 /tcp 来释放默认的 MySQL 端口 3 3 06 请记住,防火墙命令因系统而异,因此您应该自己检查文档。

如果您已完成这两项操作但仍然无法连接,您可能需要上网。

使用ping命令查看是否可以ping通MySQL服务器的IP地址。
例如,ping 1 9 2 .1 6 8 .1 .2 0。
如果它甚至没有响应您,则可能是因为网络已关闭或路由器出现故障。
此时,你需要像侦探一样,一一检查网络设备,看看是哪一部分出现了问题。

最后还有一点很容易被忽视。

即数据库和客户端使用的字符集必须一致。
如果客户端是gbk,数据库是utf8 ,连接时可能会出现数据被截断的情况。
您需要在登录时指定,例如 mysql -h 1 9 2 .1 6 8 .1 .2 0 -u root -p --default-character-set=utf8
无论是什么,你都能理解。
这是显而易见的。
有时它会卡在一些小地方。
如果您不确定,请再问我。
我一直在想这个问题

怎么设置才能让外网ip可以访问mysql数据库

记得上次帮朋友调试网站时,他抱怨无法连接后端数据库。
我敲击键盘,打开他的服务器控制台。
那是一个夏末的傍晚,空调嗡嗡作响,屏幕上的光映照着他的汗珠。
我输入了几个命令,屏幕上出现了一堆字符,最后停在了 netstat -tulnp | 行处。
grepmysql。
结果什么都没有!我的心猛地一跳,赶紧再次输入 vi /etc/mysql/my.cnf。

在闪烁的光标下方,我在[mysqld]下添加了一行bind-address=0.0.0.0。
保存退出,然后重新启动mysqld服务。
在命令行等待几秒后,熟悉的启动日志再次出现。
我立即尝试了 netstat -tulnp |再次grep mysql,哦!一长串 IP 地址,后跟 0.0.0.0:3 3 06 他的网站后端突然能够连接到数据库了。

等等,还有一件事。
我告诉他这件事后,他又问我,如果有人恶意攻击我怎么办?我说,所以我们需要添加防火墙规则。
他挠了挠头,说:“我还得再考虑一下。
”此刻,窗外的天色已经暗了下来,服务器的灯还亮着。
我突然想到,其实很多时候安全就是这行代码。
改变之后我们才知道它是多么重要,又是多么简单。