FreeBSD中的mysql安裝

>> 2011年12月13日 星期二


網路上以FreeBSD+MySQL搜尋,可以找到上百篇的安裝說明,
大致上的過程,不外乎就是:進入ports目錄,make、make install,
有的寫得比較詳盡一點的,會在make的時候加上一個WITH_CHARSET=utf8   或BUILD_OPTIMIZED=yes 或WITH_XCHARSET=all 這三個參數,
這幾個參數即使不加,也不會有太大的影響,還可以從設定檔裡面進行調整。
install之後,就是在/etc/rc.conf中加入mysql_enable="yes"
最後就可以用/usr/local/etc/rc.d/mysql-server start進行啟動,這樣大致上就完成了。
有的安裝文會在後面加上「cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf」
這是如果有一些設定要自訂的話,就需要加這個檔案調整。
常見的調整有:
query_cache_size = 32M ==>調整快取記憶體
[mysqld]
default-character-set=utf8  ==>預設編碼
[client]
default-character-set=utf8 ==>clinet預設編碼

大致上,不明究理的,跟著作,啟動都沒有太大問題,幾乎都會成功。
但是,天將降大認於斯人也,我就偏偏一直無法啟動,而且連個錯誤訊息都沒有。
幸好有大師會診,才發現之前發現的問題與嘗試的解決,都擦身而過。
好吧~把這一次的嘗試,對於mysql的相關運作,將所理解的寫在這邊紀錄一下吧!

有關於my.cnf的設定檔
1.可以不用複製與設定,當/etc或/usr/local/etc中沒有這個設定檔案時,系統會以預設的方式執行(例如編碼如果在make時有指定,則就會將指定編碼變成預設)
2.設定檔放在/etc或/usr/local/etc都可以。不過如果好習慣,應該要放在/usr/local/etc裡面。
3.這個設定檔只要有variable設定錯誤,就無法順利執行。
結論:若無特殊需求(如:需要加大快取記憶體)就不要複製、設定這個檔案了。

有關於錯誤訊息
一般系統錯誤訊息會從/var/log裡面去看,而mysql的錯誤訊息會紀錄在/var/db/mysql/server.domain.com.err裡面,其中server.domain.com會呈現你的hostname。
上面所說得設定檔若有錯誤,造成無法啟動,也可以在這個檔案中找到訊息。

有關於剛剛安裝後的初始處理
一般而言,剛剛安裝完以後,執行 /usr/local/etc/rc.d/mysql-server start 指令,系統就會自動進行資料庫初始化工作。
最原始的系統,會自動產生兩個資料庫:mysql、test。
並且,會產稱一個/var/db/mysql/server.domain.com.pid檔案。
不過,如果細心一點,會發現,當剛剛make install結束之後,會提醒你執行/usr/local/bin/mysql_install_db,進行資料庫初始化。
解析一下這個 mysql_install_db做了哪些事情。
mysql_install_db其實是一個shell script,會引用 my_print_defaults在執行的路徑底下產生一個data資料夾。裡面放的,就是預設會用的資料庫檔案。
不過,如果直接執行/usr/local/bin/mysql_install_db會出現下列的錯誤訊息:

 FATAL ERROR: Could not find ./bin/my_print_defaults
原因在於,這個shell中 basedir變數預設空白,所以需要在指令後面加上 --basedir 參數,指定程式的位置,要正常執行會是下面的樣子:
/usr/local/bin/mysql_install_db --basedir=/usr/local
 (/usr/local後面不要加/,不然路徑會變成/usr/local//bin...,是沒有影響啦!)
正常的執行之後,還會有一段的提醒文字,提醒你執行之後要去修改密碼。
這時候,在你執行這個指令的根目錄會產生一個data資料夾,裡面有預設需要用到的檔案。
此時,當你執行 /usr/local/etc/rc.d/mysql-server start,系統便會去複製這個資料夾的檔案到var/db/mysql裡面。

這就是整個資料庫的初始化過程囉!

最後,可以用ps ax | grep mysql指令看看是否有正常執行。
還有,記得要
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h server.domain.com password 'new-password'
這兩個指令,指定資料庫密碼喔!

Read more...

About This Blog

程式碼標示

  © Free Blogger Templates Joy by Ourblogtemplates.com 2008

Back to TOP