星期三, 10月 25, 2006

在 OSX 上安裝 MySQL






網路上可以找到 MySQL for OSX 的 binary 檔案了,為什麼還要重新自己從 source code 安裝呢?一切都是「中文亂碼」問題啊!


之前我在我的 iBook 上就已經事先安裝好了 MySQL (透過 binary 安裝的),裝完之後,一直也沒去好好的測試中文。因為當作一個測試環境而已,加上這陣子也很少用 PHP + MySQL 來搭配開發了。最近跟朋友要合作一個平台,所以準備使用 PHP + Smarty + MySQL 來當作開發環境。


至於為什麼選擇 PHP + Smarty + MySQL,應該是可以再額外寫出一篇我的心得。MySQL 第一個遇到的問題就是中文亂碼問題了,尤其是最常在網路上點問率最高的「許功蓋」亂碼問題。這問題如果直接使用 UTF8 編碼,其實就可以避免掉了,但是問題就出在 MySQL binary 的預設 charset 並不是 UTF8 而是 latin-1。

我本來的想法是看是否可以從 MySQL 的設定檔把 charset 設定回來就好,網路上也有人提到可以直接更改 /etc/my.cnf 下的 [mysqld] section,加入:

default-character-set=utf8

這看起來是一個非常好的方法,只要更改一個設定檔就可以了,但是問題來了,在 OSX 下我找不到 my.cnf 這個檔案 XD,透過 google 去找,也完全找不到 my.cnf 在 OSX 裡面的位置。最後放棄,乾脆自己從頭 compile source code;以前玩 Linux 玩了好幾年了,所以 compile source code 也不是什麼難的。

首先去 MySQL 網站抓 MySQL source code (我是抓 5.0.26 版本)

#解開 mysql

shell> tar xvfz mysql-5.0.26.tar.gz

shell>cd mysql-5.0.26



#加入 --with-charset=utf8

shell>./configure --prefix=/usr/local/mysql --with-unix-socket-path=/usr/local/
mysql/run/mysql_socket --with-mysqld-user=mysql --with-comment --with-debug --with-charset=utf8 --with-extra-charsets=all


#compile


shell> sudo make


#安裝

shell>sudo make install


#初始資料庫 (mysql & test)

shell>sudo /usr/local/mysql/bin/mysql_install_db --force
shell>sudo mkdir /usr/local/mysql/run



# 更改 /usr/local/mysql 的 owner 以及 group

shell>sudo chgrp -R mysql /usr/local/mysql

shell>sudo chown -R mysql /usr/local/mysql/run /usr/local/mysql/var



#啟動 mysql

shell>sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &



#更改 mysql root 密碼

shell>/usr/local/mysql/bin/mysqladmin -u root password Your_Password

shell>mysql -u root -p



#新增 user

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;


#把 my.cnf 產生出來
在 mysql-5.0.26 下有一個 support-files 目錄,裡面有一些 my.cnf 的範例,一般情況下把 my-medium.cnf 移到 /etc/ 下並 rename 為 my.cnf 就可以了


mysql-5.0.26>mv support-files/my-medium.cnf /etc/my.cnf




修改 /etc/my.cnf,在 [mysqld] section 加入

default-character-set=utf8

這樣大致上就把 MySQL 安裝完成了。

沒有留言: