mysql.user表和mysql -u -h之间的区别

mysql.user表和mysql -u -h之间的区别

通常我使用如下命令来运行 mysql:

mysql -h hostname -u user -p
(and then type password here)

但我想知道这与 mysql.user 表有什么关系。当我登录到 mysql 时,我运行:

select user,host from mysql.user

我登录的数据库有很多不同的主机 IP。通常我只看到“%”或“localhost”,但我正在访问一个具有许多不同 IP 的数据库(出于安全原因,我更改了真实 IP,但它们看起来像这样):

| user              | host          |
-------------------------------------
| user_1            | 54.211.18.65  |
| user_support      | 32.162.28.13  |
| user_admin        | 33.167.1.142  |
| user_super        | 35.161.72.123 |

另外,当我尝试使用 mysql cli 访问 user_1 时:

mysql -h mysql.example.com -u user_1 -p

它将 mysql.example.com 解析为我自己的 ip,即使 dig 显示不同的 ip,基本上与这个问题相同。请帮助理解 -h 主机参数和 mysql.user 表中的主机之间的区别。

答案1

-h命令行中的mysql是您要连接的主机。表host中的mysql.user是服务器将验证用户来自的主机。

建议仅在mysql.user(又名CREATE USER)中使用 IP(并skip-name-resolv启用),因为反向 DNS 是一种缓慢且不可靠的身份验证机制。

相关内容