几个月以来,我一直在通过SSH隧道连接到在本地测试服务器上运行的MySQL实例,而没有任何问题。但是突然之间,我没有想到任何变化,服务器已开始拒绝来自Sequel Pro的登录尝试,并出现以下错误:
由于访问被拒绝,因此无法连接到主机127.0.0.1。
仔细检查您的用户名和密码,并确保允许从您当前的位置进行访问。
MySQL说:拒绝用户'root'@'localhost'的访问(使用密码:是)
通过SSH(而不是通过SSH隧道)直接连接到服务器时,我可以从终端登录。这个问题不仅是Sequel Pro的问题,还是我自己的问题,通过MySQL Workbench连接时,我和办公室中的其他人都遇到相同的错误。我mysqladmin
只是出于理智的考虑重设了密码,这绝对不是问题。
当我开始对其进行更多研究时,我注意到该错误将服务器报告为“ localhost”,而不是我在Sequel Pro中输入的“ 127.0.0.1”。一位朋友建议说这可能只是错误的错误处理,但鉴于localhost与MySQL中的127.0.0.1之间的显着差异,这似乎很奇怪。
为了解决隧道问题,我授予对root @%的访问权限,以便可以直接连接。在大多数情况下,这是可行的,我可以查看表数据,创建新数据库等。唯一的问题是,当我创建用户时遇到错误:
用户'root'@'%'的访问被拒绝(使用密码:是)
奇怪的是,实际上是创建了用户,我认为这只是授予的问题。同样,从终端我以root身份登录时可以执行任何操作。
谁能帮助我们弄清为什么隧道连接和(可能)授权命令会收到拒绝访问错误?
作为参考,MySQ是版本5.6.16,其中大多数是默认设置,可通过Homebrew在MAC OS X Server计算机上安装。
更新资料
以下是当前被授予根访问权限的主机列表:
mysql> select host,user from mysql.user where user='root';
+----------------+------+
| host | user |
+----------------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
+----------------+------+
4 rows in set (0.00 sec)
据我了解,第一行(“%”)是否真的应该使其他行多余?
更新2
修复了赠款问题;root @%用户没有被授予所有特权,最后没有多余的特权with grant option
,因此它可以做所有事情,但可以授予。仍然很想知道为什么SSH隧道被拒绝。