Tip Berguna Untuk Memecahkan Masalah Kesalahan Umum Di MySQL

Tip Berguna Untuk Memecahkan Masalah Kesalahan Umum Di MySQL

Mysql adalah sistem manajemen basis data relasional sumber terbuka yang banyak digunakan (Rdms) dimiliki oleh Peramal. Selama bertahun-tahun menjadi pilihan default untuk aplikasi berbasis web dan masih tetap populer dibandingkan dengan mesin database lainnya.

Baca juga: Cara menginstal mysql terbaru di rhel/centos dan fedora

Mysql dirancang dan dioptimalkan untuk aplikasi web - ini membentuk bagian integral dari aplikasi berbasis web utama seperti Facebook, Twitter, Wikipedia, Youtube, dan banyak lagi.

Apakah situs Anda atau aplikasi web didukung oleh Mysql? Dalam artikel terperinci ini, kami akan menjelaskan cara memecahkan masalah dan kesalahan umum dalam Mysql server database. Kami akan menjelaskan bagaimana menentukan penyebab masalah dan apa yang harus dilakukan untuk menyelesaikannya.

1. Tidak dapat terhubung ke server MySQL lokal

Salah satu kesalahan koneksi klien ke server di MySQL adalah “ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.kaus kaki '(2)".

Tidak dapat terhubung ke server MySQL lokal

Kesalahan ini menunjukkan bahwa tidak ada Mysql server (mysqld) berjalan pada sistem host atau bahwa Anda telah menentukan nama file soket unix yang salah atau TCP/IP port saat mencoba terhubung ke server.

Pastikan server berjalan dengan memeriksa proses bernama mysqld di host server database Anda menggunakan perintah ps dan perintah grep bersama -sama seperti yang ditunjukkan.

$ PS XA | grep mysqld | grep -v mysqld 

Jika perintah di atas tidak menunjukkan output, maka server database tidak berjalan. Oleh karena itu klien tidak dapat terhubung dengannya. Untuk memulai server, jalankan perintah SystemCTL berikut.

$ sudo systemctl mulai mysql #debian/ubuntu $ sudo systemctl mulai mysqld #rhel/centos/fedora 

Untuk memverifikasi Mysql Status Layanan, gunakan perintah berikut.

$ sudo systemctl status mysql #debian/ubuntu $ sudo systemctl status mysqld #rhel/centos/fedora 
Periksa status mysql

Dari output dari perintah di atas, Mysql Layanan telah gagal. Dalam kasus seperti itu, Anda dapat mencoba memulai ulang dan memeriksa statusnya sekali lagi.

$ sudo systemctl restart mysql $ sudo systemctl status mysql 
Restart mysql dan verifikasi status

Selain itu, jika server berjalan seperti yang ditunjukkan oleh perintah berikut, tetapi Anda masih melihat kesalahan di atas, Anda juga harus memverifikasi bahwa TCP/IP Port diblokir oleh firewall atau layanan pemblokiran port apa pun.

$ PS XA | grep mysqld | grep -v mysqld 

Untuk menemukan port, server mendengarkan, gunakan perintah netstat seperti yang ditunjukkan.

$ sudo netstat -tlpn | grep "mysql" 

2. Tidak dapat terhubung ke server mysql

Kesalahan koneksi lain yang biasa ditemui adalah “(2003) tidak dapat terhubung ke server mysql di 'server' (10061)”, Yang berarti bahwa koneksi jaringan telah ditolak.

Di sini, mulailah dengan memeriksa bahwa ada a Mysql server berjalan pada sistem seperti yang ditunjukkan di atas. Pastikan juga bahwa server memiliki koneksi jaringan diaktifkan dan bahwa port jaringan yang Anda gunakan untuk terhubung adalah yang dikonfigurasi di server.

Kesalahan umum lainnya yang mungkin Anda temui saat Anda mencoba terhubung ke server MySQL adalah:

ERROR 2003: Tidak dapat terhubung ke server MySQL di 'host_name' (111) ERROR 2002: Tidak dapat terhubung ke server MySQL lokal melalui socket '/tmp/mysql.kaus kaki '(111) 

Kesalahan ini menunjukkan bahwa server mungkin sedang berjalan, namun, Anda mencoba terhubung menggunakan a TCP/IP port, bernama pipa, atau file soket unix berbeda dari yang ada di mana server mendengarkan.

3. Akses menolak kesalahan di mysql

