Maison > Article > base de données > Apprenez à démarrer et arrêter le service Mysql 2
3. Arrêtez le serveur
Pour démarrer le serveur manuellement, utilisez MySQLadmin :
%mysqladmin shutdown
Pour arrêter automatiquement le serveur, vous n'avez rien de spécial à faire . Les systèmes BSD arrêtent généralement les services en envoyant un signal TERM aux processus, qui soit y répondent correctement, soit sont brutalement tués. mysqld répond en se terminant lorsqu'il reçoit ce signal. Pour les systèmes de style System V qui utilisent mysql.server pour démarrer le serveur, le processus d'arrêt appellera le script avec un paramètre stop pour indiquer au serveur de se terminer, en supposant bien sûr que mysql.server est installé.
4. Comment reprendre le contrôle du serveur si vous ne parvenez pas à vous connecter au serveur
Dans certains cas, vous pouvez redémarrer manuellement le serveur car vous ne parvenez pas à vous y connecter. Bien sûr, c’est un peu contradictoire. Parce que généralement vous le désactivez manuellement en vous connectant au serveur, alors comment cela se passe-t-il ?
Premièrement, le mot de passe root MySQL peut avoir été défini sur une valeur que vous ne connaissez pas. Cela peut se produire lorsque vous modifiez le mot de passe, par exemple, si vous tapez accidentellement un caractère de contrôle invisible lors de la saisie du nouveau mot de passe. . Vous pouvez également oublier votre mot de passe.
Deuxièmement, la connexion à localhost se fait généralement via un fichier socket de domaine Unix, généralement /tmp/mysql.sock. Si le fichier socket est supprimé, les clients locaux ne peuvent pas se connecter. Cela peut se produire lorsque votre système exécute une tâche cron qui supprime les fichiers temporaires dans /tmp.
Si vous ne parvenez pas à vous connecter car vous avez perdu le fichier socket, vous pouvez simplement le recréer en redémarrant le serveur. Parce que le serveur le recrée au démarrage. L'astuce ici est que vous ne pouvez pas établir de connexion avec le socket car il a disparu, vous devez établir une connexion TCP/IP, par exemple, si l'hôte du serveur est pit.snake.net, vous pouvez vous connecter comme ceci :
% mysqladmin -p -u root -h pit.snake.net shutdown
Si le fichier socket est supprimé par une tâche cron, le problème se reproduira à moins que vous ne modifiiez la tâche cron ou n'utilisiez un fichier de socket socket différent, vous pouvez utiliser le fichier d'options globales pour spécifier un socket différent. Par exemple, si le répertoire de données est /usr/local/var, vous pouvez modifier le socket en ajoutant les lignes suivantes à /etc/my.cnf. Déplacez le fichier ici :
[mysqld]
socket=/usr/local/var/mysql.sock
[client]
socket=/usr/local/var/ mysql.sock
Spécifiez le nom de chemin du serveur et du client afin qu'ils utilisent tous les deux le même fichier socket. Si vous définissez uniquement le chemin du serveur, le client s'attendra toujours à exécuter le socket à l'emplacement d'origine et à redémarrer le serveur après la modification, l'obligeant à créer le socket au nouvel emplacement.
Si vous ne parvenez pas à vous connecter parce que vous avez oublié votre mot de passe root ou que vous l'avez défini sur une valeur différente de celle que vous pensiez, et que vous devez reprendre le contrôle du serveur, vous pouvez redéfinir le mot de passe :
Interrompre le serveur
Si vous vous connectez à l'hôte du serveur en tant que root, vous pouvez utiliser la commande kill pour terminer le serveur. Vous pouvez connaître l'ID du processus du serveur à l'aide de la commande ps ou en recherchant le fichier PID du serveur (généralement dans le répertoire de données).
Il est préférable d'essayer d'abord un kill normal qui envoie un signal TERM au serveur pour voir s'il répondra avec une terminaison normale. De cette façon, les tables et les journaux seront effacés correctement. Si le serveur se bloque et ne répond pas à un signal de terminaison gracieux, vous pouvez le forcer à le terminer avec kill -9. Il s'agit d'un dernier recours car il peut y avoir des modifications non vidées et vous risquez de laisser la table dans un état incohérent.
Si vous terminez le serveur avec kill -9, assurez-vous de vérifier vos tables avec myisamchk et isamchk avant de démarrer le serveur.
Utilisez l'option --skip-grant-table pour redémarrer le serveur.
Cela indique au serveur de ne pas utiliser la table d'autorisation pour authentifier la connexion, ce qui permet de se connecter en tant que root sans mot de passe. Une fois connecté, modifiez le mot de passe root.
Utilisez mysqladmin flush-privileges pour indiquer au serveur de recommencer à utiliser la table d'autorisation
Si votre version de mysqladmin ne reconnaît pas les privilèges Flash, essayez de recharger.
5. Exécuter plusieurs serveurs
La plupart exécuteront un seul serveur MySQL sur une machine donnée, mais il existe de nombreuses situations où il est utile d'exécuter plusieurs serveurs :
Vous souhaiterez peut-être tester une nouvelle version d'un serveur tout en laissant votre serveur de production en cours d'exécution. Dans ce cas, vous exécuteriez un code serveur différent.
Les systèmes d'exploitation limitent généralement le nombre de descripteurs de fichiers ouverts par processus. Si votre système a du mal à augmenter cette limite, l'exécution de plusieurs serveurs est un moyen de contourner la limite. Dans ce cas, vous exécutez peut-être plusieurs instances du serveur unifié.
Les FAI fournissent souvent à leurs clients leurs propres installations MySQL, où il est nécessaire d'impliquer un serveur séparé. Dans ce cas, vous pouvez exécuter plusieurs instances de la même version ou de versions différentes si différents clients souhaitent différentes versions de MySQL.
Naturellement, exécuter plusieurs serveurs est plus compliqué que d’exécuter un seul serveur. Si vous installez plusieurs versions, vous ne pouvez pas tout installer au même endroit. Lorsqu'un serveur est en cours d'exécution, certains paramètres doivent ou sont susceptibles d'être uniques à chaque serveur. Il s'agit notamment de l'emplacement d'installation du serveur, du chemin d'accès à son répertoire de données, du port TCP/IP et du chemin d'accès du socket de domaine UNIX utilisé pour exécuter le serveur. Le compte UNIX du serveur (si vous n'exécutez plus tous les serveurs sous le même compte). Si vous décidez d'exécuter plusieurs serveurs, veillez à faire attention aux paramètres que vous utilisez afin de ne pas le faire.
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!