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ä.
- Varmista, että käytät oikeaa käyttäjänimeä ja salasanaa. Tarkista kaksinkertaisesti tunnistetietojasi kirjoitusvirheistä.
- 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'; - 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.
- Tarkista nykyinen max_connections-asetus:
SHOW VARIABLES LIKE 'max_connections'; - Kasvata max_connections-arvoa MySQL-kokoonpanotiedostossasi (yleensä sijaitsee kohdassa
/etc/my.cnftai/etc/mysql/my.cnf):[mysqld] max_connections = 500 - Käynnistä MySQL-palvelu uudelleen muutosten soveltamiseksi:
sudo systemctl restart mysql - 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.
- Tarkista käytettävissä oleva levyn tila:
df -h - Jos tarvitaan, vapauta tilaa poistamalla tarpeeton materiaali tai siirtämällä tietoja toiselle osalle.
- 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'; - 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.
- Varmista, että MySQL-palvelin on käynnissä:
sudo systemctl status mysql - Jos se ei ole käynnissä, käynnistä palvelu:
sudo systemctl start mysql - Tarkista, onko palomuurissa sääntöjä, jotka estävät MySQL-porttia (oletusarvoisesti 3306):
sudo iptables -L | grep 3306 sudo ufw status | grep 3306 - Jos tarvitaan, salli liikenne MySQL-portilla:
sudo ufw allow 3306/tcp - 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.