无法连接到远程 mysql(使用 PuTTY 和隧道)

Can't connect to remote mysql (with PuTTY and tunnel)

我正在尝试在远程 Debian 服务器上使用 mysql。我已经为 PuTTy 客户端配置了隧道:

我点击打开,输入用户名和密码登录服务器

但此时我无法使用mysql。如果我在没有密码的情况下尝试此操作:

mysql -u root -p

我得到access denied for user 'root'@localhost' (using password: NO)

我不确定这是因为确实需要一些密码还是端口转发有问题 - 我怎么知道?

我尝试进入 my.cnf 文件并将 bind address 127.0.0.1 更改为远程地址,但没有任何变化。也许 mysql 需要为此重新启动,但我在尝试重新启动它时访问被拒绝(相同的 mysql 错误消息)。

我可以在 PuTTY 事件日志中看到 "local port 3306 forwarding to 127.0.0.1:3306"。再往下一点,上面写着 "Opening connection to 127.0.0.1:3306 for forwarding from 127.0.0.1:55271" - 我不知道那是什么意思?

我如何知道问题是与密码有关还是与“@localhost”部分有关,端口转发是否有问题?

您要么忘记了 root 密码,要么从未设置过。无论哪种方式,您都需要设置/重置它。

如果您有权访问 ssh(您的 post 建议您这样做),并且您有 sudo 访问权限..这应该很容易。发出以下命令:

停止您的 MySQl 进程。大多数 Debian 系统将

sudo service mysql stop

然后在没有密码的情况下安全地启动MySQL:

sudo mysqld_safe --skip-grant-tables &

然后以root

登录
mysql -u root

root

设置密码
use mysql;
update user set password=PASSWORD("PASSWORD") where User='root';
flush privileges;
quit

然后重启mysql

sudo service mysql restart

此时,当您发出命令时,应该会提示您输入密码:

mysql -u root -p

听起来你不需要隧道。 默认情况下 mysql 安装将允许从本地主机访问而无需密码。 ssh 会话是远程的,但 mysql 会话是本地的,因此您不需要更改绑定地址。

除非你的 Windows IP 是 public 并且可以从 Debian 访问,并且你已经在 Windows 中正确安装了 MySQL 客户端,否则你仍然有几个不那么复杂的选项一条隧道。

只需启动 ssh 并输入 sudo mysql 就可以了,但是,根据您的 ssh 用户和 mysql 用户及其权限,您需要调整 -u-p 参数。

你有运行 mysql_secure_installation 命令吗?