我正在尝试创建一个MySQL用户,该用户仅被允许从特定主机名连接到MySQL数据库。
将db_name。*上的所有权限授予由“ some_passwd”标识的“ user_name” @“ appserver-lan.mydomain.com”
通过检查mysql db上的用户表,我可以看到该用户已成功创建:
使用mysql; 从用户中选择*,其中User ='user_name'和Host ='appserver-lan.mydomain.com'
要么
显示“用户名” @“ appserver-lan.mydomain.com”的赠款
我指定的主机名是amazon-ec2名称的别名,当由AWS DNS服务器解析时,它会得出一个LAN地址:
[root @ db_server〜]#主机appserver-lan.mydomain.com
appserver-lan.mydomain.com是ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com的别名ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com的地址为10.xxx .xxx.xxx
问题是,当我尝试从此appserver-lan连接到数据库LAN IP时,尽管密码正确,但我收到拒绝访问错误。奇怪的是,错误中显示的主机名不是我在创建用户时指定的主机名:
ERROR 1045(28000):拒绝访问用户'user_name' @ ' appserver.mydomain.com '(使用密码:YES)
因此,我的问题是:mysql如何确定客户端主机名?我相信通过反向DNS查找不会做到这一点,因为我进行了检查,它也没有指向“ appserver.mydomain.com”,也没有指向“ appserver-lan.mydomain.com”。此外,数据库服务器在/ etc / hosts上没有与appserver相关的条目。
总而言之,我很确定这是一个主机名解析问题,因为为主机“%”或LAN IP授予特权就可以了。
关于我所缺少的任何想法?
host -t PTR 10.1.2.3
?