Php Mysql允许根用户访问,但拒绝具有根用户所有权限的用户访问
我已经在WAMP上安装了PHPMyAdmin和MySQL,并且正在运行 默认情况下,在PHPmyAdmin中创建用户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中
根目录
,并且不使用密码
我使用一个接口来登录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