MySQL错误1045,“Access denied for user 'user'@'localhost'(使用密码:YES)”

6
这个问题似乎被问了很多次,但我找不到一个确定的答案。
我正在使用MySQL进行一些Web应用程序测试,一开始我使用了“root”用户(带有非空密码)。我的root用户从应用程序(经过PHP和Python的Django测试),命令行以及PHPMyAdmin都可以正常工作。
然而,我不想使用root用户,所以我创建了另一个用户,并授予该用户应该需要的所有数据库权限。 (我在登录为“root”的PHPMyAdmin中完成此任务)。
新用户无法登录MySQL。无论是从Django应用程序,PHPMyAdmin还是命令行都不行。
我有两个可能的怀疑:
1. 用户缺少全局权限。(正如我所说,我授予了所有数据库权限,但我没有授予任何全局权限); 2. 用户配置的主机。(“root”在mysql.user表中有四行,分别对应主机“localhost”,“my-pc-name”,“127.0.0.1”和“::1”;而新用户只有一行对应主机“%”)
(我已经仔细检查了密码,因此我确信这不是密码问题。)

1
展示如何在MySQL中创建新用户。 - Tamil Selvan C
你尝试过针对user@localhost授予权限,而不是使用%通配符吗? - ulentini
@Tamil:我使用PHPMyAdmin创建了新用户。 - Carlos Eugenio Thompson Pinzón
@Uby:我终于做到了,而且它还起作用了。 - Carlos Eugenio Thompson Pinzón
1
@CarlosEugenioThompsonPinzón 好的,记住 % 不会匹配 Unix socket 连接,所以你需要明确授予 localhost 的权限。 - ulentini
2个回答

5

% 表示新用户可以从任何主机访问数据库。

不过,如果您提供 CREATE USER 语句会更有用。

此外,请参阅下面的 MySQL 手册,其中解释了为什么用户应该同时拥有 @'localhost'@'%'

MySQL 参考手册 - 添加用户


将用户添加为@'localhost'有所帮助。谢谢。 - Carlos Eugenio Thompson Pinzón
1
很遗憾的是,如果每个用户都拥有本地主机版本非常重要,那么默认情况下mysql自己的管理程序(“mysql workbench ce”)在建模模式下没有提供这样做的选项,而只提供创建“@%”变体的方式。 - Jules

0

重启MySQL服务器并执行"flush privileges;"命令解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接