如果仔細查看MYSQL的權限表,會發現存在主機名為 localhost 的記錄,也存在主機名為 127.0.0.1 的記錄,那這兩著分別在什麼時候會用到呢?
使用 /usr/local/mysql/bin/mysql -u root -p訪問MYSQL服務器的時候,如果使用了 -h 參數,mysql 就會通過 TCP/IP 的方式去連接服務器;如果沒有 -h 參數,默認會使用 UNIX socket 方式。
如果通過 TCP/IP 方式進來的連接,MYSQL服務器接收到的來源主機是 127.0.0.1;如果是 UNIX socket 方式,MYSQL服務器接收到的來源主機是 localhost。
如果MYSQL服務器開啟了 skip_name_resolve,MYSQL服務器就不會把接收到的 IP 地址轉化為域名,所以前者的current_user就是 root@'127.0.0.1',後者的current_user就是 root@'localhost'。
如果按照MYSQL的默認配置,skip_name_resovle 是OFF,MYSQL服務器就會將 127.0.0.1 轉換為 localhost,那麼前者和後者兩種連接的 current_user 都是 root@'localhost'