无法连接到远程 mysql(使用 PuTTY 和隧道)
Can't connect to remote mysql (with PuTTY and tunnel)
我正在尝试在远程 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 密码,要么从未设置过。无论哪种方式,您都需要设置/重置它。
如果您有权访问 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
命令吗?
我正在尝试在远程 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 密码,要么从未设置过。无论哪种方式,您都需要设置/重置它。
如果您有权访问 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
命令吗?