我正在尝试使用sequel pro通过灰隧道连接到我的数据库,但它无法正常工作并强制我在输入" localhost"时使用127.0.0.1
如果我在命令行上运行会导致问题:
mysql --host "localhost"
它有效
如果我跑:
mysql --host "127.0.0.1"
我收到拒绝访问错误:
ERROR 1698(28000):拒绝访问用户&root;' @' localhost'
发生了什么事?
我试过了:
update user set host='%' where host='localhost'
但这不起作用。
答案 0 :(得分:1)
许多SQL服务器对于可能通过localhost或remote进入的每个用户都有两个或更多不同的用户条目。 (127.0.0.1算作远程)。
例如,对于root用户,您可能拥有这三个用户条目。
CREATE USER 'root'@'localhost' IDENTIFIED BY REDACTED;
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY REDACTED;
CREATE USER 'root'@'%.example.com' IDENTIFIED BY REDACTED;
除了在安装MySQL时已经授予了很多权限之外,名称root
没什么特别之处。无论您创建什么,都需要向其他版本的root
授予相同的权限。
答案 1 :(得分:0)
我创建了一个新用户:
CREATE USER 'non-root'@'localhost' IDENTIFIED BY '123';
然后授予他们所有相同的权限:
GRANT ALL PRIVILEGES ON * . * TO 'non-root'@'localhost';
然后删除root并将non-root
重命名为root
现在它终于奏效了。