在Raspberry Pi上跑MySQL是可能的, 是不是實際, 要看應用系統讀寫資料庫的頻率與複雜性, 當然, 實際的負載瓶頸不見得是在MySQL上, 例如, 頻寬的瓶頸可能比MySQL的瓶頸還要大, 那麼在Raspberry Pi跑上MySQL為資料庫的應用系統也就可行了.
上一篇: Linux Pi的奇幻旅程(19)-MySQL
http://ithelp.ithome.com.tw/question/10136445
下一篇: Linux Pi的奇幻旅程(21)-Nginx
http://ithelp.ithome.com.tw/question/10137229
全部: http://ithelp.ithome.com.tw/ironman6/player/bizpro/alll/1
在某些條件下, 在Raspberry Pi跑上MySQL為資料庫的應用系統是可行的. 關於MySQL管理系統, 常用的網頁式MySQL管理系統需要PHP及支援PHP的網站伺服器, 如果要在Raspberry Pi上運行的應用系統剛好是用PHP, 採用網頁式MySQL管理系統並不會加重系統的負擔, 除了常用的PHPMyAdmin之外, 還有一個很不錯的開放原始碼的MySQL管理系統, Adminer (http://www.adminer.org/), Adminer可說比PHPMyAdmin強大, 最特別的是, 整個Adminer只是一個PHP檔案. 如果在Raspberry Pi上執行PHP只是要來管理MySQL, 這就成了一個重大的系統負擔, 在這種情況下, 最好採文字界面或以Raspberry Pi本機外部的應用系統來管理. SquirrelSQL(http://squirrel-sql.sourceforge.net/)是一套開放原始碼的資料庫管理應用系統, 可以管理非常多的資料庫系統, 通常只要有提供JDBC函式庫的資料庫系統, SquirrelSQL都能管理, 當然包含MySQL, PostgreSQL, Oracle, MS-SQL, ...等等.
Squirrel SQL是用Java寫成的, 只要作業系統中有安裝Java虛擬機器, 就可以執行Squirrel SQL了, 安裝也很簡單, 到其官網下載一隻安裝程式squirrel-sql-3.5.0-install.jar :
下載後, 執行 java -jar squirrel-sql-3.5.0-install.jar就可以了.
啟動Squirrel SQL之後, 有兩個主要的頁籤, 如下圖所標示的(1)Alias和(2)Drivers
上圖所顯示的是(2)Drivers, 可以看到眾多所支援的資料庫的一部分, 請注意MySQL及其它大部分的驅動程式都是付之闕如的, 因此必需下載MySQL的JDBC驅動程式, 就到Oracle官網上下載, 請選擇Platform Independent:
下載了壓縮檔後, 解壓後是一個目錄, 接著開始安裝MySQL的JDBC驅動程式到Squirel SQL上.
如下圖, 在MySQL Driver上按滑鼠右鍵帶出選單, 並選擇Modify Driver(修改驅動程式):
開啟修改驅動程式, 按頁籤[Extra Class Path]後, 再按[Add]按鈕:
開啟下圖後, 點選進入目錄mysql-connector-java-5.1.26:
進入mysql-connector-java-5.1.26的目錄後, 選擇檔案mysql-connector-java-5.1.26-bin.jar, 這就是MySQL的JDBC驅動程式.
在上圖按下按鈕[Open]之後, 回到下圖所示頁面, 請按按鈕[List Drivers]並確認JDBC的驅動類別是正確的.
這就完成MySQL JDBC驅動程式的安裝, 如下圖所示:
在Squirrel SQL上安裝好了MySQL的JDBC驅動程式之後, 要到Aliases頁籤去設定連結到Raspberry Pi上的MySQL, 如下圖所示步驟:
(1)點選頁籤[Aliases]
(2)點選按鈕[+]
(3)設定連線資訊:
首先設定個此連線別名(alias Name), 例如MySQL-Pi
選擇剛剛新增的驅動程式: MySQL Driver
設定連線URL: jdbc:mysql://192.168.1.100:3306/
設定使用者名稱(User Name): root及其密碼.
(4)按下按鈕[Test]來測試連線.
開啟了下圖的測試頁面,
按下按鈕[Connect]後出現的錯誤, 按下按鈕[Stack Trace]後會顯示錯誤:
這個錯誤"Host '192.168.1.102' is not allowed to connect to this MySQL server"表示主機192.168.1.102無權連線到MySQL主機, 這是因為MySQL的內定安裝是只限定本機連結的 , 因此必需到Raspberry Pi中的設定MySQL的遠端連線. 有兩個地方要設定: (1)MySQL綁定的IP 位址, 和(2)授權遠端主機(非本機)連線的權限.
(1)MySQL綁定的IP 位址. 在安裝MySQL時是採用默認安裝的, 其設定檔案是/etc/mysql/my.cnf , 就編輯這個設定檔:
pi@raspberrypi ~ $ sudo nano /etc/mysql/my.cnf
圖中框起來的是資料檔目錄和綁定的IP位址. 這裡並不去改變資料檔目錄, 要修正的是IP位址, 把它改成本機的IP位址192.168.1.100, 如下圖.
重新啟動MySQL:
pi@raspberrypi ~ $ sudo /etc/init.d/mysql restart
(2)授權遠端主機(非本機)連線的權限.
首先連線到MySQL:
pi@raspberrypi ~ $ sudo mysql -u root -p
授權遠端主機, 例如192.168.1.102, 連線, 同時設定密碼:
將權限灌入(flush)
設定好MySQL的遠端連線授權之後, 再試試從Squirrel SQL連入:
當然, 我也可以直接以文字界面連入, 這也是我最習慣的管理方法:
這樣就可以成功從遠端主機192.168.1.102連線到Raspberry Pi的主機192.168.1.100上的MySQL. 有了資料庫, 就可以讓Node.js或其它的系統來連線了.