Cette rubrique présente des solutions aux problèmes fréquents rencontrés lors de l'installation, de la configuration et de la gestion de MySQL, afin de vous aider à maintenir un serveur stable.
Mots de passe utilisateur MySQL oubliés
Si vous avez oublié le mot de passe d'un utilisateur autre que root, utilisez le compte root pour le modifier directement. En revanche, si vous avez perdu le mot de passe root, arrêtez le service MySQL et redémarrez-le dans un mode spécial qui contourne les vérifications d'autorisation. Cette procédure vous permet de réinitialiser le mot de passe.
Mot de passe oublié pour un utilisateur non root
-
Récupérez la valeur
Hostassociée à l'utilisateur cible.# Replace with the actual username mysql -uroot -p -e "SELECT Host FROM mysql.user WHERE User = 'target_username';" -
Modifiez le mot de passe en fonction de la valeur
Hostidentifiée. Si plusieurs valeursHostsont associées à l'utilisateur, exécutez la commande pour chacune d'elles.# Replace with the actual username, password, and Host mysql -uroot -p -e "ALTER USER 'target_username'@'target_host' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;"
Mot de passe root oublié
La réinitialisation du mot de passe root nécessite l'arrêt du service MySQL.
-
Arrêtez le service MySQL en exécutant la commande suivante.
Alibaba Cloud Linux et CentOS
sudo systemctl stop mysqldUbuntu et Debian
sudo systemctl stop mysql -
Démarrez MySQL en mode temporaire et notez l'identifiant du processus (PID). Vous en aurez besoin ultérieurement pour terminer ce processus.
Remarque--skip-grant-tables: ignore la validation des autorisations et permet une connexion sans mot de passe.&: exécute le processus MySQL en arrière-plan. Le terminal renvoie un identifiant de processus (PID). Par exemple, dans la sortie[1] 1234, le PID est1234.
sudo -u mysql mysqld --skip-grant-tables & -
Rechargez les tables d'autorisation et modifiez le mot de passe root. Remplacez
<password>par votre nouveau mot de passe. Celui-ci doit respecter la politique de sécurité en vigueur : au moins 8 caractères, incluant une majuscule, une minuscule, un chiffre et un caractère spécial.mysql -uroot -e"FLUSH PRIVILEGES;" -e"ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';"Si le message d'erreur
Your password does not satisfy the current policy requirementss'affiche, cela signifie que votre mot de passe n'est pas conforme. Dans ce cas, terminez le processus MySQL, redémarrez-le en mode de contournement des autorisations et relancez la commande avec un mot de passe valide. -
Terminez le processus MySQL.
kill <process ID> -
Démarrez le service MySQL en exécutant la commande suivante.
Alibaba Cloud Linux et CentOS
sudo systemctl start mysqldUbuntu et Debian
sudo systemctl start mysql -
Connectez-vous avec le nouveau mot de passe. L'accès réussi à l'interface de ligne de commande MySQL confirme la réussite de la réinitialisation.
mysql -u root -p
Modification du répertoire de données MySQL
-
Arrêtez le service MySQL en exécutant la commande suivante.
Alibaba Cloud Linux et CentOS
sudo systemctl stop mysqldUbuntu et Debian
sudo systemctl stop mysql -
Dans le fichier de configuration
my.cnf(généralement situé dans/etc/my.cnf), modifiez la valeurdatadirpour indiquer le chemin du nouveau répertoire de données.datadir=/new/data/directory -
Copiez tous les fichiers et dossiers du répertoire de données d'origine vers le nouveau répertoire.
sudo cp -aR /old/data/directory/* /new/data/directory/ -
Démarrez le service MySQL en exécutant la commande suivante.
Alibaba Cloud Linux et CentOS
sudo systemctl start mysqldUbuntu et Debian
sudo systemctl start mysql
Erreur de démarrage MySQL : Permission denied
-
Consultez le fichier
error.logde MySQL pour identifier le message d'erreur précis.RemarqueL'emplacement par défaut de ce fichier est généralement
/var/log/mysqld.logou/var/log/mysql/error.log.[ERROR] [MY-010092] [Server] Can't start server: can't create PID file: Permission denied -
Repérez et terminez tous les processus
mysqldrésiduels.sudo ps aux | grep mysqld sudo kill -9 <process ID> -
Démarrez le service MySQL en exécutant la commande suivante.
Alibaba Cloud Linux et CentOS
sudo systemctl start mysqldUbuntu et Debian
sudo systemctl start mysql
Erreur de démarrage MySQL : File './binlog.index' not found
-
Consultez le fichier
error.logde MySQL pour identifier le message d'erreur précis.RemarqueL'emplacement par défaut de ce fichier est généralement
/var/log/mysqld.logou/var/log/mysql/error.log.mysqld: File './binlog.index' not found (OS errno 13 - Permission denied) -
Cette erreur résulte souvent d'une propriété de fichiers incorrecte dans le répertoire de données MySQL. Exécutez la commande suivante pour vérifier les propriétaires.
RemarqueLe répertoire de données par défaut est généralement
/var/lib/mysql. Si vous utilisez un répertoire personnalisé, adaptez la commande en conséquence.sudo ls -l /var/lib/mysql-rw-r----- 1 root root 56 Mar 19 15:51 auto.cnf -rw-r----- 1 root root 1551 Mar 19 15:51 binlog.000001 -rw-r----- 1 root root 16 Mar 19 15:51 binlog.index -rw------- 1 root root 1680 Mar 19 15:51 ca-key.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 ca.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 client-cert.pem -
Exécutez la commande suivante pour attribuer les droits appropriés à l'utilisateur et au groupe
mysql.sudo chown -R mysql:mysql <data_directory> -
Démarrez le service MySQL en exécutant la commande suivante.
Alibaba Cloud Linux et CentOS
sudo systemctl start mysqldUbuntu et Debian
sudo systemctl start mysql