Ketika Anda hanya menggunakan "localhost" perpustakaan klien MySQL mencoba menggunakan soket domain Unix untuk koneksi alih-alih koneksi TCP/IP. Kesalahan memberi tahu Anda bahwa soket, yang disebut MySQL
, tidak dapat digunakan untuk membuat koneksi, mungkin karena tidak ada (kesalahan nomor 2).
Dari Dokumentasi MySQL :
Di Unix, program MySQL memperlakukan nama host localhost secara khusus, jauh dari yang Anda harapkan dibandingkan dengan program berbasis jaringan lainnya. Untuk koneksi ke localhost, program MySQL mencoba terhubung ke server lokal dengan menggunakan file soket Unix. Hal ini terjadi bahkan jika opsi --port atau -P diberikan untuk menentukan nomor port. Untuk memastikan bahwa klien membuat koneksi TCP/IP ke server lokal, gunakan --host atau -h untuk menentukan nilai nama host 127.0.0.1, atau alamat IP atau nama server lokal. Anda juga dapat menentukan protokol koneksi secara eksplisit, bahkan untuk localhost, dengan menggunakan opsi --protocol=TCP.
Ada beberapa cara untuk mengatasi masalah ini.
- Anda bisa menggunakan TCP/IP sebagai ganti soket Unix. Anda akan melakukannya dengan menggunakan
127.0.0.1
bukannyalocalhost
ketika Anda terhubung. Namun, soket Unix mungkin lebih cepat dan lebih aman untuk digunakan. - Anda dapat mengubah soket di
php.ini
:buka file konfigurasi MySQLmy.cnf
untuk menemukan di mana MySQL membuat soket, dan mengaturmysqli.default_socket
PHP ke jalan itu. Di sistem saya ini/var/run/mysqld/mysqld.sock
. -
Konfigurasikan soket langsung di skrip PHP saat membuka koneksi. Misalnya:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock')