我有一个运行 Ubuntu 操作系统的 Google Cloud VM 实例,并且在那里安装了一个 mysql 服务器。该服务器正在运行,我可以通过以下方式检查状态sudo service mysql status
我已将 mysql my.cnf 文件修改为,
[mysql]
bind-address=0.0.0.0
我已经按如下方式设置了我的实例的防火墙,
IP Protocol
*******************************************
127.0.0.1/32 all
0.0.0.0/32 all
10.128.0.0/9 tcp, udp, icmp
0.0.0.0/0 tcp:22,3389,443,80 icmp
现在在 Mysql 连接设置中,我填写了以下内容,
Connection Method: Standard TCP/IP over SSH
Parameter:
SSH Hostname: <vm external ip>:22
SSH Username: <vm username>
SSH Key File: <vm private key file>
MySQL Hostname: 127.0.0.1
MySQL Server Port: 3306
Username: <mysql username>
Password: <mysql password>
But the test connection is giving the error,
Access denied for 'none'. Authentication that can continue: publickey
现在,我已经通过 puttygen 创建了公钥-私钥对,并通过它成功建立了 Winscp 连接。
答案1
一个问题是您已经在 MySQL Workbench 设置中配置了公钥。
您需要在 MySQL Workbench 设置中使用您的私钥,然后将相应的公钥安装到远程主机用户的.ssh/authorized_keys
文件中。
答案2
您需要在 ssh 服务器中启用 sshd 端口转发。确保您已AllowTcpForwarding yes
在/etc/ssh/sshd_config
文件中,并且 ssh 服务已重新启动。您可以使用以下命令进行测试:
OpenSSH:
ssh -v -L 3306:localhost:3306 user@VM
油灰:
plink -v -L 3306:localhost:3306 user@VM
如果您在同一个 VM 上拥有 Web 应用程序,则bind-address
应该如此。localhost