如何使mysql接受外部连接。

3
我有一个VPS,想让MySQL数据库接受外部连接(例如来自我的电脑)。服务器上安装了Debian Linux。我查看了一些在线教程,他们说要注释掉:
bind-address          = 127.0.0.1

但这似乎没有帮助!有关VPS的特定内容吗?还是我错过了其他东西?运行mysql的命令是:
/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
3个回答

4
MySQL服务器必须配置为接受外部连接(根据需要绑定到正确的网络接口),并且其防火墙必须配置为允许该端口(TCP端口3306)上的传入连接。当您安装MySQL时,这可能已经设置好,也可能没有(如果您使用*nix系统,请参见iptables)。
在MySQL权限中,您还必须按如下方式考虑这一点。
通常,在设置MySQL权限时,您只会为@'localhost'设置用户访问权限。您需要确保用户帐户及其授予的权限都针对您将从中连接的适当主机名或IP地址进行设置。例如,您可以创建一个新的授权用户,方法如下:
GRANT ALL PRIVILEGES ON somedatabase.* TO someuser@'somehostname' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

在远程连接到服务器之前,您需要完成以下操作,使用类似以下的方式(此示例使用PHP):

mysql_connect('mysqlservername', 'someuser', 'password');

谢谢,这很有帮助。我还需要使用以下命令打开端口: iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT - Tam
2
抱歉,那只是一个基于PHP的示例,因为MySQL通常与PHP一起使用。该示例可以轻松地转换为其他API。 - thomasrutter

1

你还需要将bind-address更改为VPS机器的外部IP(可以使用ipconfig查看)。

并且授权来自你的PC的访问。使用root权限从本地主机连接到数据库,然后执行以下操作:

grant all privilege on *.* to `username`@`your-pc-id` identified by 'your-password'

如需更多信息,请查看MySQL授权文档


0

你需要将bind-address设置为你机器的外部IP地址,而不是localhost IP地址。别忘了在此之后重新启动MySQL服务。

查看这些其他答案以获取更多细节。


我尝试了一下,但服务器在那之后无法启动。 启动MySQL数据库服务器:mysqld . . . . . . . . . . . . . . 失败! 我还需要做其他事情吗,比如打开端口之类的? - Tam
我怀疑在你使用了扩展省略号的地方有一些关键信息。 - ysth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接