Heim > Datenbank > MySQL-Tutorial > Hauptteil

Einführung in die Methode zum Starten und Stoppen von MySQL mithilfe des Servicebefehls

不言
Freigeben: 2019-03-22 11:26:25
nach vorne
7414 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in die Methode zum Starten und Stoppen von MySQL mit dem Service-Befehl. Ich hoffe, dass er für Freunde hilfreich ist.

Nach der Installation von MySQL ist es sehr mühsam, jedes Mal zu starten und zu stoppen. Manchmal kann ich mich nicht daran erinnern, online zu suchen und festzustellen, dass jeder Dienst zum Verwalten von Diensten verwendet. Es wird jedem empfohlen, es auf diese Weise zu verwenden.

Starten und Stoppen des MySQL-Dienstes

# 启动
/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`
Nach dem Login kopieren

Das Starten und Stoppen auf diese Weise erfordert, dass man sich den Pfad von MySQL und den Speicherort der PID merkt, was problematischer ist.

Dienstsystemdienstverwaltung

Der Dienstbefehl wird zum Verwalten von Systemdiensten verwendet, z. B. Starten (Start), Stoppen (Stopp), Neustarten (Neustart), Anzeigen des Status (Status) usw . Der Dienstbefehl selbst ist ein Shell-Skript, mit dem das Skript bequem aufgerufen werden kann, um Aufgaben auszuführen. Es sucht im Verzeichnis /etc/init.d/ nach dem angegebenen Dienstskript.

Zugehörige Befehle umfassen:

chkconfig: wird zum Anzeigen und Festlegen der Ausführungsebene des Dienstes verwendet

ntsysv: wird zum Festlegen des automatischen Starts des Dienstes verwendet

Der Dienst führt den angegebenen Dienst aus (System V-Anfangsskript genannt), behält nur die beiden Umgebungsvariablen LANG und TERM bei und legt den aktuellen Pfad auf / fest. Wenn ein Dienstskript vom Dienst verwaltet werden soll, muss es mindestens die Start- und Stoppbefehle unterstützen und das Skript im Verzeichnis /etc/init.d/ speichern.

So verwenden Sie den Dienst

## 命令格式
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
Nach dem Login kopieren

Zusätzlich zur Verwendung des MySQLd-Beispiels müssen wir beim Ändern des Hostnamens, der IP-Adresse und anderer Informationen auch häufig das Netzwerk neu starten, damit es wirksam wird. Zu diesem Zeitpunkt können wir Folgendes aufrufen:

service network status|restart
Nach dem Login kopieren

Verwenden Sie den Dienst, um den MySQLd-Dienst zu verwalten

Wir haben das Grundwissen bereits verstanden und können jetzt mit der Transformation beginnen. Zuerst müssen wir das finden mysql.server-Datei in Ihrem Installationsverzeichnis.

$ locate mysql.server
/usr/local/mysql/support-files/mysql.server
Nach dem Login kopieren

Diese Datei wird während der Installation initialisiert. Es handelt sich tatsächlich um eine Skriptdatei, die die Eingabe verschiedener Parameter zur Ausführung verschiedener Funktionen unterstützt. Wir können ihre Startfunktion anzeigen:

# 根据输入的命令执行不同的脚本,首先判断是否为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')
Nach dem Login kopieren

und sie dann kopieren das /tmp/init.d/-Verzeichnis:

cp /usr/local/mysql/support-files/mysql.server /tmp/init.d/mysqld
Nach dem Login kopieren

An diesem Punkt können Sie den Dienst direkt aufrufen, um zu starten:

service mysqld start
Nach dem Login kopieren

Einige Probleme sind aufgetreten

Oben Die Theorie ist Sehr einfach, aber während des Startvorgangs sind immer noch einige Probleme aufgetreten. Der einfachste Weg, das Problem zu lösen, besteht darin, die Protokolldatei auf Google+ anzuzeigen. Diese beiden Methoden können es sehr schnell finden und lösen.

Die Konfigurationsdatei wird ignoriert

Sehen Sie sich direkt die Fehlermeldung beim Start an:

$ 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
Nach dem Login kopieren

Sehen Sie sich direkt den Grund für den Fehler an, der darauf hinweist, dass Konfigurationsdateien global beschreibbar sind ignoriert. Dieser Fehler bedeutet, dass die Konfigurationsdatei von allen Benutzern geändert werden kann, sodass die Möglichkeit einer böswilligen Manipulation besteht und die Konfiguration dieser Datei nicht eingeführt und ignoriert wird.

Die Lösung besteht darin, die Datei so zu ändern, dass sie für Benutzer und Benutzergruppen lesbar und beschreibbar ist und nur für andere Benutzer lesbar und nicht beschreibbar:

chmod 664 /etc/my.cnf
Nach dem Login kopieren

Die PID-Datei kann nicht erstellt werden

Schauen Sie sich direkt die Fehlermeldung an:

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

Der Grund für den Fehler ist, dass er beim Start unerwartet beendet wurde MySQL, weil die PID-Datei nicht aktualisiert wurde.

Zu diesem Zeitpunkt verstehen es einige Leute möglicherweise nicht. Schauen wir uns das Fehlerprotokoll direkt an:

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
Nach dem Login kopieren

Dieses Protokoll besagt eindeutig, dass die Datei mysqld.pid nicht sein kann erstellt, oder es handelt sich um ein Berechtigungsproblem, oder der Pfad existiert nicht. Später habe ich festgestellt, dass der Pfad falsch geschrieben wurde, also ändern Sie ihn einfach in den richtigen Pfad.

Einstellung des Fehlerprotokollpfads:

$ 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
Nach dem Login kopieren

Protokollbefehl wurde abgebrochen

Das obige Problem wird weiterhin ausgeführt und findet immer noch die gleiche Fehlermeldung, aber das Protokoll Datei ist anders:

$ 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
Nach dem Login kopieren

Es wurde eine Protokollfehlermeldung gefunden: vage Option --log Ich verstehe das nicht. Sie können den Grund sehen, indem Sie bei Google suchen: Der Befehl --log wurde aufgegeben Verwenden Sie jetzt stattdessen --general-log. Ändern Sie einfach die Konfigurationsdatei my.cnf:

$ vim my.cnf
[mysqld]
general-log = /user/local/mysql/log/mysql.log
Nach dem Login kopieren

Erfolgreich starten

Nachdem die oben genannten Probleme gelöst wurden, können wir es endlich erfolgreich starten, stoppen und neu laden mysqld service:

$ service mysqld start
Starting MySQL.                                            [  OK  ]
Nach dem Login kopieren

Zusammenfassung

Das Service-Service-Management-Tool kann uns dabei helfen, Anwendungen schnell zu starten und zu stoppen. Beim Starten von MySQL ist die Beherrschung der Anzeige von Protokolldateien und der Google-Suche für uns die größte Hilfe.

Dieser Artikel ist hier zu Ende. Weitere spannende Inhalte finden Sie in der Spalte MySQL-Tutorial-Video auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zum Starten und Stoppen von MySQL mithilfe des Servicebefehls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage