我想将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拥有不同的权限集......希望这是可能的
答案 0 :(得分:0)
在mysql收到连接时,所有必须识别远程系统的是 IP地址。然后,它必须执行“反向dns”查找以将请求系统的IP地址转换为主机名,以便它可以在授权表中查找主机名。虽然您可以将多个主机名映射到单个IP地址,但正如您所做的那样,mysql无法知道最初指定的主机名。此时它只有127.0.0.1,DNS解析器将返回名称'localhost'。即使改变了这一点,你也只能给它一个名字,所以你的方案不起作用。
但是,您可以为网络适配器提供多个不同的IP地址。我不知道在Ubuntu上设置这个的细节,但它应该相对容易。然后,您可以设置多个主机名,每个主机名都有自己的IP连接回系统。在你的mysql设置中,指定IP地址而不是GRANT命令中的主机名,以避免混淆rDNS。