Kesalahan 2002 (hy000 tidak dapat terhubung ke server mysql pada 115)

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?

  1. Kegagalan jaringan terutama jika server database mysql berjalan di host jarak jauh
  2. Tidak ada server mysql yang berjalan di host yang disebutkan
  3. 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_address
Kesalahan 2002 (hy000 tidak dapat terhubung ke server mysql pada 115)
Kesalahan 2002 (hy000 tidak dapat terhubung ke server mysql pada 115)
Mesin Host Ping

Setelah 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

  1. $ ps -Af | grep mysqld
    
    _2 – mengaktifkan pemilihan semua proses
  2. $ ps -Af | grep mysqld
    
    _3 – mengaktifkan daftar format lengkap
Kesalahan 2002 (hy000 tidak dapat terhubung ke server mysql pada 115)
Kesalahan 2002 (hy000 tidak dapat terhubung ke server mysql pada 115)
Periksa Proses MySQL

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_address  

2. 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

  1. $ ps -Af | grep mysqld
    
    _4 – menampilkan port mendengarkan
  2. $ ps -Af | grep mysqld
    
    _5 – memungkinkan tampilan alamat numerik
  3. $ ps -Af | grep mysqld
    
    _6 – menunjukkan PID dan nama program yang memiliki soket
Kesalahan 2002 (hy000 tidak dapat terhubung ke server mysql pada 115)
Kesalahan 2002 (hy000 tidak dapat terhubung ke server mysql pada 115)
Temukan Nomor Port MySQL

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 port

3. 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.cnf 

Cari baris di bawah ini dan beri komentar menggunakan karakter

$ ps -Af | grep mysqld
8

bind-address = 127.0.0.1 

Simpan 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: None

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

_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

Bagaimana cara memperbaiki kesalahan 2002 HY000?

Singkatnya, kami menyelesaikan 'kesalahan MySQL 2002 (hy000)' dengan mudah dengan cara sederhana seperti memulai ulang server MySQL, memperbaiki ruang disk, memperbarui alamat pengikatan, etc.

Apa kesalahan koneksi 2002 di MySQL?

Kesalahan (2002) Tidak dapat tersambung. biasanya berarti tidak ada server MySQL yang berjalan di sistem atau Anda menggunakan nama file soket Unix atau nomor port TCP/IP yang salah saat mencoba menyambung ke server.

Bagaimana cara memeriksa apakah MySQL dapat dijangkau di port 3306?

Cara yang benar adalah menggunakan. sudo lsof -i. 3306 .

Bagaimana cara memperbaiki koneksi MySQL ditolak?

Periksa apakah nama pengguna DB, kata sandi DB, host database, dan port database sudah benar . (jika Anda tidak yakin, hubungi administrator basis data Anda atau periksa akun hosting web Anda untuk kredensial terkini). Jika file konfigurasi mereferensikan host = "localhost" , Anda dapat mencoba mengubahnya menjadi 127. 0.