我正在尝试在远程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
”部分,端口转发有问题吗?
答案 0 :(得分:0)
您已经忘记了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
答案 1 :(得分:0)
听起来像不需要隧道。 默认情况下,mysql install将允许从本地主机访问而无需密码。 ssh会话是远程的,但是mysql会话是本地的,因此您不需要更改绑定地址。
除非您的Windows IP是公开的,并且可以从Debian进行访问,并且您已经在Windows中正确安装了MySQL客户端,否则您还有比隧道更简单的选择。
只需启动ssh并输入sudo mysql
,就可以了,但是,根据您的ssh用户和mysql用户以及他的权限,您需要调整-u
和{{1} }参数。
您是否运行过-p
命令?