MySQL:Grant Privileges followed by Flush Privileges 没有效果,没有错误(以 root 身份登录)

标签 mysql remote-access privileges

我和一名团队成员都被难住了,因为向远程用户授予权限的命令失败了,但没有错误。使用 CREATE USER 已成功将新用户添加到 mysql.user,但 GRANT PRIVILEGES 后跟 FLUSH PRIVILEGES 不会影响授权表。这两个命令都应该说“查询正常”。 0 行受影响,'他们这样做了。但是 SHOW GRANTS 并没有显示新的权限,我们也不能从指定的远程 ip 使用该用户名登录。谁能解释以下行为?

mysql> SELECT CURRENT_USER();     ///I'm definitely in as root user
+----------------+
| CURRENT_USER() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'myNewUser'@'remoteIP';  //grant to existing user
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS;

 | Grants for root@localhost                                                                                                                   

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD           '*////TakenOut///' WITH GRANT OPTION |
 | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION                                                                              
2 rows in set (0.00 sec)

我希望第三行具有“myNewUser”的权限。

最佳答案

SHOW GRANTS语句显示当前用户的授权。在您的情况下,对于 root@localhost。所以你不应该期望看到第三行有 myNewUser 的权限。 .

而是查询 mysql.user 表...

SELECT * FROM mysql.user WHERE User = 'myNewUser'

我会验证密码是否设置为 'myNewUser'@'remoteip' . (MySQL 通过用户名和主机的组合来标识“用户”。用户 'myNewUser'@'thisip''myNewUser'@'thatip' 是不同的用户。)


此外,我们在 MySQL my.cnf 文件中有此设置:

# Disable DNS Lookup (use IP addresses only)
skip-name-resolve

所以我们使用 IP 地址,而不是主机名。 (这避免了当 DNS 无法从 IP 地址进行 DNS 反向查找以获取主机名时出现的连接问题。)

http://dev.mysql.com/doc/refman/5.1/en/host-cache.html

底线是 MySQL 对 IP 地址进行“反向查找”以获取主机名。如果它无法获得给定 IP 地址的主机名,则来自该 IP 地址的连接将失败。

关于MySQL:Grant Privileges followed by Flush Privileges 没有效果,没有错误(以 root 身份登录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116099/

相关文章:

mysql - 即使权限正常,Sqoop导入错误: Access denied for user 'root' @'localhost' ,

oracle - Oracle 过程是否继承其创建者的特权?

java - 无法从 Java 执行 MySQL 存储过程

Mysql游标未按正确顺序排序结果

mysql 存储过程错误信息

mysql - SQL查询从一个表的某些列复制到另一个表中的一列

powershell - 在远程 session 中使用替代凭据启动进程

php - 如何从 Playstation Store 获取价格

php - 使用 PHP 的 WebDav 连接/身份验证

ruby-on-rails - 在 Rails 模式中启用 UUID 的最简单的最低权限方法是什么?