Tutorial ini dimaksudkan untuk menjelaskan langkah-langkah yang diperlukan untuk memecahkan masalah “ERROR 2003 (HY000). Tidak dapat terhubung ke server MySQL pada '127. 0. 0. 1’ (111)” yang mungkin terjadi saat Anda mencoba mengakses server database MySQL
Sebelum melangkah lebih jauh, jika Anda adalah pengguna Linux yang baru mengenal MySQL/MariaDB, maka Anda dapat mempertimbangkan untuk mempelajari MySQL / MariaDB untuk Pemula – Bagian 1 dan 20 Perintah MySQL (Mysqladmin) untuk Administrasi Database di Linux juga
Di sisi lain, jika Anda sudah menjadi pengguna MySQL tingkat menengah/berpengalaman, Anda dapat menguasai 15 Tip Penyesuaian dan Pengoptimalan Kinerja MySQL/MariaDB yang Berguna ini
Catatan. Untuk tutorial ini, diasumsikan bahwa Anda telah menginstal server database mysql
Kembali ke titik fokus, apa saja kemungkinan penyebab kesalahan ini?
- Kegagalan jaringan terutama jika server database mysql berjalan di host jarak jauh
- Tidak ada server mysql yang berjalan di host yang disebutkan
- Firewall memblokir koneksi TCP-IP atau alasan terkait lainnya
Di bawah ini adalah langkah-langkah penting untuk menghadapinya
1. Jika server basis data berada di mesin jarak jauh, cobalah untuk menguji konektivitas server-klien menggunakan perintah ping, misalnya
$ ping server_ip_addressSetelah ada konektivitas, gunakan perintah $ ps -Af | grep mysqld 0 di bawah ini yang menunjukkan informasi tentang pemilihan proses aktif, bersama dengan perintah $ ps -Af | grep mysqld 1 dan grep, untuk memeriksa apakah daemon mysql berjalan di sistem Anda
$ ps -Af | grep mysqld _dimana pilihan
- $ ps -Af | grep mysqld _2 – mengaktifkan pemilihan semua proses
- $ ps -Af | grep mysqld _3 – mengaktifkan daftar format lengkap
Jika tidak ada output dari perintah sebelumnya, mulai layanan mysql sebagai berikut
$ sudo systemctl start mysql.service $ sudo systemctl start mariadb.service OR # sudo /etc/init.d/mysqld start _Setelah memulai layanan mysql, coba akses server database
$ mysql -u username -p -h host_address2. Jika Anda masih mendapatkan kesalahan yang sama, tentukan port (defaultnya adalah 3306) tempat daemon mysql mendengarkan dengan menjalankan perintah netstat
$ netstat -lnp | grep mysql _dimana pilihan
- $ ps -Af | grep mysqld _4 – menampilkan port mendengarkan
- $ ps -Af | grep mysqld _5 – memungkinkan tampilan alamat numerik
- $ ps -Af | grep mysqld _6 – menunjukkan PID dan nama program yang memiliki soket
Oleh karena itu gunakan opsi $ ps -Af | grep mysqld _7 untuk menentukan port yang Anda lihat dari output di atas saat mengakses server database
$ mysql -u username -p -h host_address -P port3. Jika semua perintah di atas berhasil dijalankan, tetapi Anda masih melihat kesalahan, buka file konfigurasi mysql
$ vi /etc/mysql/my.cnf OR $ vi /etc/mysql/mysql.conf.d/mysqld.cnfCari baris di bawah ini dan beri komentar menggunakan karakter $ ps -Af | grep mysqld 8
bind-address = 127.0.0.1Simpan file dan keluar, setelah itu restart layanan mysql seperti itu
$ sudo systemctl start mysql.service $ sudo systemctl start mariadb.service OR # sudo /etc/init.d/mysqld start _Namun, jika Anda menjalankan firewallD atau Iptables, coba tinjau layanan firewall dan buka port mysql, dengan asumsi firewall memblokir koneksi TCP-IP ke server mysql Anda
Itu saja. Apakah Anda tahu metode lain atau punya saran untuk mengatasi kesalahan koneksi MySQL di atas?
Saya mencoba menerapkan gambar mysql_ di Kubernetes lokal saya yang berjalan di kluster This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None 0 sebagai berikut
Saya mencoba This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None _1 dan membuat This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None 2 sebagai berikut
This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None _3
Ini adalah berkas This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None _4
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv-volume labels: type: local spec: storageClassName: manual capacity: storage: 20Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data"Saya melakukan This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None _5 dan berhasil dibuat
This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: NoneSaya melakukan This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None _6 dan berhasil dibuat
Tetapi ketika saya ingin menjalankan mysql di dalam pod terkait menggunakan This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None 8 lalu This is `mysql-depl.yaml` file: apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql strategy: type: Recreate template: metadata: labels: app: mysql spec: containers: - image: mysql name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_KEY ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim --- apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql clusterIP: None 9 perintah, ia meminta kata sandi dan setelah memasukkan kata sandi (ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 0) saya mengerti