无法通过 ssh 隧道连接到 AWS 上的 mysql

无法通过 ssh 隧道连接到 AWS 上的 mysql

我正在尝试打破任务将 ruby​​mine 上的 AWS 调试拆分成更小的块。我想连接到在 AWS 上运行的 mysql 服务器。因此我执行了以下操作:

第一的:建立 ssh 隧道,将所有 localhost 对端口 3307 的请求转发到 AWS 上的端口 3306:

ssh -l ubuntu -i 'path/to/private/key/privateKey.cer' -L 3307:aws.port:3306 aws.port -N -v -v

第二:连接到 mysql 端口 3307

mysql -h 127.0.0.1 -P 3307 -u root -p 

问题: 它在我的主机上失败并出现以下错误:

ERROR 1130 (HY000): Host '178.135.138.61' is not allowed to connect to this MySQL server

AWS 上的日志输出如下内容:

debug1: Connection to port 3307 forwarding to 54.193.1.19 port 3306 requested.
debug2: fd 7 setting TCP_NODELAY
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug2: channel 2: zombie
debug2: channel 2: garbage collecting
debug1: channel 2: free: direct-tcpip: listening port 3307 for 54.193.1.19 port 3306, connect from 127.0.0.1 port 64938, nchannels 3

笔记:

  • 我确保我所连接的 aws 服务器的安全组允许ssh在端口 22 上进行连接
  • 我确保/etc/hosts.denyAWS 上没有列出 localhost 或 127.0.0.1。

想法?

答案1

错误消息

ERROR 1130 (HY000): Host '178.135.138.61' is not allowed to connect to this MySQL server

来自 MySQL。要允许 root 用户进行远程访问,您需要在 mysql 服务器上专门为特定数据库允许此操作

mysql -u root -p
mysql> grant all privileges on somedatabase.* to 'root'@'178.135.138.61' identified by 'somepassword';
mysql> flush privileges;

这将允许用户名 root 从 178.135.138.61 连接到 mysql,并且拥有 somedatabase 的所有权限。

你应该仔细阅读MySQL 安全文档尤其是访问控制用户管理章节。

相关内容