通常我使用如下命令来运行 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 是一种缓慢且不可靠的身份验证机制。