2011-11-30 76 views
0

我在Linux上ubuntu機器有MySQL已經安裝。「chown mysql:mysql/data/tmp」命令

如果有MySQL的安裝的Ubuntu機器上,我看到一些人在做以下的事情:

sudo chown mysql:mysql /data/tmp 

我感到困惑,我知道上面的命令,這是意義將/data/tmp的所有者更改爲用戶'mysql',並將其組更改爲'mysql'組。

但(我的問題):

一個爲什麼會運行上面的命令?如果我在my_db數據庫中創建表,默認情況下,會出現.frm.MYD.MYI文件(數據文件)自動通過MySQL的/var/lib/mysql/my_db/下創建。那麼,上述命令是否將默認的MySQL數據目錄更改爲/data/tmp/而不是/var/lib/mysql/my_db/

基本上,我想知道上述命令的目的和作用。(更好的例子)

2.'mysql'所有者和組來自哪裏?在Linux機器上安裝MySQL是否會自動創建'mysql'用戶和組?或者人們需要爲linux機器手動創建一個mysql帳戶?

+0

StackOverflow是編程問題。請將有關服務器的未來問題發佈到http://serverfault.com/ – Polynomial

回答

2

MySQL需要擁有自己的目錄,因爲它將在該目錄內創建/刪除文件。如果dir屬於其他用戶標識,那麼mysql可能會失敗,因爲它無法執行任何所需的文件操作。一旦它擁有目錄的所有權,它就得到了全權委託。

mysql用戶是一個任意的選擇。它可以很容易地'弗雷德'來代替。但大多數人使用mysql,因爲這是明顯的選擇。如果您正在安裝發行版的預編譯版本,它通常由軟件包安裝程序創建。

+0

但什麼是「MySQL文件和目錄」?它是指那些MySQL數據庫文件,如.frm,.MYD和.MYI?如果沒有,那麼默認情況下,你提到的那些臨時文件在哪裏? – Mellon

+0

mysql還創建臨時文件來緩衝不適合內存的大型結果集,例如當你在對大量數據進行排序時。這不僅僅是.frm/.myd/etc文件。 –

+0

但我也在問這些臨時文件默認情況下在哪裏?例如,這些.frm,.MYD和.MYI文件默認位於/ var/lib/mysql/my_db /下。你提到的文件在哪裏默認位置?通常什麼是臨時文件的格式? .dat文件? – Mellon

2

霧分佈的MySQL包將確保mysql用戶(和組)存在。然後,如果您設置了MySQL,以便將它存儲在/data/tmp中的臨時文件中,則您需要將它歸爲mysql:mysql。只要MySQL需要使用臨時表(在其他一些情況下),它就會被使用。

+0

但是,臨時文件指的是什麼?它是指那些MySQL數據庫文件,如.frm,.MYD和.MYI?如果沒有,那麼默認情況下,你提到的那些臨時文件在哪裏? – Mellon

+0

它將引用*臨時表,所以它可以是.frm/.myi以及其他內容,具體取決於MySQL使用哪些引擎作爲臨時表。我不確定默認位置是什麼,如果您是從二進制包安裝的話,它可能依賴於分配。 – Romain