如何从远程计算机(不是本地主机)访问 MySQL?

Posted

技术标签:

【中文标题】如何从远程计算机(不是本地主机)访问 MySQL?【英文标题】:How to access MySQL from a remote computer (not localhost)? 【发布时间】:2012-01-17 05:56:12 【问题描述】:

我将我的开发环境设置为 vmware 中的 Ubuntu 服务器(安装了 LAMP)。 vmware 正在我的本地 Windows 7 机器上运行。当我尝试通过 HeidiSQL 程序访问我的 mysql 服务器时,连接失败。我得到一个:

Server Error 2003, can't connect to mysql server on <IP ADRESS HERE>

但是我可以通过 phpMyAdmin 访问数据库服务器。 MySQL 正在运行,我的连接凭据和端口都正确。

我读到您应该在 my.cnf 文件中输入您尝试连接的计算机的 IP 作为“绑定地址”。我做到了。我尝试了内部网络IP以及在线IP。仍然没有运气,同样的消息。

由于这不是一个生产环境,我希望允许任何人访问该服务器,而不是受 IP 限制。特别是因为我的 ISP 分配了动态 IPS。所以我必须一直改变它,假设它甚至可以工作。

那么有人知道我如何从远程计算机连接到我的 MySQL 服务器吗?

附:我认为这是开发人员必须处理的事情,这就是为什么我在这里发布它而不是超级用户。如果必须迁移,请将其发送给服务器故障而不是超级用户。

【问题讨论】:

在此处检查您的连接字符串connectionstrings.com/mysql。 【参考方案1】:

好的,请注意,这会让世界和他的狗访问您的 mysql 服务器。

GRANT ALL ON *.* to '%'@'%' WITH GRANT OPTION;

但是假设您在 192.168.1.2/16 的家庭网络上,那么您至少可以像这样限制它。

GRANT ALL ON *.* to '%'@'192.168.%' WITH GRANT OPTION;

另一种选择是您有用户名和密码,但想从任何地方连接

GRANT ALL ON *.* to 'mysecretuser'@'%' IDENTIFIED BY 'mysecretpassword' WITH GRANT OPTION;

【讨论】:

对不起这里的菜鸟,我在哪里输入这个,在 mysql 监视器中?还是添加到cnf文件中? 这将通过客户端连接到 mysql 数据库。 所以我尝试在 mysql 命令行中输入第一个,它说 1 行受到影响。然后我重新启动服务器并尝试从远程计算机再次连接,但仍然是同样的错误。 你在mysql盒子上启用了防火墙吗?【参考方案2】:

对于 Heidi SQL,我能够按照本文中的说明使用它:

http://mysql-tools.com/en/articles/http-tunnel/73-heidisql-a-http-tunnel.html

它使用一个名为 HTTP Tunnel 的程序。它慢了很多,但至少它有效。如果你使用 Navicat,它带有一个 PHP 文件,你可以上传到你的服务器,它会通过它连接。

【讨论】:

【参考方案3】:

首先使用cmd检查分配给vmware的ip

ipconfig/all

假设分配给 vmware 的 ip 是 192.168.11.1 现在在 vmware 的 ubuntu 中检查 ipadress

ifconfig

假设 ubuntu 的 ip 地址是 192.168.11.137 现在打开mysql配置

sudo nano /etc/mysql/my.cnf 修改绑定地址为ubuntu ip地址

bind-address = 192.168.11.137

重启mysql 现在连接到 mysql

mysql -u root -p

并创建一个具有所有权限和 vmware 主机 IP 的用户,即 192.168.11.1

GRANT ALL ON db.* TO user@'192.168.11.1' IDENTIFIED BY 'PASSWORD';

现在尝试从 Windows 连接。 也打开mysql的端口

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

重启mysql并尝试连接ubuntu主机ip地址192.168.11.137

【讨论】:

以上是关于如何从远程计算机(不是本地主机)访问 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章

如何打开MySQL中root账户的远程登录

如何打开MySQL中root账户的远程登录

如何打开MySQL中root账户的远程登录

mysql 从远程数据库转储到本地主机输出文件

将 mongodb 数据库从本地主机迁移到远程服务器

测试远程数据库访问主机