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

Mysql allows access for root user, but acces is denied for user with all privileges as root user

我在 WAMP 上安装了 PHPMyAdmin 和 MySQL,并且 运行。

用户 root 是在 PHPmyAdmin 中默认创建的,没有使用密码。

我用一个界面登录MySQL。好的,当我传递登录详细信息时:

Datasource : dbi:mysql:foobar:localhost:3306 
 User Name : root
     Auth  : 

Dbi 代表数据库引擎,foobar 是table,localhost = 地址和端口。 我可以访问数据库,一切正常。

好的,那我在 PHPMyAdmin 中创建一个新用户。

新用户是 johnsmith,密码是 foobar。他获得所有权限,和root一样

看起来像这样:

所以在同一个界面中,我填写以下内容:

 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 中的一个功能..

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

您在创建用户后是否进行了 'FLUSH PRIVILEGES' 操作? MySQL 需要重新阅读权限 table 才能看到新的更改。

运行这个:

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 的处理方式都与其他人不同,% 通配符似乎不适用于它。然后你必须FLUSH PRIVILEGES才能生效。