Php Mysql允许根用户访问,但拒绝具有根用户所有权限的用户访问

Php Mysql允许根用户访问,但拒绝具有根用户所有权限的用户访问,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我已经在WAMP上安装了PHPMyAdmin和MySQL,并且正在运行 默认情况下,在PHPmyAdmin中创建用户根目录,并且不使用密码 我使用一个接口来登录MySQL。好的,当我传递登录详细信息时: Datasource : dbi:mysql:foobar:localhost:3306 User Name : root Auth : Dbi代表数据库引擎,foobar是表,localhost=地址和端口。 我可以访问数据库,一切正常 好的,然后我在PHPMyAdmin中

我已经在WAMP上安装了PHPMyAdmin和MySQL,并且正在运行

默认情况下,在PHPmyAdmin中创建用户
根目录
,并且不使用密码

我使用一个接口来登录MySQL。好的,当我传递登录详细信息时:

Datasource : dbi:mysql:foobar:localhost:3306 
 User Name : root
     Auth  : 
Dbi代表数据库引擎,
foobar
是表,localhost=地址和端口。 我可以访问数据库,一切正常

好的,然后我在PHPMyAdmin中创建一个新用户

新用户是
johnsmith
,密码为
foobar
。他得到了所有的特权,就像根一样

看起来是这样的:

因此,在同一界面中,我填写以下内容:

 Datasource : dbi:mysql:foobar:localhost:3306 
 User Name  : johnsmith
 Auth       : foobar
但是对于这个用户,我从mysql得到了一个错误:

 Access denied for user 'johnsmith'@'localhost' (using password: YES)
使用
root
-user再次测试,它可以访问,但是用户
johnsmith
无法访问,即使他拥有所有特权和管理权限。所以我怀疑我在PHPAdmin中缺少了一个特性


谁能指出我哪里出了错?我们将不胜感激

创建用户后是否执行了“刷新权限”? MySQL需要重新读取特权表才能看到新的更改。

运行以下命令:

CREATE USER 'johnsmith'@'localhost' IDENTIFIED BY 'foobar';
GRANT ALL PRIVILEGES ON *.* TO 'johnsmith'@'localhost' WITH GRANT OPTION;
CREATE USER 'johnsmith'@'%' IDENTIFIED BY 'foobar';
GRANT ALL PRIVILEGES ON *.* TO 'johnsmith'@'%' WITH GRANT OPTION;
CREATE USER 'johnsmith'@'127.0.0.1' IDENTIFIED BY 'foobar';
GRANT ALL PRIVILEGES ON *.* TO 'johnsmith'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;

无论出于何种原因,
localhost
的处理方式与其他主机不同,
%
通配符似乎不适用于它。然后你必须
刷新特权
才能使其生效。

使用与root相同的模式将localhost添加到johnsmith中。对其进行了测试,但没有任何帮助。那么
%
是什么意思呢?默认情况下,它是由PHPmyadmin填充的。请看这里的解释:并刷新您的权限。我将删除并再次添加,它非常有效oftern@Dagon这不是一件合乎逻辑的事情。是的,我之前试过了。我试过了,不幸的是没有任何结果。然而,我注意到这是你3.5年后的第一个答案!!(格费利西蒂尔德,他是莫特·伊恩斯·范科门!)。因此,即使我没有帮上忙,我还是把你的帖子投了更高的票。:-)贝丹克!:p已经有一段时间没来了,所以很高兴能回来。它成功了,谢谢你。但我现在还有一个问题。该数据库由其他人主持。我的帐户当前有%作为主机帐户,我无法更改它。也许还有一个建议?我不明白你的意思。例如,在本例中,我是约翰·史密斯,但主机是
%
。我可以访问PHPMyAdmin。我有所有的权利,但没有管理权。我想我无法为我的帐户更改主机。你有权访问根帐户吗?如果需要授予管理员权限,只需在运行
授予所有权限
行时添加
授予选项
。但是您已经需要grant选项才能做到这一点,localhost是不同的,因为它使用套接字而不是通过TCP/IP