Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Melayan `localhost` Berbeza Daripada `127.0.0.1`?

Mengapa MySQL Melayan `localhost` Berbeza Daripada `127.0.0.1`?

DDD
DDDasal
2024-11-25 02:47:10726semak imbas

Why Does MySQL Treat `localhost` Differently Than `127.0.0.1`?

MySQL localhost != 127.0.0.1?

Percanggahan ini timbul disebabkan oleh penggunaan soket MySQL apabila dipanggil tanpa nama hos atau dengan 'localhost ' nama hos. Seperti yang ditunjukkan di bawah, menggunakan MySQL dengan nama hos '127.0.0.1' menyambung melalui soket TCP/IP:

$ mysql -u root -h 127.0.0.1 -e 'show tables' created_from_host;
+-----------------------------+
| Tables_in_created_from_host |
+-----------------------------+
| test                        |
+-----------------------------+

Walau bagaimanapun, menggunakan 'localhost' menyambung melalui soket UNIX, mengakibatkan ralat berikut:

$ mysql -u root -h localhost -e 'show tables' created_from_host;
ERROR 1049 (42000): Unknown database 'created_from_host'

Bagaimana untuk memberikan SEMUA keistimewaan pada SEMUA pangkalan data daripada SEMUA hos untuk root?

Untuk memberikan keistimewaan tanpa had kepada pengguna 'root', laksanakan pernyataan SQL berikut:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

Pertimbangan Tambahan:

  • skip_networking variable: Pastikan pembolehubah ini ditetapkan kepada 'MATI' untuk mendayakan sambungan TCP/IP.
  • jadual 'pengguna': Semak jadual 'mysql.user' untuk mengesahkan bahawa pengguna 'root' mempunyai rekod hos untuk kedua-duanya 'localhost' dan '127.0.0.1'.

Atas ialah kandungan terperinci Mengapa MySQL Melayan `localhost` Berbeza Daripada `127.0.0.1`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn