Saya membuat pengguna user@'%'
dengan password 'password
. Tapi saya tidak bisa terhubung dengan:
mysql_connect('localhost:3306', 'user', 'password');
Ketika saya membuat pengguna user@'localhost'
, saya dapat terhubung. Mengapa? Apakah '%' tidak berarti dari host APAPUN?
mysql
remote-access
user2333586
sumber
sumber
Jawaban:
Untuk menghubungkan dari jarak jauh Anda harus memiliki MySQL bind port 3306 ke alamat IP mesin Anda di my.cnf. Maka Anda harus membuat pengguna di wildcard localhost dan '%' dan memberikan izin pada semua DB . Lihat di bawah:
my.cnf (my.ini di windows)
kemudian
Kemudian
Tergantung pada OS Anda, Anda mungkin harus membuka port 3306 untuk memungkinkan koneksi jarak jauh.
sumber
mysql.default_port = <private instance port>
di php.ini saya, dan kemudian digunakan127.0.0.1
untuk nama host db sayaIkuti instruksi (langkah 1 hingga 3 tidak diperlukan di windows):
Temukan konfigurasi mysql untuk diedit:
Temukan
bind-address=127.0.0.1
perubahan file configbind-address=0.0.0.0
(Anda dapat menetapkan alamat bind ke salah satu ips antarmuka Anda atau seperti saya menggunakan 0.0.0.0)Mulai ulang layanan mysql berjalan di konsol:
service restart mysql
Buat pengguna dengan kata sandi aman untuk koneksi jarak jauh. Untuk melakukan ini jalankan perintah berikut di mysql (jika Anda pengguna linux untuk mencapai mysql console run
mysql
dan jika Anda mengatur kata sandi untuk root runmysql -p
):Sekarang Anda harus memiliki pengguna dengan nama
user
dan kata sandisafe_password
dengan kemampuan koneksi jarak jauh.sumber
untuk apa DB pengguna? lihat contoh ini
jadi untuk kembali ke Anda mempertanyakan operator "%" berarti semua komputer di jaringan Anda.
seperti acara aspesa, saya juga yakin Anda harus membuat atau memperbarui pengguna. cari semua pengguna mysql Anda:
segera setelah Anda mengatur pengguna Anda, Anda harus dapat terhubung seperti ini:
semoga membantu
sumber
code
mysql_connect ('localhost: 3306', 'user', 'password');code