Di dalam Mysql, Akun pengguna didefinisikan dalam hal a nama belakang dan host klien atau host dari mana pengguna dapat terhubung ke server. Selain itu, akun juga dapat memiliki kredensial otentikasi seperti kata sandi.

Meskipun ada banyak penyebab berbeda "Akses ditolak"Kesalahan, salah satu penyebab umum terkait dengan akun MySQL bahwa server mengizinkan program klien untuk digunakan saat menghubungkan. Itu menunjukkan itu nama belakang ditentukan dalam koneksi tidak memiliki hak istimewa untuk mengakses database.

MySQL memungkinkan pembuatan akun yang memungkinkan pengguna klien untuk terhubung ke server dan mengakses data yang dikelola oleh server. Dalam hal ini, jika Anda menemukan akses ditolak kesalahan, Periksa apakah akun pengguna diizinkan untuk terhubung ke server melalui program klien yang Anda gunakan, dan mungkin host dari mana koneksi berasal.

Anda dapat melihat hak istimewa apa yang dimiliki akun yang diberikan dengan menjalankan Tunjukkan hibah perintah seperti yang ditunjukkan.

> Tampilkan hibah untuk 'tecmint'@'localhost'; 

Anda dapat memberikan hak istimewa kepada pengguna tertentu pada database tertentu ke alamat IP jarak jauh menggunakan perintah berikut di MySQL Shell.

> memberikan semua hak istimewa di *.test_db ke 'tecmint'@'192.168.0.100 '; > hak istimewa flush; 

Lebih-lebih lagi, Akses menolak kesalahan juga dapat dihasilkan dari masalah dengan menghubungkan ke mySQL, lihat kesalahan yang dijelaskan sebelumnya.

4. Koneksi yang hilang ke server MySQL

Anda mungkin mengalami kesalahan ini karena salah satu alasan berikut: Konektivitas jaringan yang buruk, waktu koneksi habis atau Masalah dengan Blob nilai yang lebih besar dari max_allowed_packet. Dalam hal masalah koneksi jaringan, pastikan Anda memiliki koneksi jaringan yang baik terutama jika Anda mengakses server database jarak jauh.

Jika itu a waktu koneksi habis masalah, terutama saat Mysql sedang mencoba menggunakan koneksi awal ke server, meningkatkan nilai connect_timeout parameter. Tetapi dalam hal ini Nilai gumpalan yang lebih besar dari max_allowed_packet, Anda perlu menetapkan nilai yang lebih tinggi untuk max_allowed_packet di Anda /etc/my.CNF file konfigurasi di bawah [mysqld] atau [klien] bagian seperti yang ditunjukkan.

[mysqld] connect_timeout = 100 max_allowed_packet = 500m 

Jika Mysql File konfigurasi tidak dapat diakses untuk Anda, maka Anda dapat mengatur nilai ini menggunakan perintah berikut di MySQL Shell.

> Set Global Connect_Timeout = 100; > Set global max_allowed_packet = 524288000; 

5. Terlalu banyak koneksi mysql

Dalam kasus a Mysql klien bertemu "Terlalu banyak koneksi"Kesalahan, itu berarti semua koneksi yang tersedia digunakan oleh klien lain. Jumlah koneksi (default 151) dikendalikan oleh max_connections variabel sistem; Anda dapat memperbaiki masalah dengan meningkatkan nilainya untuk mengizinkan lebih banyak koneksi di Anda /etc/my.CNF file konfigurasi.

[mysqld] max_connections = 1000 

6. Keluar dari memori mysql

Jika Anda menjalankan kueri menggunakan Mysql Program klien dan menghadapi kesalahan yang dimaksud, itu berarti bahwa MySQL tidak memiliki cukup memori untuk menyimpan seluruh hasil kueri.

Langkah pertama adalah memastikan bahwa kueri benar, jika ya, maka lakukan hal berikut:

  • Jika Anda menggunakan klien MySQL secara langsung, mulai --sakelar cepat, untuk menonaktifkan hasil yang di -cache atau
  • Jika Anda menggunakan Myodbc Driver, Configuration User Interface (UI) memiliki tab canggih untuk bendera. Memeriksa "JANGAN Hasil cache“.

Alat hebat lainnya adalah, Tuner mysql - skrip berguna yang akan terhubung ke server MySQL yang sedang berjalan dan memberikan saran tentang bagaimana hal itu dapat dikonfigurasi untuk kinerja yang lebih tinggi.

