MySQL localhost connect works but 127.0.0.1 does not

4

1

Does anyone know what the error could be when I can connect to my MySQL server via localhost but not via 127.0.0.1? AFAIK, these should be routed identically and no additional TCP layer should be created when using the IP.

$ mysql -u root -h localhost -D test # works
$ mysql -u root -h 127.0.0.1 -D test # does not work
(127.0.0.1 does map to localhost/vice versa)

The table permissions are explicitly set to include both methods.

Michael Schubert

Posted 2011-02-25T16:38:45.213

Reputation: 540

Answers

4

The MySQL client library overrides localhost to use a Unix socket instead of a TCP/IP connection to 127.0.0.1. If you can connect to localhost but not 127.0.0.1, that suggests that it's either firewalled or not listening on 127.0.0.1.

Mike Scott

Posted 2011-02-25T16:38:45.213

Reputation: 4 220

2

The manual at Connecting to the MySQL Server suggests using the following syntax :

shell> mysql --host=127.0.0.1

The explanation is :

On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given to specify a port number. To ensure that the client makes a TCP/IP connection to the local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP address or name of the local server. You can also specify the connection protocol explicitly, even for localhost, by using the --protocol=TCP option. For example:

harrymc

Posted 2011-02-25T16:38:45.213

Reputation: 306 093