環境:阿里雲ECS服務器上,Ubuntu linux 12.04,64位版。MySQL 5.1.html
首先查看/etc/rc.local,能夠看到Ubuntu經過/etc/init.d/mysqld腳本啓動mysql服務:mysql
/etc/mysqld startlinux
這個腳本是安裝時從/alidata/server/mysql/目錄(mysql安裝目錄)拷貝過來的,沒問題。
sql
可是在執行這個腳本時,會調用/alidata/server/mysql/bin/my_print_defaults,ubuntu
將輸出內容交給腳本函數parse_serverarguments()解析,服務器
獲得$basedir, $bindir, $datadir這幾個啓動目錄。函數
問題就出在執行my_print_defaults上。阿里雲
經過執行/alidata/server/mysql/bin/my_print_defaults --help,能夠看到它從如下幾個目錄讀mysql配置:spa
後面兩個路徑不存在,因此只會讀取前兩個文件的內容。
/etc/my.cnf是安裝時從/alidata目錄拷過來的,沒有問題。
/etc/mysql/my.cnf倒是ubuntu缺省存在的,一讀,就把前面的覆蓋了。.net
因此刪除/etc/mysql目錄,執行/etc/init.d/mysqld restart,就OK了。
[後記]
晚上時候,同事報MySQL又啓動不了。錯誤日誌:
/alidata/server/mysql/libexec/mysqld: File '/var/log/mysql/mysql-bin.index' not found (Errcode: 13)
網上搜到文章說」Errorcode:13「是目錄權限問題而這個文件是存在的!mysql用戶也有讀寫權限。
嘗試給/var/log/mysql目錄權限從0755改爲0775,給mysql用戶組也加了寫權限,如今的權限是:
drwxrwxr-x 2 mysql mysql 4096 Oct 16 23:00 mysql/
繼續啓動MySQL,失敗,但錯誤日誌已經從剛纔的變成了這個(說明mysql組也須要寫權限,難道啓動mysql須要其餘mysql組用戶?):
/alidata/server/mysql/libexec/mysqld: File './mysql-bin.000032' not found (Errcode: 2)
繼續搜,在這裏找到了方法,編輯/var/log/mysql/mysql-bin.index,刪除其中的一行內容:
mysql-bin.000032
再次啓動MySQL,成功。