Ubuntu 上的 mySQL 从外部连接

Ubuntu 上的 mySQL 从外部连接

现在我有一个装有 mySQL 的 ubuntu 服务器。我可以使用以下命令连接到它

mysql -u root -p (password)

我一直在网上搜索,但找不到有效的解决方案。我想要做的是能够从外部连接到它。例如从我的家用电脑(我有允许我连接到其他服务器的 mysql 文件)

mysql -h domainname.com -u username -p 

但每次我尝试这个时总会遇到同样的错误:

ERROR 2005 (HY000): Unknown MySQL server host 'domainName:3306' (11004)

我想我必须编辑 my.conf 文件,但我对此还不熟悉,而且不是 100%确定。

提前感谢您的帮助。

答案1

出于安全原因,大多数 Linux 发行版默认禁用对 mysql 的 TCP 访问。要启用它,您必须编辑 my.cnf 文件(登录/etc/mysql/my.cnf/etc/my.cnf)并删除该skip-networking选项。为了安全起见,您可以添加:

bind-address=192.168.X.Y  <-- your eth0 address here

您还应该知道,MySQL 用户限制基于源主机。从 localhost 以 root 身份登录与从 以 root 身份登录不同myothercoolserver.mydomain.com。请确保使用允许user@source访问正确表所需的 GRANT 选项。

不建议允许 root 用户从本地主机外部访问。

有关 GRANT 语句的更多信息这里


根据我们在此原始答案的评论中的长期讨论,您可能想要尝试其他一些想法:

  • 在 MySQL 服务器上使用 tcpdump 来确定流量是否到达主机。类似这样的命令tcpdump tcp port 3306应该有效。如果您在尝试连接时看不到流量,则可能是您的外部连接和服务器之间的 iptables 或硬件防火墙阻止了 tcp/3306。
  • 您可以尝试service iptables stop(假设您已将规则保存在由 init 脚本管理的位置)并查看是否允许流量。如果允许,请重新查看 iptables 规则/etc/sysconfig/iptables.conf(或类似规则)或将其发布到另一个问题中,有人应该能够指出是什么阻止了流量。

答案2

最安全的方式是通过 ssh 隧道连接到你的 mysql 框,然后使用该隧道:

$ ssh [email protected] -L 3306:localhost:3306

配置你的 mysql 客户端与 localhost:3306 通信

确保将 mysql 服务器绑定到本地主机(127.0.0.1)

相关内容