Tyypilliset MySQL-virheet ja niiden korjausmenetelmät

Tämä oppaasegmentti käsittelee useimmin kohtamiaan MySQL-virheitä ja tarjoaa yksityiskohtaiset ohjeet niiden ratkaisemiseen. Olettaen, että olet tietokannanhallitsija tai kehittäjä, joka työskentelee MySQL-tietokannoilla, näiden yleisten ongelmien ymmärtäminen voi säästää aikasi ja vaivastasi tietokantajärjestelmien ylläpidossa.

Pääsy kielletty käyttäjälle

Syy: Tämä virhe ilmenee tyypillisesti silloin, kun käyttäjällä, joka yrittää muodostaa yhteyttä MySQL-palvelimeen, ei ole tarvittavia oikeuksia tai salasana on väärä.

  1. Varmista, että käytät oikeaa käyttäjänimeä ja salasanaa. Tarkista kaksinkertaisesti tunnistetietojasi kirjoitusvirheistä.
  2. Jos olet varma tunnistetiedoistasi, kirjaudu MySQL:iin pääkäyttäjänä (esim. root) ja tarkista käyttäjän oikeudet:
    mysql -u root -p
    SHOW GRANTS FOR 'username'@'host';
  3. Jos tarvitaan, myönnä sopivat oikeudet käyttäjälle:
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'host' IDENTIFIED BY 'password' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

Liian monet yhteyspyynnöt

Syy: Tämä virhe viittaa siihen, että MySQL-palvelin on saavuttanut sallitun enimmäismäärän yhteyksiä. Se voi tapahtua suuren samanaikaisen käyttäjämäärän vuoksi tai jos yhteyksiä ei suljeta oikein.

  1. Tarkista nykyinen max_connections-asetus:
    SHOW VARIABLES LIKE 'max_connections';
  2. Kasvata max_connections-arvoa MySQL-kokoonpanotiedostossasi (yleensä sijaitsee kohdassa /etc/my.cnf tai /etc/mysql/my.cnf):
    [mysqld]
    max_connections = 500
  3. Käynnistä MySQL-palvelu uudelleen muutosten soveltamiseksi:
    sudo systemctl restart mysql
  4. Tarkista sovelluskoodisi, varmistaaksesi, että yhteydet suljetaan käytön jälkeen.

Taulu on täynnä

Syy: Tämä virhe ilmenee silloin, kun levyn osalla, jossa MySQL tallentaa tietotiedostonsa, ei ole riittävästi tilaa tai jos tietyllä taululla on saavuttanut enimmäiskoon.

  1. Tarkista käytettävissä oleva levyn tila:
    df -h
  2. Jos tarvitaan, vapauta tilaa poistamalla tarpeeton materiaali tai siirtämällä tietoja toiselle osalle.
  3. Tarkista tietyn taulun ja sen osien koko:
    SELECT table_schema "Tietokanta", 
                   table_name "Taulu", 
                   round(((data_length + index_length) / 1024 / 1024), 2) "Koko MB:ssä" 
    FROM information_schema.TABLES 
    WHERE table_schema = 'your_database' AND table_name = 'your_table';
  4. Jos taulu on osioitu, harkitse osioiden optimointia tai uudelleenjärjestämistä.

Ei voida yhdistää MySQL-palvelimeen

Syy: Tämä virhe voi johtua useista syistä, kuten väärästä isäntätiedosta, palvelimen ei olevan käynnissä, palomuurin rajoituksista tai verkkoproblemeista.

  1. Varmista, että MySQL-palvelin on käynnissä:
    sudo systemctl status mysql
  2. Jos se ei ole käynnissä, käynnistä palvelu:
    sudo systemctl start mysql
  3. Tarkista, onko palomuurissa sääntöjä, jotka estävät MySQL-porttia (oletusarvoisesti 3306):
    sudo iptables -L | grep 3306
    sudo ufw status | grep 3306
  4. Jos tarvitaan, salli liikenne MySQL-portilla:
    sudo ufw allow 3306/tcp
  5. Varmista, että käytät oikeaa isäntää ja porttia yhteysmerkkijonossasi.

Vianmääritystipit

  • Tarkista aina MySQL-virhelokit saadaksesi lisätietoja virheistä. Lokit sijaitsevat tyypillisesti kohdassa /var/log/mysql/error.log.
  • Harkitse työkalujen, kuten mysqladmin, käyttämistä MySQL-palvelimen hallinnointiin ja valvontaan.
  • Varmista säännölliset varmuuskopiot tietokannoistasi välttääksesi datan menetyksen mahdollisissa ongelmissa.