【问题标题】:Can't connect to remote mysql (with PuTTY and tunnel)无法连接到远程 mysql(使用 PuTTY 和隧道)
【发布时间】:2018-07-20 21:12:46
【问题描述】:

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

  • Session中,主机名是远程IP地址,端口是22
  • SSH/Tunnels我有源端口3306和目标:127.0.0.1:3306

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

但是此时我不能使用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 帐户上使用密码。试试mysql -uroot
  • 在 MySQL 中使用 "localhost" 和 "127.0.0.1" 时要小心,它们在检查登录时的想法不同。见stackoverflow.com/questions/19712307/mysql-localhost-127-0-0-1
  • 您要使用哪个 mysql 客户端? Debian 中的那个还是 Windows 中的那个?为什么需要隧道?
  • 我猜是debian mysql。我认为我需要一个隧道,因为 mysql 配置为侦听 127.0.0.1。但是把“绑定地址”改成我的本地IP后,也许我不需要隧道,我不知道。
  • 我的意思是把“绑定地址”改成远程IP..

标签: mysql putty remote-server portforwarding


【解决方案1】:

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

如果您有权访问ssh(您的帖子建议您这样做),并且您拥有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

【讨论】:

  • 我不能做 sudo mysqld_safe --skip-grant-tables 因为 MySQL 守护进程仍在运行,但我不能用 /etc/init.d/mysqld stop 停止它,因为我得到了“访问被拒绝”错误..
  • 你需要sudo /etc/init.d/mysqld stop
  • 好吧,我试过了,但是好像马上重启了:[注意] mysqld (mysqld 5.5.54-0+deb8u1) 从进程13164开始...
  • 你试过sudo service mysql stop吗?
  • 是的,我先这样做,然后 sudo /etc/init.d/mysqld stop
【解决方案2】:

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

除非您的 Windows IP 是公开的并且可以从 Debian 访问,并且您已经在 Windows 中正确安装了 MySQL 客户端,否则您仍然有几个比隧道更简单的选项。

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

您是否运行过mysql_secure_installation 命令?

【讨论】:

  • 我没有运行那个命令,我可以看看。所以问题真的出在密码上吗?所以我需要重置它..
  • 也许,这真的取决于 mysql 的安装方式(包、捆绑、LAMP、编译)以及你做了什么。是否提示您(或其他任何人)设置 mysql root 密码?。
猜你喜欢
  • 1970-01-01
  • 2014-05-03
  • 2018-06-05
  • 1970-01-01
  • 2016-11-18
  • 2018-11-06
  • 2015-04-23
  • 2020-07-05
  • 2017-03-04
相关资源
最近更新 更多