如何允许从动态 IP 进行 MySQL 远程访问?

Tom*_*ins 3 mysql remote-access

我试过寻找答案,但找不到。

我需要通过本地 MySQL Workbench 远程访问 MySQL 实例。端口已打开(我相信)。我可以telnet进去。

我看到的所有例子都在说

GRANT ALL PRIVILEGES ON *.* TO USER-NAME@IP IDENTIFIED BY "PASSWORD";
Run Code Online (Sandbox Code Playgroud)

这样做的问题是我正在从动态 IP 远程访问。我得到的错误是

用户 'root'@'c-67-166-150-41.hsd1.ca.comcast.net' 访问被拒绝(使用密码:YES)

我如何设置它以允许我进入?如果我远程控制,我确实可以访问远程计算机上的 MySQL Workbench。

谢谢

Zor*_*che 10

使用某种隧道访问系统会好得多。Putty/SSH 很好地提供了这个功能。

  • 请参阅:http://superuser.com/questions/479138/trying-to-set-up-ssh-tunneling-to-mysql-server-for-mysql-query-browser/479434#479434 (2认同)

小智 8

您应该尝试对主机部分使用“%”。就像是:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)

(取自MySQL 文档

确保更改正确生效:

flush privileges
Run Code Online (Sandbox Code Playgroud)

  • 虽然这会奏效,但允许所有内容`%` 或`%comcast.net` 似乎是个坏主意。 (5认同)
  • +1 for Zoredcache:这就是 VPN 的用途。但另外,即使具有强身份验证,DB 也不应该*永远*在互联网上公开。 (3认同)
  • IMO,腻子隧道是一个更容易快速简单的解决方案。因为你不需要改变任何东西。但这取决于你。 (2认同)

Gia*_*968 5

我不建议向localhost. 但是,如果您使用处理 SSH 隧道的客户端,则可以远程访问。哪个MySQL Workbench似乎没有。

SSH 隧道的好处是您可以通过不将 MySQL 暴露给世界来保证服务器的安全。如果您愿意,您可以手动设置 SSH 隧道,但许多数据库客户端都内置了此功能。

在 Mac 上,Sequel Pro运行良好。

它为您提供了通过 SSH 选择连接的选项。进入该配置后,您输入以下内容:

  • 名称: [您想要的连接的任何名称]
  • MySQL 主机: 127.0.0.1 [这是机器的本地主机]
  • 用户 [db 用户名]
  • 密码: [数据库密码]
  • 数据库: [数据库名称或空白以显示您有权访问的所有内容]
  • 端口: 3306 [标准 MySQL 端口]

现在来了 SSH 的东西。这与您在进入 SSH 会话时输入的信息 100% 相同:

  • SSH 主机: [服务器的主机名或 IP 地址]
  • SSH 用户: [SSH 用户名]
  • SSH 密码: [SSH 密码]
  • SSH 端口: [设置的留空是标准的]

也就是说,如果您确实想要基于纯 IP 地址登录 MySQL,那么您应该打开服务器以访问远程客户端,但在前端也应设置防火墙,以基于每个 IP 限制对 MySQL 的访问.