在 Linux 下安裝的 MySQL,數據表的數據默認存放在 My曉SQL 數據庫的**數據目錄**(Data Directory)中。具體來說,MySQL 會將所有數據庫的數據存儲在一個由 MySQL 配置文件中指定的目錄里。該目錄包含了所有數據庫的表、索引、日志等數據文件。
### 1. 數據存儲路徑
MySQL 數據的存放位置通常可以通過以下方式找到:
- **MySQL 配置文件**:一般來說,MySQL 的數據目錄在 MySQL 配置文件 `my.cnf` 中進行配置。配置文件通常位于 `/etc/mysql/my.cnf` 或 `/etc/my.cnf`,根據不同的發行版和安裝方式,路徑可能會有所不同。
- **默認路徑**:如果沒有在配置文件中指定數據目錄,MySQL 默認的存儲路徑通常為:
? - **Ubuntu/Debian** 系統:`/var/lib/mysql`
? - **CentOS/Red Hat** 系統:`/var/lib/mysql`
? - **其他 Linux 發行版**:可能也是 `/var/lib/mysql`,但可以根據安裝時的選擇不同而有所不同。
### 2. 查看數據目錄
你可以通過以下方法查看 MySQL 的數據存儲路徑:
#### 1. 通過配置文件查看
查看 MySQL 配置文件 `my.cnf` 或 `my.ini`,在 `[mysqld]` 部分找 `datadir` 配置項。例如:
```bash
cat /etc/mysql/my.cnf
```
或者
```bash
cat /etc/my.cnf
```
你應該能夠看到類似以下的內容:
```ini
[mysqld]
datadir = /var/lib/mysql
```
如果沒有配置該項,則使用默認路徑 `/var/lib/mysql`。
#### 2. 通過 SQL 查詢查看
你也可以在 MySQL 客戶端中運行以下 SQL 查詢來查看數據目錄:
```sql
SHOW VARIABLES LIKE 'datadir';
```
返回的結果將顯示 MySQL 數據存儲目錄的路徑。
### 3. 數據目錄結構
在數據目錄下,每個數據庫都會對應一個以數據庫名稱命名的子目錄。每個數據庫的表數據存放在該目錄下的文件中,通常包括以下幾種文件:
- **數據庫目錄**:每個數據庫都有一個以數據庫名命名的子目錄,里面存放該數據庫的所有表數據文件。
- **表數據文件**:每個表的實際數據存儲在文件中,文件名是表名。文件擴展名可以是 `.frm`、`.ibd`、`.myd` 等,具體取決于 MySQL 的存儲引擎。
? - **.frm** 文件:存儲表的結構信息。
? - **.ibd** 文件:如果使用 InnoDB 存儲引擎,表的實際數據會保存在 `.ibd` 文件中(如果啟用了獨立表空間)。
? - **.myd** 和 **.myi** 文件:如果使用 MyISAM 存儲引擎,表的實際數據分別保存在 `.myd` 文件(數據文件)和 `.myi` 文件(索引文件)中。
例如:
```bash
/var/lib/mysql
? └── testdb/
? ? ? ├── table1.frm
? ? ? ├── table1.ibd
? ? ? └── table2.frm
```
### 4. 數據文件的位置
在默認的情況下,數據文件存儲在 `/var/lib/mysql` 下,每個數據庫對應一個子目錄。例如,如果創建了一個名為 `mydatabase` 的數據庫,其文件結構可能是這樣的:
```bash
/var/lib/mysql/mydatabase/
? ├── table1.frm
? ├── table1.ibd
? ├── table2.frm
? └── table2.ibd
```
### 5. 更改數據存儲路徑
你可以通過修改 `my.cnf` 配置文件中的 `datadir` 配置項來改變 MySQL 數據的存儲路徑。例如,將數據目錄更改為 `/data/mysql`:
```ini
[mysqld]
datadir = /data/mysql
```
修改后,需要重啟 MySQL 服務以使配置生效:
```bash
sudo systemctl restart mysql
```
如果你改變了數據目錄的位置,還需要確保 MySQL 的數據目錄有適當的權限,并且將數據庫文件遷移到新位置。
### 總結
在 Linux 下,MySQL 數據庫的默認存儲位置是 `/var/lib/mysql`,但你可以通過配置文件中的 `datadir` 配置項來修改它。每個數據庫會有一個對應的目錄,其中存儲該數據庫的表結構和數據文件。