【问题标题】:How to make mysql accept connections externally如何让mysql接受外部连接
【发布时间】:2010-10-30 14:20:48
【问题描述】:

我有一个 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

【问题讨论】:

    标签: mysql mysql-management


    【解决方案1】:

    您必须将 bind-address 设置为您机器的外部 IP 地址的值,而不是本地 IP 地址。之后别忘了重启 MySQL 服务。

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

    【讨论】:

    • 我试过了,服务器在启动 MySQL 数据库服务器后无法启动: mysqld 。 . . . . . . . . . . . . .失败的!还有什么我必须做的,比如打开端口之类的吗?
    • 我怀疑在你有扩展省略号的地方提到了一些关键的东西。
    【解决方案2】:

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

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

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

    更多信息请查看MySQL grant documentation

    【讨论】:

      【解决方案3】:

      必须将 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
      • 抱歉,这只是一个基于 PHP 的示例,因为 MySQL 经常与 PHP 一起使用。该示例可以轻松转换为其他 API。
      猜你喜欢
      • 2011-02-02
      • 1970-01-01
      • 2018-06-03
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      相关资源
      最近更新 更多