Mysql resolving 127.0.0.1 to hostname
I'm trying to connect to mysql using the command
mysql -h 127.0.0.1
It comes up with the error
ERROR 1045 (28000): Access denied for user 'root'@'mydomain.com' (using password: NO)
Why is 127.0.0.1 being converted into my domain name, and how can I fix it?
However, it does work if I don't specify a host (and by extension, if 'localhost' is specified).
Edit: It seems it resolves to the domain name when using TCP, so it also fails when using
mysql -h localhost --protocol=TCP
Edit2: When I use skip-name-resolve I get a similar output except mydomain.com
is replaced with x.x.x.x
which is the public IP of mydomain.com
.
Solution 1:
I had masquerading for all external packets (including on lo). Removing/editing the iptable -t nat POSTROUTING
rules fixed the issue.