MySQL的啓動方法有不少種,下面對比、總結這幾種方法的一些差別和特性,下面實驗的版本爲MySQL 5.6。若有疏漏或不足,敬請指點一二。 html
1:使用mysqld啓動、關閉MySQL服務 mysql
mysqld是MySQL的守護進程,咱們能夠用mysqld來啓動、關閉MySQL服務,關於mysqld, MySQL 5.6官方介紹資料以下所示: sql
mysqld, also known as MySQL Server, is the main program that does most of the work in a MySQL installation. MySQL Server manages access to the MySQL data directory that contains databases and tables. The data directory is also the default location for other information such as log files and status files. shell
When MySQL server starts, it listens for network connections from client programs and manages access to databases on behalf of those clients. 數據庫
The mysqld program has many options that can be specified at startup. For a complete list of options, run this command: 安全
shell> mysqld --verbose --help 服務器
MySQL Server also has a set of system variables that affect its operation as it runs. System variables can be set at server startup, and many of them can be changed at runtime to effect dynamic server reconfiguration. MySQL Server also has a set of status variables that provide information about its operation. You can monitor these status variables to access runtime performance characteristics. app
若是MySQL是rpm方式安裝的話,mysqld位於/usr/sbin下,若是MySQL是二進制安裝的話,mysqld則位於bin目錄下面。dom
[root@localhost ~]# whereis mysqld
mysqld: /usr/sbin/mysqld /usr/share/man/man8/mysqld.8.gz
[root@localhost ~]# /usr/sbin/mysqld stop
2016-06-27 14:52:54 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-06-27 14:52:54 9315 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
2016-06-27 14:52:54 9315 [ERROR] Aborting
2016-06-27 14:52:54 9315 [Note] Binlog end
2016-06-27 14:52:54 9315 [Note] /usr/sbin/mysqld: Shutdown complete
[root@localhost ~]# /usr/sbin/mysqld start
2016-06-27 14:52:59 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-06-27 14:52:59 9316 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
2016-06-27 14:52:59 9316 [ERROR] Aborting
2016-06-27 14:52:59 9316 [Note] Binlog end
2016-06-27 14:52:59 9316 [Note] /usr/sbin/mysqld: Shutdown complete
2:使用mysqld_safe啓動、關閉MySQL服務 socket
不少時候,人們會糾結mysqld與mysqld_safe的區別. 其實mysqld_safe是一個腳本,一個很是安全的啓動、關閉MySQL服務的腳本。它實際上也是調用mysqld來啓動、關閉MySQL服務。關於mysqld_safe,能夠參考官方文檔mysqld_safe — MySQL Server Startup Script
3:使用mysql.server啓動、關閉MySQL服務
[root@localhost mysql]# ./mysql.server stop
Shutting down MySQL..[ OK ]
[root@localhost mysql]# ./mysql.server start
Starting MySQL..[ OK ]
[root@localhost mysql]#
mysql.server其實也是一個腳本,它經過調用msqld_safe來啓動、關閉MySQL服務。部分腳本腳本以下
[root@localhost mysql]# more mysql.server
#!/bin/sh
# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
# This file is public domain and comes with NO WARRANTY of any kind
# MySQL daemon start/stop script.
# Usually this is put in /etc/init.d (at least on machines SYSV R4 based
# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.
# When this is done the mysql server will be started when the machine is
# started and shut down when the systems goes down.
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 64 36
# description: A very fast and reliable SQL database engine.
# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides: mysql
# Required-Start: $local_fs $network $remote_fs
# Should-Start: ypbind nscd ldap ntpd xntpd
# Required-Stop: $local_fs $network $remote_fs
4:使用mysqld_multi啓動、關閉MySQL服務
當服務器上運行了多個MySQL實例時,mysqld_multi是一個很是棒的管理MySQL服務器的工具。固然在使用前,你必須提早作配置
[root@localhost mysql]# /usr/bin/mysqld_multi stop 1
[root@localhost mysql]# /usr/bin/mysqld_multi start 1
mysqld_multi is designed to manage several mysqld processes that listen for connections on different Unix socket files and TCP/IP ports. It can start or stop servers, or report their current status.
mysqld_multi searches for groups named [mysqldN] in my.cnf (or in the file named by the --defaults-file option). N can be any positive integer. This number is referred to in the following discussion as the option group number, or GNR. Group numbers distinguish option groups from one another and are used as arguments tomysqld_multi to specify which servers you want to start, stop, or obtain a status report for. Options listed in these groups are the same that you would use in the[mysqld] group used for starting mysqld. (See, for example, Section 2.10.5, 「Starting and Stopping MySQL Automatically」.) However, when using multiple servers, it is necessary that each one use its own value for options such as the Unix socket file and TCP/IP port number. For more information on which options must be unique per server in a multiple-server environment, see Section 5.6, 「Running Multiple MySQL Instances on One Machine」.
5:使用service 啓動、關閉MySQL服務
service mysql start
service mysql stop
service mysql restart
其實若是你對service比較熟悉的話,就會知道運行上面命令,實際上是service命令去找/etc/init.d下的相關的mysql腳本去執行啓動、關閉動做。
[root@DB-Server init.d]# ls my*
mysql mysql.server
[root@DB-Server init.d]#
6: 使用/etc/init.d/mysql啓動、關閉MySQL服務。
若是你很是瞭解方法5,那麼就多了這麼一個啓動數據庫的方式。其實/etc/init.d/mysql也是一個腳本,它調用mysqld_safe腳原本啓動MySQL服務。以下所示,你會看到相關代碼
[root@DB-Server bin]# /etc/init.d/mysql start
Starting MySQL....[ OK ]
[root@DB-Server bin]# /etc/init.d/mysql stop
Shutting down MySQL..[ OK ]
[root@DB-Server bin]#
6:使用mysqladmin關閉數據庫
mysqladmin是一個執行管理操做的客戶程序,這個命令可使用安全模式關閉數據庫,可是不能啓動數據庫。固然它能夠中止和啓動MySQL replication on a slave server
[root@DB-Server bin]# /usr/bin/mysqladmin -u root -p shutdown
Enter password:
參考資料: