Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah yang perlu saya lakukan jika docker tidak dapat menyambung ke mysql?

Apakah yang perlu saya lakukan jika docker tidak dapat menyambung ke mysql?

PHPz
PHPzasal
2023-04-18 09:48:125750semak imbas

Apabila menggunakan Docker untuk membina pangkalan data MySQL, anda kadangkala menghadapi masalah tidak dapat menyambung ke MySQL. Ini mungkin disebabkan oleh isu rangkaian, isu konfigurasi atau isu lain. Dalam artikel ini, kita akan membincangkan cara menyelesaikan masalah ini.

1. Semak sambungan rangkaian

Mula-mula, kita perlu memastikan bahawa sambungan rangkaian antara bekas Docker dan hos tempatan adalah normal, yang boleh dikesan melalui arahan ping. Buka terminal pada hos tempatan dan laksanakan arahan berikut:

$ ping <docker容器IP>

Antaranya, boleh diperolehi menggunakan perintah docker inspect

Jika anda boleh melakukan ping seperti biasa, sambungan rangkaian adalah normal; jika anda tidak boleh melakukan ping, anda perlu menyelesaikan masalah rangkaian.

2. Semak konfigurasi bekas MySQL

Apabila sambungan rangkaian normal, kita perlu menyemak fail konfigurasi bekas MySQL. Jalankan arahan berikut:

$ docker exec -it <container ID> /bin/bash
$ cd /etc/mysql
$ cat my.cnf

Di mana, ialah ID bekas MySQL.

Semak sama ada konfigurasi dalam fail my.cnf adalah betul, terutamanya untuk tetapan rangkaian.

3. Cipta pengguna MySQL dan benarkan

Jika konfigurasi bekas MySQL adalah normal, anda perlu menyemak sama ada pengguna MySQL yang sesuai telah dibuat dan dibenarkan.

Dalam bekas MySQL, laksanakan arahan berikut:

$ mysql -u root -p

Masukkan kata laluan root untuk memasuki konsol MySQL.

Laksanakan pernyataan sql berikut untuk mencipta pengguna:

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

Di mana 'nama pengguna' dan 'kata laluan' ialah nama pengguna dan kata laluan yang anda mahu cipta masing-masing.

Kemudian, beri kebenaran kepada pengguna:

GRANT ALL ON *.* TO 'username'@'%';

Di mana, 'nama pengguna' ialah nama pengguna yang baru anda buat.

Akhir sekali, laksanakan arahan berikut untuk menyimpan perubahan dan keluar dari konsol MySQL:

FLUSH PRIVILEGES;
EXIT;

4. Semak tetapan firewall

Jika anda masih tidak dapat menyambung ke MySQL , ia mungkin disebabkan oleh masalah tetapan firewall. Kami perlu mengesahkan sama ada terdapat tembok api yang menyekat sambungan MySQL.

Laksanakan arahan berikut pada hos tempatan untuk mengesahkan sama ada port diduduki oleh tembok api:

$ sudo netstat -tunlp | grep <MySQL容器端口>

Di mana, ialah nombor port yang didedahkan oleh MySQL perkhidmatan.

Jika port sudah diduduki, anda perlu mendayakan port tersebut. Mengambil sistem Ubuntu sebagai contoh, laksanakan arahan berikut untuk membuka port:

$ sudo ufw allow <MySQL容器端口>/tcp

di mana, ialah nombor port yang didedahkan oleh perkhidmatan MySQL.

Jika ia adalah sistem pengendalian lain, anda perlu membuka port mengikut tetapan sistem pengendalian yang sepadan.

5. Mulakan semula bekas MySQL

Akhir sekali, jika empat langkah di atas tidak menyelesaikan masalah, maka kita boleh cuba memulakan semula bekas MySQL.

Anda boleh menggunakan arahan berikut untuk memulakan semula bekas MySQL:

$ docker restart <container ID>

Di mana, ialah ID bekas MySQL.

Ringkasan

Masalah tidak dapat menyambung ke Docker MySQL mungkin disebabkan oleh banyak sebab, dan kita perlu menghapuskannya satu demi satu. Mula-mula sahkan sama ada sambungan rangkaian adalah normal, kemudian semak konfigurasi bekas MySQL, buat pengguna MySQL dan benarkannya, semak tetapan firewall, dan akhirnya cuba mulakan semula bekas MySQL. Jika tiada langkah di atas menyelesaikan masalah, anda boleh mempertimbangkan untuk menukar kepada imej MySQL yang lain atau mencari penyelesaian lain.

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika docker tidak dapat menyambung ke mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn