1. 程式人生 > >mac終端執行mysql出現Can't connect to local MySQL server through socket '/tmp/mysql.sock'

mac終端執行mysql出現Can't connect to local MySQL server through socket '/tmp/mysql.sock'

開啟mac的終端,輸入mysql -u root -p****** 之後,出現Can't connect to local MySQL server through socket '/tmp/mysql.sock',十分驚訝,因為幾個月前執行這個命令還是成功的。然後我就cd /tmp,再 ll,發現/tmp下真的沒有mysql.sock。

網上搜了一大堆教程,都是說什麼檔案許可權啊,連線個數超閾值的問題,這些一看就不能解決我的問題。還有的解決方案是linux上的mysql,資料夾名根本不能對應。之後我自己找辦法,發現我的mysql server居然處於關閉狀態。奇怪,mysql應該是開機自啟項,怎麼會關了呢?然後我就在設定中點開mysql,再點選Start MySQL Server,發現無法啟動,顯示:Warning:The /usr/local/mysql/data directory is not owned by the 'mysql' or '_mysql'。

再次找尋這個問題的解決方案,發現是因為Mac OS X的升級或其他原因會導致MySQL啟動或開機自動執行時/usr/local/mysql/data的宿主發生了改變,沒有了這個資料夾的許可權了,所以在終端上執行:

sudo chown -R mysql /usr/local/mysql/data
即可解決。之後再點選Start MySQL Server,啟動成功。然後/tmp下會自動生成mysql.sock,此時再在終端上執行mysql命令就可以成功啟動mysql了。

下面說明一下這個語句的意思:sudo是非root使用者臨時獲取root權利來執行,chown是修改檔案或者資料夾的屬主或者屬組,-R是遞迴,即該目錄下的子目錄和檔案都生效,mysql是要改成的資料夾屬主,/usr/local/mysql/data就是你要修改的目標,可以是檔案或資料夾。

如sudo chown -R user dir   指把dir以及它的所有子檔案/資料夾的owner改成user.


chmod 與chown很相似,但是是控制檔案/資料夾的讀寫執行許可權的
範例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt
將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt
將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設定為只有該檔案擁有者可以執行 :
chmod u+x ex1.py
將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *
此外chmod也可以用數字來表示許可權如 chmod 777 file
語法為:chmod abc file
其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。
範例:
chmod a=rwx file

chmod 777 file
效果相同
chmod ug=rwx,o=x file

chmod 771 file
效果相同
若用chmod 4755 filename可使此程式具有root的許可權

sudo chmod -R 755 /var/dedecms/data/
sudo是非root使用者臨時獲取root權利來執行
chmod是修改檔案或者資料夾的檔案如何被他人所呼叫
-R是遞迴,即該目錄下的子目錄和檔案都生效
755 表示檔案或資料夾的所有者有讀、寫、執行的許可權,檔案所有者同組的使用者有讀和執行的許可權,其它使用者有讀和執行的許可權
/var/dedecms/data/ 就是你要修改的目標