我正在尝试在远程Debian服务器上使用mysql。我已经使用隧道配置PuTTy客户端:
Session
中,主机名是远程IP地址,端口是22SSH/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密码是什么,或者您从未设置过它。无论哪种方式,您都需要设置/重置密码。
如果你有权访问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
听起来你不需要隧道。默认情况下,mysql install将允许从localhost访问而无需密码。 ssh会话是远程的,但mysql会话是本地的,因此您不需要更改绑定地址。
除非您的Windows IP是公共的并且可以从Debian访问,并且您已经在Windows中正确安装了MySQL客户端,否则您仍然有一些不太复杂的选项而不是隧道。
只需启动ssh并输入sudo mysql
,你应该没问题,但是,根据你的ssh用户和mysql用户 - 以及他的权限 - 你需要调整-u
和-p
参数。
你运行mysql_secure_installation
命令了吗?