Port 3306 tampaknya ditutup di server Ubuntu saya

33

Saya memiliki dua server VPS , dan keduanya telah menginstal MySQL , satu untuk pengujian dan satu untuk pengembangan. Salah satu server saya tidak akan membiarkan saya terhubung dari luar. Dengan pengguna;

'mytestuser' @ '%'

Menurut pencari port terbuka , port 3306 untuk server yang melanggar tampaknya ditutup. Saya memiliki program C ++ dan Java untuk mendengarkan saya sendiri pada port arbitrer tanpa masalah. Mengapa ini terjadi dan bagaimana saya bisa memperbaikinya?

Ubuntu yang diinstal adalah Ubuntu 11.10 (GNU / Linux 2.6.32-042stab072.10 x86_64)

Hasil netstat -tupledi setiap server

Server menyinggung

tcp        0      0 localhost.lo:submission *:*                     LISTEN      root       39967664    -

Server yang bekerja

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -
Andy
sumber

Jawaban:

76

Masalahnya adalah server hanya mendengarkan secara internal.

Menghapus garis bind-address 127.0.0.1dari /etc/mysql/my.cnfmenyelesaikan masalah.

Versi Ubuntu yang lebih baru (≥16,04) mungkin memiliki baris ini /etc/mysql/mysql.conf.d/mysqld.cnf.

Andy
sumber
2
Ini berhasil untuk saya. Perhatikan nama file yang benar /etc/mysql/my.cnf, bukan /etc/mysql/my.conf.
Larry Battle
Saya mengubah bind-address saya untuk mencocokkan alamat ip eksternal server dan itu berhasil untuk saya.
Buttle Butkus
Hapus baris dengan lengkap dan server akan mendengarkan SEMUA antarmuka
s1mmel
Anda menyelamatkan hari saya, berusaha menyelesaikan masalah ini selama beberapa minggu, terima kasih!
budiantoip
9

Saran saya, jika Anda yakin port ditutup (saya merasa aneh jika VPS menutup port itu) adalah mengubah file konfigurasi MySQL untuk menggunakan yang lain.

Cukup buka file konfigurasi di terminal sudo nano /etc/mysql/mysql.conf,, dan cari [mysqld]bagian tersebut. Di dalamnya, cari baris yang berbunyi port = 3306. Ubah ke port lain yang tidak digunakan dan simpan file.

Kemudian cukup restart VPS atau restart layanan, seperti sudo service mysql restart.

Hanya untuk mencatat bahwa, jika file mysql.conftidak dalam yang saya sebutkan di atas, bisa di tempat lain ini:

/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf

Dan jika serviceperintah itu tidak berhasil, maka lakukan ini:

sudo /etc/init.d/mysql restart

Jika masalah tetap ada maka dalam kasus saya saya akan memeriksa iptables (saya benar-benar akan menghapus semua yang ada di iptables hanya untuk memulai yang baru jika ini bisa menjadi pilihan) atau opsi yang diaktifkan firewall lainnya.

Karena mereka VPS, saya juga akan memeriksa Panel Kontrol VPS untuk melihat apakah ada opsi yang dapat memblokir port.

Selain itu, saya akan menjalankan nmapVPS untuk melihat port apa yang telah Anda buka. Anda perlu menjalankannya dari luar VPS untuk melihat port apa yang telah dibuka.

netstat -tuplen juga merupakan ide bagus untuk melihat port apa yang dibuka di server dan port mana yang dalam mode DENGARKAN.

Luis Alvarado
sumber
Hai, saya mencobanya di port lain dan masih ketinggalan, saya juga mencoba 'iptables -A INPUT -i eth0 -p tcp -m tcp --port PORT -j ACCEPT' tetapi tidak berhasil :( .. sunting im tidak o eth0 .. mungkin masih ada harapan
Andy
@Andy Diperbarui menjawab untuk memasukkan beberapa saran lagi.
Luis Alvarado
Terima kasih atas sarannya, Luis. Aku akan memeriksa ini.
Andy
Saya telah memperbarui hasil netstat -tuple ke pertanyaan. Sepertinya ada masalah di sini.
Andy
6

Saya memperbaikinya dengan mengubah bind-address 127.0.0.1ke bind-address 0.0.0.0dalam /etc/mysql/mysql.conf.d(sehingga MySQL mendengarkan pada semua port).

Saya juga mengatur akun pengguna mysql untuk digunakan dari jarak jauh (lihat https://stackoverflow.com/a/24171107/132374 ).

Jon Onstott
sumber
6

Saya menggunakan metode ini:

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

Tidak perlu mengubah file konfigurasi lainnya, dan tidak ada port tambahan yang dibuka secara default.

ftcosta
sumber
sudo ufw allow 3306/tcpSaya mencoba mengedit tetapi tidak membiarkan saya
Adam
1

Mungkin saja konfigurasi Anda ada di direktori /etc/mysql/mysql.conf.d/mysqld.cnf, verifikasi jika bukan itu masalahnya.

musim dingin
sumber
1
Saya mencoba mencari tahu selama tiga jam sebelum saya melihat ini, terima kasih!
Oliver Ni