Saya mendapatkan kesalahan:
"Sambungan terputus ke server MySQL saat 'membaca paket komunikasi awal, kesalahan sistem: 0"
sementara saya akan menghubungkan db saya.
Jika saya menggunakan localhost semuanya berfungsi dengan baik. Tetapi ketika saya menggunakan alamat IP langsung saya seperti di bawah ini, ada kesalahan:
mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());
Buka file konfigurasi mysql bernama my.cnf dan coba cari "bind-address", di sini ganti pengaturan (127.0.0.1 ATAU localhost) dengan ip server langsung Anda (ip yang Anda gunakan dalam fungsi mysql_connect)
Ini pasti akan menyelesaikan masalah.
Terima kasih
sumber
127.0.0.1
tempat yang berlaku sehingga akses langsung dari host lain tidak mungkin. Ini mencegah serangan brute force jarak jauh dan tidak memaparkan kemungkinan masalah keamanan ke jaringan. Jika aplikasi Anda terletak di mesin yang sama (yang merupakan pengaturan hosting yang sangat umum), gunakan127.0.0.1
resp.localhost
sebagai host mysql dan itu akan bekerja dengan cara yang sama seperti mengikat layanan ke antarmuka eksternal Anda dan menggunakannya sebagai host mysql. Jika aplikasi Anda berada di tempat lain, gunakan jaringan internal jika memungkinkan.1) Izinkan koneksi jarak jauh ke MySQL. Edit file:
Baris komentar:
Mulai ulang MySQL:
2) Buat pengguna untuk koneksi jarak jauh.
3) Dalam kasus saya, saya perlu menghubungkan dari Windows ke mesin VirtualBox dari jarak jauh dengan Ubuntu. Jadi saya perlu mengizinkan port 3306 di iptables:
sumber
FLUSH PRIVILEGES
setelah membuat pengguna baru.Mengalami masalah ini saat menyiapkan server slave baru. Ditemukan itu adalah alamat IP server slave tidak ada dari server master
/etc/hosts.allow
file . Menambahkan alamat IP dan membiarkan saya terhubung ke server master.Perhatikan bahwa saya menggunakan
hosts.allow
danhosts.deny
untuk mengontrol akses.sumber
allow
saatdeny
memilikiALL: ALL
...Saya punya masalah ini dan akhirnya menjadi admin sys sebelum mengubah port MySQL sedang berjalan. MySQL Workbench berusaha menyambung ke standar 3306 tetapi server berjalan pada 20300.
sumber
Masalah pada kasus saya adalah MySQL hanya mengikat ke lo di linux. untuk menyelesaikan masalah saya telah mengedit my.cnf (ditemukan di /etc/mysql/my.cnf) menghapus baris bind-address = 127.0.0.1
ini memungkinkan mysql untuk mengikat ke antarmuka jaringan apa pun
sumber
Kesalahan ini terjadi pada saya ketika mencoba terhubung ke Google Cloud SQL menggunakan MySQL Workbench 6.3.
Setelah sedikit penelitian saya menemukan bahwa alamat IP saya telah diubah oleh penyedia internet dan dia tidak diizinkan di Cloud SQL.
Saya mengizinkannya dan kembali bekerja.
sumber
Saya mengalami kesalahan yang sama persis ketika menghubungkan dari meja kerja MySQL. Begini cara saya memperbaikinya. File konfigurasi /etc/my.cnf saya telah menetapkan nilai bind-address ke alamat IP server. Ini harus dilakukan untuk mengatur replikasi. Bagaimanapun, saya menyelesaikannya dengan melakukan dua hal:
misalnya
sumber
Masalahnya bagi saya adalah bahwa permintaan DNS diblokir oleh FW dalam subnet. Solusinya adalah menonaktifkan pencarian DNS di dalam MySQL.
sumber
Saya baru mengatur mysql pada kotak windows. Saya mendapat kesalahan OP ketika mencoba terhubung dengan klien Navicat MySql di kotak yang sama. Saya harus menentukan 127.0.0.1 sebagai tuan rumah, dan yang mendapatkannya.
localhost, atau alamat ip aktual server keduanya tidak berfungsi.
sumber
Kesalahan berarti bahwa itu tidak menerima respons dari port yang diharapkannya menemukan server aktif. Penyebabnya berkisar dari menghubungi mesin yang salah (Untuk salah satu dari sejumlah alasan) hingga server tidak berada di port yang diharapkan.
Periksa port mana yang terikat pada server Anda di /etc/mysql/my.cnf. Apakah itu sesuai dengan apa yang ada dalam pernyataan koneksi Anda. Jika cocok, coba sambungkan dengan mysql dari server itu sendiri dan dari baris perintah mesin tempat Anda menjalankan klien. Jika berfungsi membentuk satu tempat dan bukan tempat lain maka Anda mungkin memiliki masalah konfigurasi firewall / router.
sumber
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
, bukanLost connection to MySQL server
pesannya.dalam kasus saya, saya memiliki SEMUA: SEMUA di hosts.deny. Mengubah ini ke ALL: PARANOID memecahkan masalah saya saat menghubungkan melalui ssh
sumber
Masalahnya sangat bodoh bagi saya.
Saya biasa mendapatkan masalah yang sama pada mesin AWS EC2 Ubuntu (MariaDB diinstal secara lokal untuk saat ini), jadi saya mencoba membuat SSH tunneling, dan memiliki masalah yang sama. Jadi saya mencoba ssh tunnel over terminal:
Dan itu memberitahuku ini:
Saya mengubah pengguna ssh dari root ke ubuntu, sama seperti konfigurasi ssh saya, dan itu terhubung dengan baik.
Jadi, periksa pengguna yang menghubungkan SSH Anda.
Saya mengawasi ini, jadi ini juga setengah jam dari waktu saya, jadi saya harap ini akan bermanfaat bagi Anda.
sumber
Bagi saya file konfigurasi ditemukan "/etc/mysql/mysql.conf.d/mysqld.cnf" mengomentari alamat bind melakukan trik.
Seperti yang dapat kita lihat di sini: Alih-alih melewatkan jejaring, defaultnya adalah mendengarkan hanya di localhost yang lebih kompatibel dan tidak kalah aman.
sumber
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
dan bukannyabind-address = 111.112.113.114
saya gunakanbind-address = 127.0.0.1
. Pengaturan terowongan SSH diatur seperti yang dijelaskan pada hostpresto.com/community/tutorials/... Kerja bagus! Terima kasih!Berlari ke masalah yang sama ini, Bind Address bolak-balik tanpa hasil. Solusi bagi saya adalah pembilasan hak istimewa .
sumber
Bagi saya pengaturan
bind-address = 0.0.0.0
dimysql/my.cnf
bekerja. Itu pada dasarnya mendengarkan semua alamat (tetapi masih satu port) lalu.Dan jangan lupa restart server Anda:
systemctl restart mysql
sumber
Saya hanya memiliki masalah yang sama, tetapi dalam kasus saya, saya menyelesaikannya dengan
sumber
Satu lagi alasan ...
Saya berlari ke server Ubuntu di mana semuanya dikustomisasi dan tidak dapat terhubung karena kesalahan yang sama.
Pengaturan ini ada di dalam
/etc/ssh/sshd_config
Setelah berubah menjadi
Saya dapat terhubung dari jarak jauh ke DB MySQL saya
sumber
Saya mencoba menghubungkan wadah docker db saya di Ubuntu 18.04, masalah yang sama.
Pertama periksa perangkat Anda dengan menjalankan
nmcli dev
untuk memeriksa apakah perangkatdocker0
terhubung.Jika tidak terhubung, cobalah untuk me-restart layanan buruh pelabuhan:
sudo service docker restart
sumber
Dalam kasus saya itu adalah port wifi universitas memblokir 3306. Saya dapat terhubung dengan menggunakan hotspot seluler.
Ubah ke hotspot seluler atau jaringan lain, dan jika berfungsi di sana, maka Anda tahu bahwa jaringan asli memblokir port 3306. Jika Anda mendapatkan kesalahan yang sama pada lebih dari 1 jaringan, maka Anda tahu itu khusus untuk mesin Anda.
sumber
Firewalld
memblokir alamat IP. jadi untuk memberikan akses, gunakan perintah ini:firewall-cmd --permanent --zone = dipercaya --add-source = YOUR_IP / 32
firewall-cmd --permanent --zone = tepercaya --add-port = 3306 / tcp
firewall-cmd --muat ulang
sumber
Saat menghubungkan ke Mysql dari jarak jauh, saya mendapatkan kesalahan. Saya memiliki peringatan ini di
/var/log/mysqld.log
:Saya baru saja menambahkan baris ini ke
/etc/hosts
file:Masalah terpecahkan! Tidak menggunakan
skip-name-resolve
menyebabkan beberapa kesalahan pada aplikasi lokal saya saat menghubungkan ke MySQL.sumber
Saya memiliki masalah yang sama. Untuk memperbaikinya saya baru saja mengubah host dari localhost: 3306 menjadi hanya localhost. Jadi kesalahan dapat terjadi ketika Anda memisahkan port yang tidak tepat untuk koneksi. Lebih baik membiarkannya sebagai default.
sumber
-P 3306
Izin baca-tulis direktori database juga masalah yang saya temukan. Pastikan aplikasi Anda dapat menemukan file di lokasi db. Coba chmod 777 untuk pengujian.
sumber
Saya menghadapi masalah yang sama. Saya memeriksa dan mencoba untuk mengatur AllowTcpForwarding Ya tetapi itu hilang di sshd_config saya jadi tidak ada bantuan. Saya tidak mengubah sshd_config atau my.cnf. Pastikan nama host ssh TIDAK sama dengan nama host mysql (gunakan localhost).
Di meja kerja, pilih + untuk menambahkan koneksi baru dan atur yang berikut:
Tes koneksi. Itu harus berhasil kemudian tekan OK.Viola!
sumber
Jika bind-address tidak ada dalam file konfigurasi Anda dan mysql di-host pada AWS, silakan periksa grup keamanan Anda. Dalam kondisi ideal, aturan masuk harus menerima semua koneksi dari port 3306 dan aturan keluar harus merespons kembali ke semua IP yang valid.
sumber
Saya telah melakukan di bawah 3 langkah kemudian bekerja untuk saya.
bind-address = "YOUR MACHINE IP"
dalammy.cnf
file di /etc/my.cnfMulai ulang layanan dengan perintah:
service httpd restart
GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;
sumber
Saya memiliki kesalahan yang sama (menghubungkan ke MYSQL pada aws melalui MYSql Workbench). Saya digunakan untuk menghubungkan baik-baik saja sebelumnya dan tiba-tiba berhenti berfungsi dan tidak akan berfungsi lagi). Koneksi saya melalui SSH dilindungi oleh keyfile.
Ternyata saya kehabisan waktu. Jadi saya meningkatkan batas waktu koneksi SQL menjadi 30 detik (dari standar 10) dan bagus untuk kembali. hal-hal untuk dicoba (jika Anda berada dalam pengaturan serupa)
mysql -u [username] -p [database]
? Ini akan memeriksa masalah hak pengguna dll.sumber
Ruang disk yang terbatas dapat menyebabkan kesalahan ini.
Periksa ruang disk Anda
Cobalah menambah ruang jika ada 100% disk yang digunakan.
Dalam kasus saya: Saya memiliki kotak Vagrant (8.0.1) (Ubuntu 16.04) Kapasitas disk mysql saya adalah 10GB, saya meningkatkannya menjadi 20GB
Kemudian restart mysql
sumber
Jika Anda menghadapi erorr yang terhubung dari jarak jauh, buka opsi mysql jarak jauh di cpanel dan kemudian tambahkan% di Host (% wildcard diizinkan).
sumber