如何从远程计算机(不是本地主机)访问 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?的主要内容,如果未能解决你的问题,请参考以下文章