使用正确的凭据拒绝访问,这是怎么回事?

Access denied with correct credentials, what is going on?

作为根用户:

GRANT ALL PRIVILEGES ON * . * To 'JKR'@'%' IDENTIFIED BY "";
FLUSH PRIVILEGES;

在PHP中:

$con = new PDO("mysql:host=127.0.0.1;dbname=jkr;charset=utf8", "JKR", "");

错误信息:

Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'jkr'' in C:\xampp\www\jkr\core\connect.php:6

出于某种原因只能以 root 身份工作... 还有我怎么会得到 Access denied for user ''@'localhost'?

很可能您的系统上有一个匿名用户 ''@'localhost'。匿名用户是名称被忽略的用户。

如果您使用来自 localhostJKR 连接到 MySQL,它会将您与匿名用户匹配。

您可以使用SELECT User, Host from mysql.user;

进行检查

有关 MySQL 匹配用户和权限的方式的详细讨论,请参阅 https://dev.mysql.com/doc/refman/5.7/en/connection-access.html

在我的例子中,mysql 帐户是 REQUIRE SSL;必须提供 ssl_ca 文件(至少)。其他 ssl 参数在这里:http://dev.mysql.com/doc/refman/5.7/en/secure-connection-options.html