MySQL是一種開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),大多數(shù)情況下默認(rèn)將數(shù)據(jù)存儲(chǔ)在服務(wù)器上的默認(rèn)位置。
然而,有時(shí)候我們可能需要將數(shù)據(jù)存儲(chǔ)在不同的位置,這時(shí)候我們就會(huì)考慮選擇位置。然而,MySQL并不支持直接將數(shù)據(jù)存儲(chǔ)在指定位置。
mysql>CREATE TABLE mytable ( ->id INT, ->name VARCHAR(20) ->) DATA DIRECTORY='/path/to/directory'; ERROR 1064 (42000): You have an error in your SQL syntax ...
當(dāng)我們使用上面的命令嘗試創(chuàng)建一個(gè)表,并將數(shù)據(jù)存儲(chǔ)在指定位置時(shí),我們會(huì)遇到語(yǔ)法錯(cuò)誤。
雖然MySQL不支持直接將數(shù)據(jù)存儲(chǔ)在指定位置,但是我們可以通過(guò)操作系統(tǒng)提供的符號(hào)鏈接機(jī)制來(lái)實(shí)現(xiàn)將數(shù)據(jù)存儲(chǔ)在指定位置的效果。
# 創(chuàng)建目錄 $ mkdir /path/to/directory # 設(shè)置mysql用戶(hù)對(duì)目錄的權(quán)限 $ chown mysql:mysql /path/to/directory # 將符號(hào)鏈接指向目錄 $ ln -s /path/to/directory /var/lib/mysql/directory # 創(chuàng)建表時(shí),指定符號(hào)鏈接的路徑 mysql>CREATE TABLE mytable ( ->id INT, ->name VARCHAR(20) ->) DATA DIRECTORY='/var/lib/mysql/directory';
如上所述,我們可以通過(guò)在服務(wù)器上創(chuàng)建一個(gè)目錄,并創(chuàng)建一個(gè)符號(hào)鏈接指向該目錄,然后在創(chuàng)建MySQL表時(shí),使用符號(hào)鏈接的路徑來(lái)將數(shù)據(jù)存儲(chǔ)在指定位置。
總之,MySQL默認(rèn)情況下將數(shù)據(jù)存儲(chǔ)在服務(wù)器上的默認(rèn)位置,并不支持直接將數(shù)據(jù)存儲(chǔ)在指定位置,但是我們可以通過(guò)操作系統(tǒng)提供的符號(hào)鏈接機(jī)制來(lái)實(shí)現(xiàn)這一需求。