Menyelesaikan masalah "Tidak Dapat Menyambung ke Pelayan MySQL Tempatan Melalui Soket" Ralat
Ralat "Tidak dapat menyambung ke pelayan MySQL tempatan melalui soket 'MySQL' (2)" timbul apabila cuba menyambung ke pangkalan data MySQL menggunakan kelas PHP MySQLi. Ralat ini menunjukkan bahawa soket domain Unix, bukannya sambungan TCP/IP, sedang dicuba.
Memahami Soket Domain Unix untuk Sambungan MySQL
Apabila menyatakan "localhost " sebagai hos, perpustakaan klien MySQL lalai menggunakan soket domain Unix untuk sambungan. Tidak seperti sambungan TCP/IP, soket domain Unix memanfaatkan fail soket dalam sistem pengendalian untuk mewujudkan komunikasi dengan MySQL.
Menyelesaikan Isu Sambungan
Terdapat beberapa pendekatan untuk selesaikan isu sambungan ini:
1. Tentukan Sambungan TCP/IP:
Untuk menguatkuasakan sambungan TCP/IP dan bukannya soket domain Unix, gunakan "127.0.0.1" sebagai hos semasa menyambung. Ini memastikan sambungan TCP/IP walaupun semasa menggunakan "localhost".
2. Konfigurasikan Soket Domain Unix:
Jika lebih suka menggunakan soket domain Unix, cari laluan soket dalam fail konfigurasi MySQL "my.cnf" dan tetapkan "mysqli.default_socket" PHP ke laluan itu.
3. Konfigurasikan Soket dalam Skrip PHP secara eksplisit:
Anda juga boleh mengkonfigurasi soket secara langsung dalam skrip PHP apabila membuka sambungan. Contohnya:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock');
Memilih Kaedah Sambungan
Kaedah sambungan optimum bergantung pada persekitaran tertentu. Soket domain Unix boleh menjadi lebih pantas dan lebih selamat, tetapi ia memerlukan laluan soket untuk dikonfigurasikan. Sambungan TCP/IP, sebaliknya, tidak memerlukan konfigurasi khas tetapi mungkin lebih perlahan.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menyambung ke Pelayan MySQL Tempatan Saya Melalui Soket, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!