En tant que programmeurs, MySQL est certainement quelque chose que nous utiliserons, et c'est très important. Cependant, parfois certains problèmes surviendront inévitablement dans la base de données MySQL au travail, alors comment les gérer ? Parlons de quelques problèmes et solutions MySQL courants que nous rencontrons dans notre travail quotidien.
1. Mot de passe root MySQL oublié
1. Connectez-vous au serveur sur lequel se trouve la base de données et manuellement. tuer le processus MySQL.
(1) Connectez-vous au serveur sur lequel se trouve la base de données et tuez manuellement le processus MySQL :
root@bogon:/data/mysql# kill `cat ./mysql .pid`
Parmi eux, mysql.pid fait référence au fichier pid dans le répertoire de données MySQL, qui enregistre le numéro de processus du service MySQL.
(2) Utilisez l'option --skip-grant-tables pour redémarrer le service MySQL :
zj@bogon:/data/mysql$ sudo /usr/local/mysql/bin/ mysqld -- L'option skip-grant-tables --user=root &
--skip-grant-tables signifie ignorer l'authentification par table d'autorisations lors du démarrage du service MySQL. Une fois démarré, root n'aura pas besoin de mot de passe pour se connecter à MySQL.
(3) Connectez-vous à mysql avec l'utilisateur root avec un mot de passe vide, et changez le mot de passe root :
zj@bogon:/usr/local/mysql/bin$ mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3Server version: 5.7.18-log Source distribution Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> set password = password('123456'); ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statementMySQL [(none)]> use mysql Database changed MySQL [mysql]> update user set authentication_string=password('123456') where user="root" and host="localhost"; Query OK, 1 row affected, 1 warning (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 1MySQL [mysql]> flush privileges; Query OK, 0 rows affected (0.00 sec) MySQL [mysql]> exit; Bye **************************************************************** zj@bogon:/usr/local/mysql/bin$ mysql -uroot -p123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7Server version: 5.7.18-log Source distribution Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
Puisque l'option --skip-grant-tables est utilisée pour démarrer , utilisez "set password "La commande pour changer le mot de passe a échoué. Après avoir directement mis à jour le champuthentication_string de la table user (la version de test est 5.7.18, le champ de mot de passe de certaines versions est 'mot de passe'), le mot de passe a été modifié avec succès. . Actualisez le tableau des autorisations pour revalider l'authentification des autorisations. Lorsque vous vous reconnecterez en tant que root, vous pourrez utiliser le mot de passe que vous venez de modifier.
2. Comment gérer la corruption de table dans le moteur de stockage myisam
Parfois, vous pouvez rencontrer une corruption de table dans myisam. Les symptômes d'une table corrompue sont généralement que les requêtes sont interrompues de manière inattendue et que les erreurs suivantes apparaissent :
'table_name.frm' est verrouillé pour les modifications
Impossible de trouver le fichier 'tbl_name.MYYI' (errcode : nnn)
Fin inattendue du fichier
Fichier d'enregistrement corrompu
Obtention de l'erreur nnn du processeur de table.
Habituellement, il existe deux solutions :
1. Utilisez l'outil myisamchk
Utilisez l'outil myisamchk fourni avec MySQL pour réparer :
shell> -r tablename
La signification du paramètre -r est recovery La méthode ci-dessus peut résoudre presque tous les problèmes. Sinon, utilisez la commande :
shell>
Le paramètre -o signifie --safe-recover, ce qui permet une réparation plus sûre.
2. Utilisez la commande sql
Utilisez les commandes check table et repair table de MySQL pour réparer ensemble. check table est utilisé pour vérifier si la table de réparation est utilisée pour réparer le mauvais ; tableau.
3. Le problème de l'espace disque insuffisant dans le répertoire de données
Une fois le système mis en ligne, à mesure que la quantité de données continue d'augmenter, vous constaterez que le L'espace disponible dans le répertoire de données devient de plus en plus petit, entraînant ainsi des risques de sécurité pour l'application.
1. Pour les tables du moteur de stockage myisam
Pour les tables du moteur de stockage myisam, vous pouvez utiliser les options suivantes lors de la création de la table pour spécifier séparément le répertoire de données et le répertoire d'index. à stocker dans différents espaces disque, et Par défaut, il sera placé dans le répertoire de données en même temps :
data directory = 'chemin absolu vers le répertoire'index directory = 'chemin absolu vers le répertoire'
Si la table a été créée, vous pouvez uniquement arrêter ou verrouiller la table pour empêcher les modifications de la table, puis déplacer les fichiers de données et les fichiers d'index de la table sur une partition suffisante du disque, puis créer un fichier symbolique. lien dans le fichier d'origine.
2. Pour les tables du moteur de stockage innodb
Étant donné que les fichiers de données et les fichiers d'index sont stockés ensemble, ils ne peuvent pas être séparés. Lorsque l'espace disque est insuffisant, un nouveau fichier de données peut être ajouté et placé sur un disque disposant de suffisamment d'espace.
La méthode d'implémentation spécifique consiste à ajouter ce fichier dans le paramètre innodb_data_file_path, et le chemin est écrit comme le chemin absolu du nouveau disque.
Par exemple, s'il n'y a pas suffisamment d'espace sous /home et que vous souhaitez ajouter un nouveau fichier sous /home1 qui peut automatiquement développer les données, alors les paramètres peuvent être écrits comme ceci :
innodb_data_file_path = /home /ibdata1:2000M;/home1 /ibdata2:2000M:autoextend
Une fois le paramètre modifié, la base de données doit être redémarrée pour qu'elle prenne effet.
4. Problèmes avec la résolution inverse DNS (les versions après 5.0 ignorent la résolution inverse du nom de domaine par défaut)
Exécutez la commande show processlist sur le client, parfois beaucoup de des problèmes apparaîtront Processus, similaires à :
utilisateur non authentifié | 192.168.10.10:55644 | null | connect null | login | ne disparaîtra pas et l'application ne pourra pas répondre normalement, ce qui entraînera une paralysie du système.
5. Comment se connecter à la base de données après la perte de mysql.sock
Lors de la connexion à la base de données sur le serveur MySQL lui-même, il apparaît souvent que mysql.sock n'existe pas, ce qui entraîne un problème de connexion. En effet, si vous spécifiez localhost comme nom d'hôte, mysqladmin utilise par défaut une connexion de fichier socket Unix au lieu de tcp/ip. Ce fichier socket (généralement nommé mysql.sock) est souvent supprimé pour diverses raisons. Grâce à l'option --protocol=TCP|SOCKET|PIPE|MEMORY, l'utilisateur peut spécifier explicitement le protocole de connexion. Ce qui suit montre une connexion réussie à l'aide du protocole TCP après un échec de socket Unix.
1. Connexion socket Unix : zj@bogon:~$ mysqlERROR 2002 (HY000) : Impossible de se connecter au serveur MySQL local via le socket '/tmp/mysql.sock' (2 )2. connexion TCP
cet article partage cinq problèmes et solutions que MySQL peut rencontrer. J'espère que cela pourra aider tout le monde. Si vous le trouvez utile, veuillez le récupérer rapidement.
Comment configurer la base de données MySQL la plus sécurisée ?
Afficher la méthode d'indexation de la table de données MySQL
Questions sur les déclencheurs MySQL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!