这个问题似乎被问了很多次,但我找不到一个确定的答案。
我正在使用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”;而新用户只有一行对应主机“%”)
(我已经仔细检查了密码,因此我确信这不是密码问题。)
我正在使用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”;而新用户只有一行对应主机“%”)
(我已经仔细检查了密码,因此我确信这不是密码问题。)
user@localhost
授予权限,而不是使用%
通配符吗? - ulentini%
不会匹配 Unix socket 连接,所以你需要明确授予localhost
的权限。 - ulentini