Untuk beberapa alasan, saya tidak dapat terhubung dari jarak jauh ke server MySQL saya. Saya sudah mencoba segalanya dan saya masih mendapatkan kesalahan.
root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)
Sekarang, saya sudah mencoba lari
GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX';
GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`
dan tetap tidak ada! Apa yang saya lakukan salah?
EDIT : my.cnf
telah mengomentari ip bind.
Jawaban:
Untuk mengekspos MySQL ke selain localhost, Anda harus memiliki baris berikut
Untuk mysql versi 5.6 ke bawah
tidak
/etc/mysql/my.cnf
diberi komentar dan ditetapkan ke alamat IP komputer Anda dan bukan loopbackUntuk mysql versi 5.7 ke atas
tidak
/etc/mysql/mysql.conf.d/mysqld.cnf
diberi komentar dan ditetapkan ke alamat IP komputer Anda dan bukan loopbackAtau tambahkan
bind-address = 0.0.0.0
jika Anda tidak ingin menentukan IPKemudian hentikan dan mulai ulang MySQL dengan entri my.cnf yang baru. Setelah berjalan, buka terminal dan masukkan perintah berikut.
Itu akan menghasilkan sesuatu seperti ini dengan IP Anda yang sebenarnya di xxx
Jika pernyataan di atas kembali dengan benar, Anda kemudian akan dapat menerima pengguna jarak jauh. Namun agar pengguna jarak jauh dapat terhubung dengan hak istimewa yang benar, Anda harus membuat pengguna itu di localhost dan '%' seperti di.
kemudian,
dan akhirnya,
Jika Anda tidak memiliki pengguna yang sama yang dibuat seperti di atas, saat Anda logon secara lokal Anda mungkin mewarisi hak istimewa localhost dasar dan memiliki masalah akses. Jika Anda ingin membatasi akses yang dimiliki myuser maka Anda perlu membaca sintaks pernyataan GRANT DI SINI Jika Anda berhasil melewati semua ini dan masih memiliki masalah, posting beberapa output kesalahan tambahan dan baris my.cnf yang sesuai.
CATATAN: Jika lsof tidak kembali atau tidak ditemukan, Anda dapat menginstalnya DI SINI berdasarkan distribusi Linux Anda. Anda tidak membutuhkan lsof untuk membuat segala sesuatunya bekerja, tetapi ini sangat berguna ketika sesuatu tidak bekerja seperti yang diharapkan.
sumber
lsof -i -P | grep :3306
, itu tidak berhasil tetapi koneksi jarak jauh masih berfungsi dengan baik tanpa konfirmasi itu, abaikan jika Anda tidak melihat output yang tepat.sudo lsof -i -P
akan jauh lebih berguna daripadalsof -i -P
(dengan asumsi Anda masuk sebagai pengguna tanpa hak istimewa).lsof -i -P | grep :3306
tidak mengembalikan apapun!Tambahkan beberapa poin di atas posting apesa yang luar biasa:
1) Anda dapat menggunakan perintah di bawah ini untuk memeriksa alamat ip server mysql sedang mendengarkan
2) Gunakan
FLUSH PRIVILEGES
untuk memaksa tabel hibah dimuat jika karena alasan tertentu perubahan tidak segera berlaku3) Jika firewall netfilter diaktifkan (
sudo ufw enable
) pada mesin server mysql, lakukan hal berikut untuk membuka port 3306 untuk akses jarak jauh:periksa status menggunakan
4) Setelah koneksi jarak jauh dibuat, itu dapat diverifikasi di mesin klien atau server menggunakan perintah
sumber
sudo ufw status
!!netstat -nlt | grep 3306
kembali dengan kosongMySQL hanya mendengarkan localhost, jika kita ingin mengaktifkan akses jarak jauhnya, maka kita perlu melakukan beberapa perubahan pada file my.cnf:
Kita perlu mengomentari baris bind-address dan skip-external-locking:
Setelah melakukan perubahan ini, kita perlu memulai ulang layanan mysql:
sumber
skip-external-locking
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Jika mengujinya di Windows, jangan lupa buka port 3306.
sumber
Anda menggunakan ubuntu 12 (yang cukup lama)
Pertama, Buka file /etc/mysql/mysql.conf.d/mysqld.cnf ( /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf di Ubuntu 14.04 dan versi sebelumnya
Di bawah [mysqld] Cari Baris, bind-address = 127.0.0.1 Dan ubah ke, bind-address = 0.0.0.0 atau komentari
Kemudian, Restart Server MysQL Ubuntu
systemctl restart mysql.service
Sekarang Server Ubuntu akan mengizinkan akses jarak jauh ke Server MySQL, Tetapi Anda tetap perlu mengkonfigurasi pengguna MySQL untuk mengizinkan akses dari host mana pun.
Pengguna harus
'username'@'%'
dengan semua dana yang diperlukanUntuk memastikan bahwa, server MySQL mendengarkan semua antarmuka, jalankan perintah netstat sebagai berikut.
netstat -tulnp | grep mysql
Semoga berhasil!
sumber