【问题标题】:Cannot access MySQL from remote hosts无法从远程主机访问 MySQL
【发布时间】:2018-03-05 15:59:38
【问题描述】:

我一直在关注一些文档和答案,试图破解这个。

场景 我想为世界各地的任何连接的特定用户打开我的数据库。为了争论,我们称这个用户为 user1。

我已经使用以下命令为 localhost 和 '%' 创建了这个用户:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'user1'@'%' IDENTIFIED BY 'password';

然后我已授予该用户仅连接到 1 个数据库的权限:

GRANT ALL ON database.* TO 'user1'@'localhost';
GRANT ALL ON database.* TO 'user1'@'%';

后跟刷新权限命令:

FLUSH PRIVILEGES;

我已进入 /etc/mysql/mysql.conf.d/mysqld.cnf 文件并尝试添加和删除以下行:

bind-address        = 0.0.0.0

随后重启 MySQL 服务。

我可以在 localhost 上与该用户连接并执行我希望能够执行的所有操作,但如果我从远程主机连接,则会收到以下错误(来自 TOAD 数据点): 无法连接到任何指定的 MySQL 主机。

这是运行以下命令的输出:

netstat -tupln | grep mysql

根据我的远程 Windows 机器的请求运行 nmap 命令的输出(出于安全原因,我删除了 MySQL 主机)


出于安全原因的服务器 IP 地址。

对此的任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 您是否安装了防火墙(iptablesufw)?从远程主机,你能nmap $HOSTNAME -p 3306吗?
  • 一切似乎都井然有序,请尝试寻找其他地方。
  • 我安装了 iptables,但似乎没有运行任何服务 - 我会尝试 nmap 并让您知道输出
  • @StefanM 我已将 nmap 命令的输出添加到我的问题中
  • 您是否尝试过使用 MySql Workbench 进行连接?

标签: mysql ubuntu-16.04


【解决方案1】:

您必须在您的机器上打开 MySQL 正在侦听的端口。默认端口是 3306。您应该接受此端口上的传入 TCP 连接。 或者您可以禁用不推荐的防火墙。

【讨论】:

    【解决方案2】:

    Ubuntu 设置的一切都是绝对正确的,因为这不起作用的原因仅仅是因为服务器主机 1 和 1 有自己的防火墙,与我在 Ubuntu 实例上安装的防火墙分开。

    一旦我更改了 1&1 防火墙上的规则,一切都会按预期工作。

    感谢大家对此的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2015-02-04
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      相关资源
      最近更新 更多