$ sudo apt-get install mysqltuner #debian/ubuntu $ sudo yum install mysqltuner #rhel/centos/fedora $ mysqltuner 

Untuk optimasi MySQL dan kiat penyetelan kinerja, baca artikel kami: 15 Tips Tuning dan Optimalisasi Kinerja MySQL/MariaDB yang Berguna.

7. Mysql terus menabrak

Jika Anda mengalami masalah ini, Anda harus mencoba mencari tahu apakah masalahnya adalah Mysql server mati atau apakah itu klien dengan masalah. Perhatikan bahwa banyak server crash disebabkan oleh file data yang rusak atau file indeks.

Anda dapat memeriksa status server untuk menetapkan berapa lama sudah berjalan dan berjalan.

$ sudo systemctl status mysql #debian/ubuntu $ sudo systemctl status mysqld #rhel/centos/fedora 

Atau, jalankan perintah mysqladmin berikut untuk menemukan uptime dari server mysql.

$ sudo mysqladmin versi -p 
Temukan MySQL Server Uptime

Solusi lain termasuk tetapi tidak terbatas untuk menghentikan Mysql server dan mengaktifkan debugging, lalu mulai layanan lagi. Anda dapat mencoba membuat test case yang dapat digunakan untuk mengulangi masalahnya. Selain itu, buka jendela terminal tambahan dan jalankan perintah berikut untuk menampilkan statistik proses MySQL saat Anda menjalankan kueri lain:

$ sudo mysqladmin -i status 5 atau $ sudo mysqladmin -i 5 -r status 

Intinya: menentukan apa yang menyebabkan masalah atau kesalahan

Meskipun kami telah melihat beberapa hal yang umum Mysql masalah dan kesalahan dan juga memberikan cara untuk memecahkan masalah dan menyelesaikannya, hal yang paling penting dengan mendiagnosis kesalahan adalah memahami apa artinya (dalam hal apa yang menyebabkannya).

Jadi bagaimana Anda bisa menentukan ini? Poin -poin berikut akan memandu Anda tentang cara memastikan apa yang sebenarnya menyebabkan masalah:

  1. Langkah pertama dan terpenting adalah melihat ke log mysql yang disimpan di direktori /var/log/mysql/. Anda dapat menggunakan utilitas baris perintah seperti ekor untuk membaca file log.
  2. Jika layanan MySQL gagal memulai, periksa statusnya menggunakan SystemCTL atau gunakan journetctl (dengan -xe bendera) Perintah di bawah Systemd untuk memeriksa masalah.
  3. Anda juga dapat memeriksa file log sistem seperti /var/log/pesan atau serupa karena alasan masalah Anda.
  4. Coba gunakan alat seperti mytop, pandang, atas, ps, atau htop untuk memeriksa program mana yang mengambil semua CPU atau mengunci mesin atau untuk memeriksa apakah Anda kehabisan memori, ruang disk, deskriptor file, atau sumber daya penting lainnya.
  5. Dengan asumsi masalah itu adalah beberapa proses pelarian, Anda selalu dapat mencoba membunuhnya (menggunakan utilitas pkill atau bunuh) sehingga mySQL bekerja secara normal.
  6. Seandainya itu mysqld Server menyebabkan masalah, Anda dapat menjalankan perintah: mysqladmin -u root ping atau mysqladmin -u root ProcessList untuk mendapatkan tanggapan dari itu.
  7. Jika masalahnya dengan program klien Anda saat mencoba terhubung ke server mysql, periksa mengapa itu tidak berfungsi dengan baik, cobalah untuk mendapatkan output apa pun darinya untuk tujuan pemecahan masalah.

Anda mungkin juga ingin membaca artikel terkait MySQL berikut ini:

  1. Pelajari Mysql / Mariadb untuk Pemula - Bagian 1
  2. Cara memantau database mysql/mariadb menggunakan netData di centos 7
  3. Cara mentransfer semua database MySQL dari server lama ke server baru
  4. Mytop - Alat yang berguna untuk memantau kinerja MySQL/MariaDB di Linux
  5. 12 Praktik Terbaik Keamanan Mysql/Mariadb untuk Linux

Untuk informasi lebih lanjut, konsultasikan dengan manual referensi MySQL tentang masalah dan kesalahan umum, itu secara komprehensif mencantumkan masalah umum dan pesan kesalahan yang mungkin Anda temui saat menggunakan MySQL, termasuk yang telah kita bahas di atas dan banyak lagi.