如何让mysql在外部接受连接

时间:2009-06-02 05:46:23

标签: mysql mysql-management

我有一个VPS,我想让外部的mysql DB接受连接(例如从我的PC)。我在服务器上安装了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 个答案:

答案 0 :(得分: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');

答案 1 :(得分:1)

您还必须将绑定地址更改为VPS计算机的外部IP(ipconfig会有所帮助)。

并从您的PC授予访问权限。使用root权限从localhost连接到数据库并执行:

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

有关详细信息,请查看MySQL grant documentation

答案 2 :(得分:0)

您必须将bind-address设置为计算机外部IP地址的值,而不是localhost IP地址。不要忘记之后重启MySQL服务。

查看these other answers了解更多详情。