Menyingkap Masalah Sambungan: Memahami Sambungan Soket MySQL
Dalam percubaan untuk mewujudkan sambungan pangkalan data MySQL menggunakan kelas mysqli PHP, anda mungkin menghadapi ralat: "[Tidak boleh menyambung ke pelayan MySQL tempatan melalui soket 'MySQL' (2)]". Ralat ini timbul apabila klien MySQL cuba menyambung melalui soket domain Unix pada "localhost" dan bukannya sambungan TCP/IP.
Sambungan Unix vs. TCP/IP
Secara lalai, program MySQL pada sistem Unix mengutamakan soket domain Unix berbanding sambungan TCP/IP apabila menyambung ke "localhost". Walau bagaimanapun, jika soket tidak tersedia atau anda secara khusus memerlukan sambungan TCP/IP, kaedah yang berbeza mesti digunakan.
Menyelesaikan Isu
Beberapa penyelesaian boleh menangani perkara ini isu:
1. Sambungan TCP/IP Eksplisit:
Gunakan alamat IP "127.0.0.1" atau nama hos pelayan tempatan dan bukannya "localhost" dalam rentetan sambungan anda. Ini memaksa pelanggan untuk mewujudkan sambungan TCP/IP.
2. Mengubah suai Konfigurasi PHP:
Cari fail konfigurasi MySQL (my.cnf) dan cari laluan di mana MySQL menubuhkan soket. Tetapkan mysqli.default_socket PHP kepada laluan ini dalam php.ini.
3. Konfigurasi Soket Eksplisit:
Nyatakan laluan soket secara langsung apabila membuka sambungan dalam skrip PHP:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock');
Kesimpulan
Oleh memahami mekanisme sambungan yang digunakan oleh MySQL, anda boleh mengatasi ralat ini dan mewujudkan sambungan pangkalan data yang berjaya. Ingat bahawa menggunakan soket domain Unix mungkin menawarkan kelebihan prestasi dan keselamatan, tetapi sambungan TCP/IP yang jelas mungkin diperlukan dalam keadaan tertentu.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menyambung ke Pelayan MySQL Tempatan Saya Melalui Soket?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!