Saya baru saja menginstal server ubuntu baru dengan mysql (percona 5.5), tetapi ia menolak untuk menerima koneksi dari host jarak jauh
Inilah yang terjadi jika saya mencoba menyambung ke server ini dari jarak jauh:
mysql -h10.0.0.2 -uroot -pmypassowrd
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.0.2' (111)
telnet 10.0.0.2 3306
Trying 10.0.0.2...
telnet: Unable to connect to remote host: Connection refused
Ketika saya memeriksa apakah mysql mendengarkan koneksi jarak jauh saya melihat ini:
sudo netstat -ntlup | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 127018/mysqld
Seperti yang Anda lihat itu mengatakan 127.0.0.1:3306
yang berarti "Saya hanya menerima koneksi lokal".
Saya memeriksa variabel saya skip_networking
dan bind-address
- semuanya dimatikan:
mysql> show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like '%bind%';
Empty set (0.00 sec)
Saya memiliki server lain dengan konfigurasi yang benar-benar sama dan berfungsi dengan baik:
sudo netstat -ntlup | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2431/mysqld
Apa yang bisa menjadi alasan untuk ini? Bagaimana cara membuat mysql menanggapi koneksi jarak jauh?
bind_address
hanya tersedia sejak versi 5.6 ( bugs.mysql.com/bug.php?id=44355 ), sehingga akan mengembalikan set kosong di v5.5 bahkan jika sudah diatur.Jawaban:
Cobalah untuk menambahkan
bind-address = 0.0.0.0
ke[mysqld]
bagian Andamy.cnf
dan restart mysqld .sumber
/etc/mysql/mysql.conf.d/mysqld.cnf
Itu bisa disebabkan oleh tabel pengguna database mysql (gunakan mysql; tunjukkan tabel;). Jika ikatan ke 0.0.0.0 tidak berfungsi untuk Anda, cobalah untuk memberikan host Anda '%' di tempat 'localhost' di tabel itu.
Misalnya, coba buat pengguna seperti:
semut mencoba terhubung dengan pengguna itu.
sumber
Ketika semuanya gagal dan Anda yakin bahwa server IS mendengarkan pada port default dan Anda berusaha untuk terhubung dengan klien mysql dengan putus asa dari host lain, cobalah untuk menentukan port pada URL dari perintah mysql.
Aneh karena saya harus menggunakan sintaks berikut:
Saya telah menemukan ini (bug?) Benar-benar secara tidak sengaja (setelah kehilangan rambut saya :)).
Setup saya: debian jessie, mysql 5.7.18 baru, pengguna / db dibuat, bind-address berkomentar-out, mysqld restart
sumber
Saya baru saja mengalami masalah ini dan masalah saya sepertinya terkait dengan firewall. BTW - Terima kasih @Temnovit untuk perintah pemecahan masalah Mysql.
Saya menggunakan netstat untuk memberi tahu server sedang berjalan dan pada port yang benar. Saya juga bisa tahu server saya tidak menerima koneksi pada port itu dengan perintah telnet sederhana.
Mengikuti jawaban bermanfaat lainnya pada perintah firewall Fedora saya bisa membuka port yang benar.
Perintah telnet saya kemudian berhasil.
Jika Anda masih memiliki masalah, kemungkinan masalah izin pengguna.
sumber
Saya telah
mariadb
menginstal Soulution adalah untuk memodifikasi yangbind-address
terletak di/etc/mysql/mariadb.conf.d/50-server.cnf
sumber
Solusi yang dijelaskan dalam tautan di bawah ini harus menyelesaikan masalah Anda http://www.debianhelp.co.uk/remotemysql.htm
sumber