Maison > base de données > tutoriel mysql > le corps du texte

Introduction à la méthode de démarrage et d'arrêt de MySQL à l'aide de la commande service

不言
Libérer: 2019-03-22 11:26:25
avant
7408 Les gens l'ont consulté

Ce que cet article vous apporte est une introduction à la méthode de démarrage et d'arrêt de mysql à l'aide de la commande service. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Après avoir installé MySQL, il est très difficile de démarrer et d'arrêter à chaque fois. Parfois, je ne me souviens pas d'avoir recherché en ligne et de voir que tout le monde utilise le service pour gérer les services. Je l'ai essayé et cela fonctionne vraiment. Il est recommandé à tout le monde de l’utiliser de cette façon.

Démarrer et arrêter le service mysql

# 启动
/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/tmp/mysql.sock
# 停止
kill `cat /usr/local/mysql/var/mysqld.pid`
Copier après la connexion

Démarrer et arrêter comme ceci nécessite de se souvenir du chemin de mysql et de l'emplacement de sauvegarde du pid, c'est donc plus gênant.

gestion des services du système de service

La commande service est utilisée pour gérer les services du système, tels que le démarrage (start), l'arrêt (stop), le redémarrage (restart), l'affichage de l'état (statut), etc. . La commande de service elle-même est un script shell utilisé pour appeler facilement le script pour effectuer des tâches. Elle recherche le script de service spécifié dans le répertoire /etc/init.d/.

Les commandes pertinentes incluent :

chkconfig : utilisé pour afficher et définir le niveau d'exécution du service

ntsysv : utilisé pour définir le démarrage automatique du service

Le service

exécute le service spécifié (appelé script initial System V), conserve uniquement les deux variables d'environnement LANG et TERM et définit le chemin actuel sur /. Si un script de service souhaite être géré par service, il doit au moins prendre en charge les commandes start et stop, et enregistrer le script dans le répertoire /etc/init.d/.

Comment utiliser le service

## 命令格式
Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]

# 查看指定服务的命令行使用帮助
service <service>
## mysqld 举例
$ service mysqld
Usage: mysqld  {start|stop|restart|reload|force-reload|status}  [ MySQL server options ]

# 启动、停止、重启指定服务
service <service> start|stop|restart
## mysqld举例restart,即先执行stop再执行start命令
$ service mysqld restart
Shutting down MySQL..                                      [  OK  ]
Starting MySQL.                                            [  OK  ]

# 显示指定服务的状态
$ service mysqld status
MySQL running (27390)                                      [  OK  ]

# 显示所有服务的状态
service --status-all

# 查看系统服务列表,以及每个服务的运行级别
chkconfig --list

# 设置指定服务开机时是否自动启动
chkconfig <service> on|off

# 以全屏幕文本界面设置服务开机时是否自动启动
# 必须以root启动,空格切换状态,tab切换按钮,上下鼠标移动光标
ntsysv
Copier après la connexion

En plus d'utiliser l'exemple mysqld, lorsque nous modifions le nom d'hôte, l'adresse IP et d'autres informations, nous devons également redémarrer fréquemment le réseau pour prendre effet À ce stade, nous pouvons appeler :

service network status|restart
Copier après la connexion

Utiliser le service pour gérer le service mysqld

Nous avons compris les connaissances de base, et maintenant nous pouvons commencer la transformation. le fichier mysql.server dans votre répertoire d'installation.

$ locate mysql.server
/usr/local/mysql/support-files/mysql.server
Copier après la connexion

Ce fichier est initialisé lors de l'installation. Il s'agit en fait d'un fichier de script qui prend en charge la saisie de différents paramètres pour exécuter différentes fonctions :

# 根据输入的命令执行不同的脚本,首先判断是否为start
case "$mode" in
  'start')
    # Start daemon

    # Safeguard (relative paths, core dumps..)
    cd $basedir

    echo $echo_n "Starting MySQL"
    # 查看该bin/mysqld_safe命令是否存在,如果不存在,就直接报错:找不到
    if test -x $bindir/mysqld_safe
    then
      # Give extra arguments to mysqld with the my.cnf file. This script
      # may be overwritten at next upgrade.
      # 直接执行mysqld_safe命令,并传入参数,然后创建pid文件
      $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
      wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

      # Make lock for RedHat / SuSE
      if test -w "$lockdir"
      then
        touch "$lock_file_path"
      fi

      exit $return_value
    else
      log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
    fi
    ;;

  'stop')
Copier après la connexion

