我想将 127.0.0.1 映射到多个名称而不是本地主机的标准方式。所以我在 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 接收到连接时,它唯一需要识别远程系统的就是 IP 地址。然后它必须执行“反向 dns”查找以将请求系统的 IP 地址转换为主机名,以便它可以在授权表中查找主机名。虽然您可以将多个主机名映射到一个 IP 地址,就像您所做的那样,但 mysql 无法知道最初指定了哪个主机名。那时它只有 127.0.0.1,DNS 解析器将返回名称“localhost”。即使改变了它,你也只能给它一个名字,所以你的方案将不起作用。
然而,您可以为您的网络适配器提供多个不同的 IP 地址。我不知道在 Ubuntu 上设置它的细节,但它应该相对容易。然后您可以设置多个主机名,每个主机名都有自己的 IP,可以连接回您的系统。在您的 mysql 设置中,在 GRANT 命令中指定 IP 地址而不是主机名,以避免与 rDNS 混淆。
关于mysql - 多个主机名和多个权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540051/