從概念上講,大多數關係數據庫系統都擁有相似的架構:它們由一系列數據庫組成,每個數據庫又包含多張數據表。然而,每個系統在組織和管理數據的方式上各有千秋,MySQL 也不例外。
預設情況下,所有由 MySQL 服務器 mysqld 管理的數據都存儲在一個稱為「MySQL 數據目錄」的位置。這裡不僅存放著所有的數據庫,還包含提供服務器操作信息的狀態文件。如果你需要對 MySQL 安裝執行管理任務,熟悉數據目錄的佈局及其用途至關重要。
一個預設的數據目錄路徑會被編譯進服務器內部。根據安裝方式的不同,典型的預設目錄如下:
/usr/local/var/var/lib/mysql/usr/local/mysql/data在啟動服務器時,可以通過 --datadir=/path/to/dir 選項顯式指定數據目錄位置。當你需要將數據目錄放置在預設位置以外的路徑時,這個選項非常有用。
如果你運行多個服務器,必須清楚所有數據目錄的位置。若不確定確切位置,可以通過以下方法查找:
mysqladmin variables 直接獲取查看輸出中 datadir 變量的值:
% mysqladmin variables +----------------------+----------------------+ | variable_name | Value | +----------------------+----------------------+ | back_log | 5 | | connect_timeout | 5 | | basedir | /var/local/ | | datadir | /usr/local/var/ | ....
C:\> mysqladmin variables +----------------------+----------------------+ | variable_name | Value | +----------------------+----------------------+ | back_log | 5 | | connect_timeout | 5 | | basedir | C:\MySQL\ | | datadir | C:\MySQL\data\ | ....
如果有多個服務器在運行,它們會監聽不同的 TCP/IP 端口或套接字。通過指定 --port 或 --socket 選項連接相應服務器,即可獲取各自的數據目錄信息:
% mysqladmin --port=port_name variables % mysqladmin --socket=/path/to/socket variables
mysqladmin 命令可在任何能連接服務器的主機上運行。若需連接遠程主機,使用 --host=host_name 選項:
% mysqladmin --host=host_name variables
在 Windows 上,可通過 --pipe 強制使用命名管道連接,並用 --socket=pipe_name 指定管道名,以連接監聽管道的 NT 服務器:
C:\> mysqladmin --pipe --socket=pipe_name variables