Puis copiez. dans le répertoire /tmp/init.d/ :

cp /usr/local/mysql/support-files/mysql.server /tmp/init.d/mysqld
Copier après la connexion

À ce stade, vous pouvez appeler directement le service pour démarrer :

service mysqld start
Copier après la connexion

Certains des problèmes rencontrés

La théorie ci-dessus est très simple, mais nous avons quand même rencontré quelques problèmes lors du processus de démarrage. Le moyen le plus simple de résoudre le problème est de visualiser le fichier journal sur Google+. Ces deux méthodes peuvent le localiser et le résoudre très rapidement.

Le fichier de configuration est ignoré

Regardez directement le message d'erreur au démarrage :

$ service mysqld start
Warning: World-writable config file '/etc/my.cnf' is ignored
Starting MySQL.Warning: World-writable config file '/etc/my.cnf' is ignored
Copier après la connexion

Regardez directement la raison de l'erreur, qui indique que la configuration est globalement accessible en écriture les fichiers sont ignorés. Cette erreur signifie que le fichier de configuration peut être modifié par tous les utilisateurs, il existe donc une possibilité de falsification malveillante, donc la configuration de ce fichier ne sera pas introduite et ignorée.

La solution consiste à modifier le fichier pour qu'il soit lisible et inscriptible par les utilisateurs et les groupes d'utilisateurs, et uniquement lisible et non inscriptible par les autres utilisateurs :

chmod 664 /etc/my.cnf
Copier après la connexion

Le fichier PID ne peut pas être créé

Afficher directement Message d'erreur :

$ service mysqld start
Starting MySQL.The server quit without updating PID file (/usr/var/mysql/var/mysqld.pid).
Copier après la connexion

La raison de l'erreur montre qu'il s'est arrêté de manière inattendue au démarrage de MySQL car le fichier PID n'a pas été mis à jour.

Pour le moment, certaines personnes peuvent ne pas le comprendre. Cela n'a pas d'importance. Regardons directement le journal des erreurs :

2019-03-21 22:29:45 32896 [ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/usr/var/mysql/var/mysqld.pid' (Errcode: 2 - No such file or directory)
2019-03-21 22:29:45 32896 [ERROR] Can't start server: can't create PID file: No such file or directory
Copier après la connexion

Ce journal indique clairement que le fichier mysqld.pid. ne peut pas être créé, il s'agit soit d'un problème d'autorisations, soit d'un problème de chemin qui n'existe pas. Plus tard, j'ai découvert que le chemin était mal écrit, il suffit donc de le remplacer par le chemin correct.

Paramétrage du chemin du journal des erreurs :

$ vim my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/var/mysql/var/mysqld.pid
log-error = /user/local/mysql/log/mysql.err
Copier après la connexion

la commande log est abandonnée

Le problème ci-dessus est résolu. Nous continuons à exécuter et trouvons toujours le même message d'erreur, mais. le journal Le fichier est différent :

$ service mysqld start
Starting MySQL.The server quit without updating PID file (/usr/var/mysql/var/mysqld.pid).

# 日志文件
2019-03-21 22:37:33 0 [ERROR] /usr/local/mysql/bin/mysqld: ambiguous option '--log=/usr/local/mysql/log/mysql.log' (log-bin, log_slave_updates)
2019-03-21 22:37:33 0 [ERROR] Aborting
Copier après la connexion

J'ai trouvé le message d'erreur du journal : option vague --log, je ne comprends pas cela, vous pouvez voir la raison en recherchant sur Google : le --log La commande a été abandonnée depuis longtemps. Utilisez maintenant --general-log à la place. Modifiez simplement le fichier de configuration my.cnf :

$ vim my.cnf
[mysqld]
general-log = /user/local/mysql/log/mysql.log
Copier après la connexion

Démarrer avec succès

Après avoir résolu les problèmes ci-dessus, il peut enfin être démarré avec succès. À ce stade, nous pouvons facilement démarrer et arrêter le. Service mysqld. Et rechargez :

$ service mysqld start
Starting MySQL.                                            [  OK  ]
Copier après la connexion

Résumé

L'outil de gestion des services peut nous aider à démarrer et arrêter rapidement les applications. Dans le processus de démarrage de MySQL, la maîtrise de l'affichage des fichiers journaux et de la recherche Google est pour nous la plus grande aide.

Cet article est terminé ici. Pour un contenu plus passionnant, vous pouvez prêter attention à la colonne Vidéo du didacticiel MySQL sur le site Web PHP chinois !

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!

source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal