'vasya'@'%'
我在远程服务器上的某些数据库上创建了一个具有所有权限的用户。
当我 ssh 到服务器时,没有mysql -u vasya -p
任何问题。
但是当我尝试使用 Sequel Pro 进行 ssh 隧道时
host: 127.0.0.1
username: vasya
password: *****
port: 3306
ssh host: <My Server IP>
ssh user: <my server user that I used in terminal>
ssh password: ***********
我得到:
无法连接到主机 127.0.0.1,因为访问被拒绝。
仔细检查您的用户名和密码,并确保从您当前的位置访问是被允许的。
MySQL 说:拒绝用户“vasya”@“localhost”访问(使用密码:是)
在 my.cnf 中我已经设置了它,尽管我不认为它对于 ssh 隧道来说是必要的:
#skip-networking
bind-address = 0.0.0.0
哦,是的,我可以使用我之前创建的另一个用户成功连接 Sequel Pro,该用户与 vasya 没有什么不同。
我和 Vasya 之间可能存在什么问题?
答案1
问题是 sequel pro 使用 ssh 隧道可能会连接到localhost
而不是 127.0.0.1。现在你可能认为这%
可能涵盖 localhost,但事实并非如此。尝试使用相同的授权创建相同的用户,但user@%
你会这样做user@localhost
答案2
搞清楚了。不知不觉中,我在服务器上运行了两个 mysql 实例——原始安装和 xampp。Sequel Pro 正在连接到原始安装,当然,原始安装中没有我新创建的用户。
然而,问题仍然存在,为什么它选择旧的 mysql 而忽略指定 xampp 安装的路径......哦,好吧。
感谢所有提供帮助的人。
答案3
我在 Ubuntu 18 上遇到了这个问题。之前在 Ubuntu 16 上可以成功连接。找到了解决方案,在这里分享,以防有人关心:
在最新的MariaDB+Ubuntu18中:
select * from mysql.user;
将显示 root@local 有插件unix_socket
,这导致 Sequel Pro SSH 隧道无法使用 root 访问 mysql。
更改方式如下:
UPDATE mysql.user SET plugin = 'mysql_native_password' where host='localhost' and user='root';
然后您可以再次通过隧道登录。