1. When mysql-h 127.0.0.1, using TCP/IP connectivity, MySQL server considers the connection to be from 127.0.0.1 or "Localhost.localdomain"
2. When mysql-h localhost, it is not connected with TCP/IP and uses UNIX sockets; At this time, MySQL server thinks that the client is from "localhost"
3. The "localhost" in MySQL Rights management has a specific meaning:
Note: Although there are differences in the way they are connected, when localhost is the default 127.0.0.1, the permissions records used by both connections are the following 1.row records (because the record is first matched)
The code is as follows |
Copy Code |
1. Row *************************** Host:localhost User:root ...... 2. Row *************************** host:127.0.0.1 User:root
|
Prove:
The code is as follows |
Copy Code |
Shell> mysql-h 127.0.0.1 mysql> status; Current User:root@localhost Ssl:not in use Current Pager:stdout Using outfile: ' Using delimiter:; Server Version:5.1.33-log Source Distribution Protocol version:10 connection:127.0.0.1 via TCP/IP shell> mysql-h locahostmysql> status; Current User:root@localhost Ssl:not in use Current Pager:stdout Using outfile: ' Using delimiter:; Server Version:5.1.33-log Source Distribution Protocol version:10 Connection:localhost via UNIX socket |
Find problems
yesterday, when I was compiling my colleagues to install the Linux environment, I encountered a problem:
The Web server is Apache and the database is MySQL.
So I wrote a PHP page that tests the connection database:
The code is as follows |
Copy Code |
$mysql = mysql_connect (' localhost ', ' root ', '); |
Open http://localhost/test.php Test
Hint: Can ' t connect to the local MySQL server through socket ...
Check for normal environment
Think that the database did not start, so look at the process, MySQL in the process, restart the MySQL.
Use Mysql-u root-p to access the MySQL operating interface
Directly using/usr/local/php5/bin/php/web/test.php execution to connect to the database
Apache also restarted, as ineffective as
Doubt: Why Web page execution failed, command execution was successful
This is depressing, using the PHP command to execute directly on the success, through the Web implementation will fail. Could it be Apache that caused it? Search the Internet for a lot of data and did not find a solution, recompile installation Apache problem remains.
Change localhost to 127.0.0.1 success
Change the localhost to 127.0.0.1 after the successful connection, began to fall into the trap of thinking: localhost failure 127.0.0.1 but successful?
Ping localhost address is 127.0.0.1 Yes
Open hosts Join
The code is as follows |
Copy Code |
127.0.0.1 QTTC |
Use QTTC when host connection is normal, but do not recognize localhost.
LocalHost connection mode causes
In order to understand the PHP connection database, the host fills in the localhost and other differences read a lot of information, and finally learned:
MySQL will be connected with UNIX domain socket when the host is filled out as localhost
MySQL will be connected by TCP when the host is filled out as 127.0.0.1
This is the characteristics of the Linux socket network, the win platform will not have this problem
Solving method
added in the [MySQL] section of MY.CNF
The code is as follows |
Copy Code |
Protocol=tcp |
Save reboot MySQL, problem solved!