首页 > 解决方案 > 无法在 Linux 上设置对 MySQL 服务器的远程访问

问题描述

我正在尝试在我的 Debian Linux 系统上设置我的 MySQL 服务器以进行远程访问。但是,我遇到了无法设置“绑定地址”变量的问题。我试图使用命令设置它mysqladmin --bind-address=0.0.0.0并返回mysqladmin: unknown variable 'bind-address=0.0.0.0'.

我也试过插入这个:

[mysqld] bind-address = 0.0.0.0

进入/etc/mysql/my.cnf以及/etc/mysql/conf.d/mysql.cnf通过运行重新启动服务器service mysql restart

我会跑lsof -Pni :3306看看它是否从配置文件中获取了绑定地址并在其本地 IP 之外进行侦听,它会返回

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 28978 mysql 20u IPv4 148539 0t0 TCP 127.0.0.1:3306 (LISTEN)

这向我表明它仍然只在本地收听。我检查了该/etc/default/mysql文件以确保没有任何启动选项集阻止我远程访问它。

我尝试将协议选项设置为“TCP”和“SOCKET”,但都不起作用。

如何让 MySQL 在其本地网络之外进行侦听?提前致谢。

标签: mysqlremote-access

解决方案


  1. 检查mysql版本

    mysql --version

bind-address 的默认值如下所示:

  • 默认值 (>= 5.6.6) *
  • 默认值 (<= 5.6.5) 0.0.0.0

所以实际上不需要为上面的mysql版本设置绑定地址。

  1. 检查mysql配置文件位置

    $ which mysqld /usr/local/mysql/bin/mysqld $ /usr/local/mysql/bin/mysqld --verbose --help | grep -A 1 "Default options" Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

检查上述配置文件中是否有任何绑定地址配置。

  1. 重启mysqld服务

    service mysqld restart

  2. 确认创建的 mysql 用户user@'%'允许用户在外部连接 mysql。


推荐阅读