在 Unix 和類 Unix 系統上的 MySQL 發行版中包含一個名為 mysql.server 的腳本,它使用 mysqld_safe 啟動 MySQL 伺服器。它可以在使用 System V 風格執行目錄來啟動和停止系統服務的系統(例如 Linux 和 Solaris)上使用。它也由 MySQL 的 macOS 啟動項目使用。
mysql.server 是在 MySQL 原始碼樹中使用的腳本名稱。安裝的名稱可能不同 (例如,mysqld 或 mysql)。在以下討論中,請根據您的系統調整名稱 mysql.server。
對於某些 Linux 平台,從 RPM 或 Debian 套件安裝 MySQL 包括 systemd 支援,以管理 MySQL 伺服器的啟動和關閉。在這些平台上,mysql.server 和 mysqld_safe 不會安裝,因為它們是不必要的。有關更多資訊,請參閱 第 2.5.9 節,「使用 systemd 管理 MySQL 伺服器」。
若要使用 mysql.server 腳本手動啟動或停止伺服器,請從命令列使用 start
或 stop
引數調用它。
mysql.server start
mysql.server stop
mysql.server 會變更位置至 MySQL 安裝目錄,然後調用 mysqld_safe。若要以特定使用者身分執行伺服器,請將適當的 user
選項新增至全域 /etc/my.cnf
選項檔案的 [mysqld]
群組中,如此章節稍後所示。(如果您的 MySQL 二進位發行版安裝在非標準位置,您可能必須編輯 mysql.server。修改它,使其在執行 mysqld_safe 之前變更位置至正確的目錄。如果您這樣做,則在未來升級 MySQL 時,您修改過的 mysql.server 版本可能會被覆寫;請建立您編輯版本的副本,以便您可以重新安裝。)
mysql.server stop 會傳送訊號至伺服器來停止伺服器。您也可以執行 mysqladmin shutdown 手動停止伺服器。
若要在伺服器上自動啟動和停止 MySQL,您必須將啟動和停止命令新增至 /etc/rc*
檔案中的適當位置。
如果您使用 Linux 伺服器 RPM 套件 (
MySQL-server-
) 或原生 Linux 套件安裝,則 mysql.server 腳本可能會安裝在VERSION
.rpm/etc/init.d
目錄中,名稱為mysqld
或mysql
。如需有關 Linux RPM 套件的詳細資訊,請參閱 第 2.5.4 節,「使用 Oracle 的 RPM 套件在 Linux 上安裝 MySQL」。如果您是從原始碼發行版安裝 MySQL,或是使用不會自動安裝 mysql.server 的二進位發行格式,您可以手動安裝此腳本。它可以在 MySQL 安裝目錄或 MySQL 原始碼樹下的
support-files
目錄中找到。將此腳本複製到/etc/init.d
目錄,並命名為 mysql,並使其可執行。cp mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysql
安裝腳本後,在系統啟動時啟用它所需的命令取決於您的作業系統。在 Linux 上,您可以使用 chkconfig。
chkconfig --add mysql
在某些 Linux 系統上,以下命令似乎也是完全啟用 mysql 腳本所必需的。
chkconfig --level 345 mysql on
在 FreeBSD 上,啟動腳本通常應放置在
/usr/local/etc/rc.d/
中。將mysql.server
腳本安裝為/usr/local/etc/rc.d/mysql.server.sh
以啟用自動啟動。rc(8)
手冊頁指出,此目錄中的腳本僅在其基本名稱與*.sh
shell 檔案名稱模式匹配時才會執行。目錄中的任何其他檔案或目錄都會被靜默忽略。除了上述設定外,某些作業系統也使用
/etc/rc.local
或/etc/init.d/boot.local
在啟動時啟動其他服務。要使用此方法啟動 MySQL,請將類似以下的命令附加到適當的啟動檔案中。/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'
對於其他系統,請查閱您的作業系統文件,以了解如何安裝啟動腳本。
mysql.server 從選項檔案的 [mysql.server]
和 [mysqld]
區段讀取選項。為了向後相容性,它也讀取 [mysql_server]
區段,但為了保持最新,您應將此類區段重新命名為 [mysql.server]
。
您可以在全域 /etc/my.cnf
檔案中為 mysql.server 新增選項。典型的 my.cnf
檔案可能如下所示:
[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql
[mysql.server]
basedir=/usr/local/mysql
mysql.server 腳本支援下表所示的選項。如果指定了這些選項,必須將它們放置在選項檔案中,而不是在命令列中。mysql.server 僅支援 start
和 stop
作為命令列引數。
表格 6.8 mysql.server 選項檔案選項
選項名稱 | 描述 | 類型 |
---|---|---|
basedir |
MySQL 安裝目錄的路徑 | 目錄名稱 |
datadir |
MySQL 資料目錄的路徑 | 目錄名稱 |
pid-file |
伺服器應在其中寫入其程序 ID 的檔案 | 檔案名稱 |
service-startup-timeout |
等待伺服器啟動的時間 | 整數 |
MySQL 安裝目錄的路徑。
MySQL 資料目錄的路徑。
伺服器應在其中寫入其程序 ID 的檔案路徑名稱。伺服器會在資料目錄中建立檔案,除非給出絕對路徑名稱以指定不同的目錄。
如果未給出此選項,mysql.server 將使用預設值
。mysqld_safe 的 PID 檔案值會覆寫host_name
.pid[mysqld_safe]
選項檔案群組中指定的任何值。由於 mysql.server 會讀取[mysqld]
選項檔案群組,但不會讀取[mysqld_safe]
群組,因此您可以確保從 mysql.server 呼叫時,mysqld_safe 獲得的值與手動呼叫時相同,方法是在[mysqld_safe]
和[mysqld]
群組中都放置相同的pid-file
設定。service-startup-timeout=
seconds
等待確認伺服器啟動的秒數。如果伺服器未在此時間內啟動,mysql.server 將以錯誤退出。預設值為 900。值為 0 表示根本不等待啟動。負值表示永遠等待(沒有逾時)。