linux停止mysql服務命令有:1、使用命令service停止,語法如“service mysqld stopRedirecting to /bin/systemctl”;2、使用命令systemctl停止,語法如“/bin/systemctl stop mysqld.service”;3、使用命令mysqladmin停止,語法如“mysqladmin -uroot”。
Linux 啟動/重啟/停止 MySQL 數據庫的命令
一、啟動 MySQL 數據庫的命令
(一)使用命令 service 啟動
[root@htlwk0001host?/]#?service?mysqld?startRedirecting?to?/bin/systemctl?start?mysqld.service
說明:
可以成功啟動 MySQL 數據庫服務,不過實際是重定向到命令 systemctl 來啟動服務的。
(二)使用命令 systemctl 啟動
[root@htlwk0001host?~]#?systemctl?start?mysqld.service
如果沒有設置相關的環境變量,你可以進入到命令 systemctl 所在目錄后再執行上述的命令語句,或者在命令終端直接輸入命令完整的路徑來執行:
[root@htlwk0001host?~]#?/bin/systemctl?start?mysqld.service
不知道命令所在目錄,你可以使用命令 which 來查詢。
二、停止 MySQL 數據庫的命令
(一)使用命令 service 停止
[root@htlwk0001host /]# service mysqld stopRedirecting to /bin/systemctl stop mysqld.service
說明:
(1)可以成功停止 MySQL 數據庫服務,不過實際是重定向到命令 systemctl 來停止服務的。
(2)如果是 ubuntu 系統,停止數據庫的命令是:service mysql stop
命令 service 在哪里?
[root@htlwk0001host ~]# which service /usr/sbin/service
注意:目錄 /sbin 下的命令只有用戶 root 才有權限使用。
命令 systemctl 在哪里?
[root@htlwk0001host ~]# which systemctl /usr/bin/systemctl
(二)使用命令 systemctl 停止
[root@htlwk0001host?~]#?/bin/systemctl?stop?mysqld.service
若配置了環境變量,則不必帶上完整的路徑,直接輸入命令即可:
[root@htlwk0001host?~]#?systemctl?stop?mysqld.service
(三)使用命令 mysqladmin 停止
使用該命令停止數據庫服務,其實需要登錄數據庫才行,所以需要輸入登錄數據庫的用戶名和密碼,登錄成功后才執行命令選項 shutdown,命令語句如下:
[root@htlwk0001host ~]# mysqladmin -uroot -p shutdown
三、重啟 MySQL 數據庫的命令
(一)使用命令 service 重啟
[root@htlwk0001host?~]#?service?mysqld?restartRedirecting?to?/bin/systemctl?restart?mysqld.service
說明:
也是重定向到命令 systemctl 來重啟服務的。
(二)使用命令 systemctl 重啟
[root@htlwk0001host?home]#?/bin/systemctl?restart?mysqld.service
四、怎么查看 MySQL 是否啟動
(一)通過命令 pgrep 查看
[root@htlwk0001host?~]#?pgrep?-l?mysqld1060114?mysqld
說明:
命令 grep 是查找系統當前運行的進程,如上所示,可以根據進程名稱找到結果,說明進程 mysqld 正在運行中。
(二)通過命令 ps 查看
[root@htlwk0001host ~]# ps aux | grep mysqlmysql ? ?1060114 ?1.5 ?4.9 1604076 182836 ? ? ? ?Sl ? 08:33 ? 0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid root ? ? 1060165 ?0.0 ?0.0 ?12320 ? 972 pts/0 ? ?S+ ? 08:33 ? 0:00 grep --color=auto mysql
說明:
如上所示的查找結果,進程 mysqld 是后臺進程(即守護進程 daemonize),進程狀態是 sl ,表示該進程是一個子進程,且處于休眠狀態,如果 MySQL 沒有啟動是查找不到這個進程的,查找到了就說明數據庫已經啟動了。
查找結果說明:
該進程屬于用戶 mysql,進程 ID 是 1060114,CPU 占用時間百分比 1.5%,內存占用百分比 4.9%,可以使用的虛擬內存大小是 1604076 千字節,進程占用的物流內存是 182836 千字節,進程啟動的時間是 8:33(年月日看系統當前的時間) ,實際使用 CPU 的時間是 0(應該沒有更新吧!)
(三)通過命令 cat 查看
[root@htlwk0001host ~]# cat /proc/1060114/statusName: mysqld ? ? ? ? ? ? ? ? # 進程名稱Umask: 0026 # 用戶權限屏蔽位,實際權限=預設權限-Umask State: S (sleeping) # 進程狀態,可中斷的睡眠狀態Tgid: 1060114 # 線程組Id,等于Pid Ngid: 0 Pid: 1060114 # 進程IdPPid: 1 # 父進程Id,啟動PidTracerPid: 0 # 跟蹤進程的PidUid: 27 27 27 27 # Uid/Euid/Suid/Fsuid 擁有者Id/有效用戶Id/Suid(Set User ID)/Fsuid(file system user ID)Gid: 27 27 27 27 # Gid/Egid/Sgid/Fsgid 對照Uid來理解FDSize: 128 # 文件描述符的最大個數Groups: 27 # 啟動該進程的用戶所屬的組的IdNStgid: 1060114 NSpid: 1060114 NSpgid: 1060113 NSsid: 1060113 VmPeak: 1604620 kB ? ? ? ? ? ? ? ? ? ? # 表示進程所占用最大虛擬內存大小,即進程所使用的虛擬內存的峰值VmSize: 1604620 kB # 表示進程當前使用的虛擬內存大小VmLck: ? ? ? 0 kB # 表示被鎖定的內存大小,即已經鎖住的物理內存的大小(鎖住的物理內存不能交換到硬盤)VmPin: ? ? ? 0 kB VmHWM: ?183668 kB # 表示進程所占用物理內存的峰值VmRSS: ?183632 kB # 表示進程當前占用物理內存的大小(與procrank中的RSS)RssAnon: ?166396 kB RssFile: ? 17236 kB RssShmem: ? ? ? 0 kB VmData: ?549388 kB # 表示進程占用的數據段的大小VmStk: ? ? 132 kB # 表示進程堆棧段的大小,即進程占用的棧的大小VmExe: ? 25480 kB # 表示進程代碼的大小,進程占用的代碼段大小(不包括庫)VmLib: ? ?7596 kB # 表示進程所使用共享庫的大小,進程所加載的動態庫所占用的內存大小(可能與其它進程共享)VmPTE: ? ? 696 kB # 表示進程頁表項的大小,進程占用的頁表大小(交換表項數量)VmSwap: ? ? ? 0 kB # 進程所使用的交換區的大小HugetlbPages: ? ? ? 0 kB # Huge Translation Lookaside Buffer Pages 巨大的快速查找緩沖頁表CoreDumping: 0 # 核心轉儲數據大小Threads: 48 # 共享使用該信號描述符的任務的個數SigQ: 0/14419 # 待處理信號的個數/目前最大可以處理的信號的個數SigPnd: 0000000000000000 # 屏蔽位,存儲了該線程的待處理信號ShdPnd: 0000000000000000 # 屏蔽位,存儲了該線程組的待處理信號SigBlk: 0000000000084007 # 存放被阻塞的信號SigIgn: 0000000000003000 # 存放被忽略的信號SigCgt: 00000001800006e8 # 存放被俘獲到的信號CapInh: 0000000000000000 # 能被當前進程執行的程序的繼承的能力CapPrm: 0000000000000000 # 進程能夠使用的能力,可以包含CapEff中沒有的能力,這些能力是被進程自己臨時放棄的CapEff: 0000000000000000 # 是CapPrm的一個子集,進程放棄沒有必要的能力有利于提高安全性CapBnd: 0000003fffffffff # 是系統的邊界能力,我們無法改變它CapAmb: 0000000000000000 NoNewPrivs: 0 # 沒有新權限Seccomp: 0 # seccomp機制用于限制應用程序可以使用的系統調用,增加系統的安全性。Speculation_Store_Bypass: vulnerable Cpus_allowed: 3 # 可以執行該進程的CPU掩碼集Cpus_allowed_list: 0-1 # 該進程可以使用CPU的列表,這里是0-1Mems_allowed: # 更改進程執行時占用的內存有關Mems_allowed_list: 0 # 進程只是使用了結點0的內存資源voluntary_ctxt_switches: 94 # 表示進程主動切換的次數nonvoluntary_ctxt_switches: 194 # 進程被動切換的次數
說明:
-
/proc/ 是一個虛擬的文件系統,是系統內存的映射,該目錄的數據都是存放在內存中,沒有占用任何的硬盤空間,所以通過該目錄可以查找到進程的信息,就已經足夠說明該進程已經啟動了,否則在內存中是無法查找到有關的信息的。
-
Tgid 是指線程組 Id,Tgid=Pid。一個進程就是一個線程組,每個進程的所有線程都有著相同的 Tgid,當程序開始運行時,只有一個主線程,這個主線程的 Tgid 就等于 Pid。而當其他線程被創建的時候,就繼承了主線程的 Tgid。
-
CoreDumping 當程序在運行的過程中出現異常終止或崩潰,系統會將程序當時的狀態記錄下來,保存在一個 Core 文件中,這種機制稱為 Core Dump,又稱“核心轉儲”。Core Dump 機制記錄了程序異常時的內存數據、寄存器狀態以及運行堆棧等信息,開發人員可以使用調試工具分析 Core 文件來快速定位程序異常原因。
-
Ruid 實際用戶 Id,指的是進程執行者是誰。
-
Euid 有效用戶 Id,指進程執行時對文件的訪問權限。
-
Suid 保存設置用戶 Id,作為 Effective User Id 的副本。
-
Fsuid 目前進程的文件系統的用戶識別碼,一般情況下,文件系統的用戶識別碼(fsuid)與有效的用戶識別碼(euid)是相同的。
-
Cpus_allowed 進程可以使用 CPU 的親和性掩碼,因為我們指定為兩塊 CPU,所以這里就是 3,如果該進程指定為4個 CPU (如果有話),這里就是 F(1111)。
(四)通過命令 lsof 查看
-
查看 mysql 進程打開的文件列表:
[root@htlwk0001host ~]# lsof -c mysqlCOMMAND ? ? PID ?USER ? FD ? TYPE ? ? ? ? ? ? DEVICE ?SIZE/OFF ? ? ?NODE NAME mysqld ?1064381 mysql ?cwd ? ?DIR ? ? ? ? ? ? ?253,1 ? ? ?4096 ? ?636744 /var/lib/mysql mysqld ?1064381 mysql ?rtd ? ?DIR ? ? ? ? ? ? ?253,1 ? ? ? 244 ? ? ? 128 / mysqld ?1064381 mysql ?txt ? ?REG ? ? ? ? ? ? ?253,1 251816000 ?51228705 /usr/sbin/mysqld mysqld ?1064381 mysql ?mem ? ?REG ? ? ? ? ? ? ?253,1 ? ?553480 ?50342901 /usr/lib64/libpcre2-8.so.0.7.1
如上所示,如果數據庫已經啟動了,則可以查詢到一堆被打開的文件,否則查詢不到任何文件。
-
查看數據庫默認端口 3306 的使用情況:
[root@htlwk0001host ~]# lsof -i:3306COMMAND ? ? PID USER ? FD ? TYPE ? DEVICE SIZE/OFF NODE NAME java ? ?1050299 root ? 72u ?IPv6 19482407 ? ? ?0t0 ?TCP htlwk0001host:37380->47.114.59.224:mysql (CLOSE_WAIT)java ? ?1050299 root ? 78u ?IPv6 19482908 ? ? ?0t0 ?TCP htlwk0001host:37470->47.114.59.224:mysql (CLOSE_WAIT)
從上面的查詢結果可以看出,進程 java 已經關閉和 MySQL 服務器的連接,數據庫所在的主機地址是:47.114.59.224,端口名稱:mysql,端口狀態:CLOSE_WAIT。
數據庫服務器開啟后,查看端口 3306 的使用情況,如下:
[root@htlwk0001host ~]# lsof -i:3306COMMAND ? ? PID ?USER ? FD ? TYPE ? DEVICE SIZE/OFF NODE NAME java ? ?1050398 ?root ? 72u ?IPv6 19485111 ? ? ?0t0 ?TCP htlwk0001host:37978->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 78u ?IPv6 19482585 ? ? ?0t0 ?TCP htlwk0001host:37480->47.114.59.224:mysql (CLOSE_WAIT)java ? ?1050398 ?root ? 80u ?IPv6 19485118 ? ? ?0t0 ?TCP htlwk0001host:37980->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 81u ?IPv6 19485120 ? ? ?0t0 ?TCP htlwk0001host:37982->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 82u ?IPv6 19484462 ? ? ?0t0 ?TCP htlwk0001host:37984->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 83u ?IPv6 19484463 ? ? ?0t0 ?TCP htlwk0001host:37986->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 84u ?IPv6 19484464 ? ? ?0t0 ?TCP htlwk0001host:37988->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 85u ?IPv6 19484465 ? ? ?0t0 ?TCP htlwk0001host:37990->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 86u ?IPv6 19484466 ? ? ?0t0 ?TCP htlwk0001host:37992->47.114.59.224:mysql (ESTABLISHED)java ? ?1050398 ?root ? 87u ?IPv6 19484467 ? ? ?0t0 ?TCP htlwk0001host:37994->47.114.59.224:mysql (ESTABLISHED)mysqld ?1068848 mysql ? ?4u ?IPv6 19485112 ? ? ?0t0 ?TCP htlwk0001host:mysql->47.114.59.224:37978 (ESTABLISHED)mysqld ?1068848 mysql ? 26u ?IPv6 19485094 ? ? ?0t0 ?TCP *:mysql (LISTEN)mysqld ?1068848 mysql ? 49u ?IPv6 19485119 ? ? ?0t0 ?TCP htlwk0001host:mysql->47.114.59.224:37980 (ESTABLISHED)mysqld ?1068848 mysql ? 50u ?IPv6 19485121 ? ? ?0t0 ?TCP htlwk0001host:mysql->47.114.59.224:37982 (ESTABLISHED)mysqld ?1068848 mysql ? 51u ?IPv6 19485122 ? ? ?0t0 ?TCP htlwk0001host:mysql->47.114.59.224:37984 (ESTABLISHED)mysqld ?1068848 mysql ? 52u ?IPv6 19485123 ? ? ?0t0 ?TCP htlwk0001host:mysql->47.114.59.224:37986 (ESTABLISHED)mysqld ?1068848 mysql ? 53u ?IPv6 19485124 ? ? ?0t0 ?TCP htlwk0001host:mysql->47.114.59.224:37988 (ESTABLISHED)
(五)使用命令 netstat 查看
數據庫啟動后,使用命令 netstat 查看數據庫服務端默認端口 3306 的使用情況:
[root@htlwk0001host ~]# netstat -an | grep ':3306'tcp6 ? ? ? 0 ? ? ?0 :::3306 ? ? ? ? ? ? ? ? :::* ? ? ? ? ? ? ? ? ? ?LISTEN ? ? tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:37978 ? ? ESTABLISHED tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:37982 ? ? 47.114.59.224:3306 ? ? ?ESTABLISHED tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:37990 ? ? ESTABLISHED tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:37988 ? ? 47.114.59.224:3306 ? ? ?ESTABLISHED tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:37992 ? ? ESTABLISHED
從上面的查詢結果看,我們看這條:tcp6 0 0 172.19.116.91:37982 47.114.59.224:3306 ESTABLISHED ,可以得知數據庫服務端與客戶端保持連接狀態。
數據庫關閉后,我們再使用命令 netstat 查看端口 3306 的使用情況:
[root@htlwk0001host ~]# netstat -an | grep ':3306'tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:37978 ? ? FIN_WAIT2 ? tcp6 ? ? ? 1 ? ? ?0 172.19.116.91:37982 ? ? 47.114.59.224:3306 ? ? ?CLOSE_WAIT tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:37990 ? ? FIN_WAIT2 ? tcp6 ? ? ? 1 ? ? ?0 172.19.116.91:37988 ? ? 47.114.59.224:3306 ? ? ?CLOSE_WAIT tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:37992 ? ? FIN_WAIT2 ? tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:38006 ? ? FIN_WAIT2 ? tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:38004 ? ? FIN_WAIT2 ? tcp6 ? ? ? 1 ? ? ?0 172.19.116.91:38008 ? ? 47.114.59.224:3306 ? ? ?CLOSE_WAIT tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:37994 ? ? FIN_WAIT2 ? tcp6 ? ? ? 0 ? ? ?0 172.19.116.91:3306 ? ? ?47.114.59.224:38010 ? ? FIN_WAIT2 ? tcp6 ? ? ? 1 ? ? ?0 172.19.116.91:37984 ? ? 47.114.59.224:3306 ? ? ?CLOSE_WAIT
(六)使用命令 service 查看數據庫狀態
[root@htlwk0001host ~]# service mysqld statusRedirecting to /bin/systemctl status mysqld.service ● mysqld.service - MySQL Server ? Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) ? Active: active (running) since Fri 2021-04-23 16:11:01 CST; 8s ago ? ? Docs: man:mysqld(8) ? ? ? ? ? http://dev.mysql.com/doc/refman/en/using-systemd.html ?Process: 1069004 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS) ?Process: 1068982 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 1069006 (mysqld) ? ?Tasks: 46 (limit: 23070) ? Memory: 214.2M ? CGroup: /system.slice/mysqld.service ? ? ? ? ? └─1069006 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid 4月 23 16:10:59 htlwk0001host systemd[1]: Starting MySQL Server... 4月 23 16:11:01 htlwk0001host systemd[1]: Started MySQL Server.
從上述的查詢結果可以看到: Active: active (running) since Fri 2021-04-23 16:11:01 CST; 8s ago,active(running),說明數據庫處于運行中的狀態。
(七)使用命令 systemctl 查看數據庫狀態
[root@htlwk0001host ~]# /bin/systemctl status mysqld.service
命令 service 其實就是調命令 systemctl 查詢的,所以命令 systemctl 的查詢結果和命令 service 相同,就不展示了。