【问题标题】:Multiple hostnames and multiple privileges?多个主机名和多个权限?
【发布时间】:2010-08-22 03:51:18
【问题描述】:

我想将 127.0.0.1 映射到多个名称,而不是像 localhost 那样的标准方式。所以我在 Ubuntu 中的 /etc/hosts 文件将包含以下条目:

127.0.0.1 localhost
127.0.0.1 localhost:extra1
127.0.0.1 localhost:extra2

现在,在 MySQL 中,我想要一个名为 karthick 的用户,它应该具有不同的权限。

select user,host from users;

以上语句显示

 karthick localhost:extra1;
 karthick localhost:extra2;

我的问题:

我无法登录使用

mysql -u karthick -h localhost:extra1 -p

会有什么问题?

问题背后的动机

我想如下登录

登录 1:

mysql -u karthick -h localhost:extra1 -p

登录 2:

mysql -u karthick -h localhost:extra2 -p

我希望登录 1 和登录 2 拥有不同的权限集...希望这是可能的

【问题讨论】:

标签: mysql linux security ubuntu


【解决方案1】:

在 mysql 接收到连接的那一刻,它所需要识别远程系统的只是 IP 地址。然后它必须执行“反向 dns”查找,将请求系统的 IP 地址转换为主机名,以便它可以在授权表中查找主机名。虽然您可以将多个主机名映射到单个 IP 地址,但正如您所做的那样,mysql 无法知道最初指定了哪个主机名。此时它只有 127.0.0.1,DNS 解析器将返回名称“localhost”。即使改变了,你也只能给它一个名字,这样你的方案就行不通了。

但是,您可以为您的网络适配器提供多个不同的 IP 地址。我不知道在 Ubuntu 上设置它的细节,但它应该相对容易。然后,您可以设置多个主机名,每个主机名都有自己的 IP 连接回您的系统。在您的 mysql 设置中,在您的 GRANT 命令中指定 IP 地址而不是主机名,以避免与 rDNS 混淆。

【讨论】:

  • 我尝试设置多个 IP 地址并使用新的 IP 地址进行连接。那是 mysql -u root -h 192.168.9.2 -p 但它工作正常.....我得到的错误是“无法连接到 '197.168.9.2' 上的 MySQL 服务器”
  • 您有 192.168.9.2 和 197.168.9.2 -- 这是您评论中的拼写错误还是真正的信息?
  • 首先,你能ping每个单独的地址吗?然后,检查 MySQL 是否正在侦听 0.0.0.0 而不是 127.0.0.1 (netstat -nat|grep 3306)。如果它在 127.0.0.1 上,则必须更改 MySQL 配置。
猜你喜欢
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多