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`
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
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
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
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')
und sie dann kopieren das /tmp/init.d/-Verzeichnis:
cp /usr/local/mysql/support-files/mysql.server /tmp/init.d/mysqld
An diesem Punkt können Sie den Dienst direkt aufrufen, um zu starten:
service mysqld start
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
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
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).
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
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
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
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
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 ]
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!