[討論] 東區幻境MariaDB系列教學01-安裝與設定 - 討論區

[討論] 東區幻境MariaDB系列教學01-安裝與設定

文章瀏覽次數 159 文章回覆數 16

Dack

Dack圖像(預設)

2021-08-20 21:13:44

From:219.70.166.106

在上一篇文章中,小弟給各位介紹了下MySQL、MariaDB的過去及現在。從這篇文章起,我們正式開始MariaDB的教學。

檔案下載

講句幹話:使用MariaDB的第一步,要先下載它XD。各位可以點擊這裡,前往MariaDB官方網站的下載頁面。大致的操作流程為點選版本號,接著依自己作業系統及需求下載對應的檔案。

注意事項

說到下載對應自己需求的檔案,我們大概會反射性的去點msi檔。過去在Windows中安裝程式時,各位應該跟小弟一樣載個exe或msi檔爽爽的狂戳下一步吧?如果從主機管理的角度出發,這其實不太好的。因為我們不知道安裝程式到底幫我們做了什麼,以後出問題的時候非常難debug。當然,各位仍能下載msi檔;不過本教學小弟將選擇zip檔,公開一下小弟獨門研究的純手動配置。
另外要注意的,就是MariaDB對Windows作業系統版本的支援了。雖目前主流的Windows作業系統是Windows 10,旦小弟相信不少讀者應該是老系統的丁子戶。因此特幫各位查了下MariaDB的document並經過測試,結果分述於下:

  • 如果您是Windows 7的用戶,請下載版本號為10.4.12的MariaDB
  • 如果您是Windows XP的用戶,請下載版本號為10.1.13的MariaDB

在接下來的教學中,小弟將以10.4.12版搭配Windows 7 64位元系統來示範。沒有任何特殊需求也不是丁子戶的話,各位儘管選擇標示stable的版本就行。以上特感謝Mingo大大提供公司的老電腦給測試!

資料庫系統安裝開始

第1步:解壓檔案

首先請各位把壓縮檔裡的檔案全部解壓。這個地方沒有特別要注意的,只要這些檔案獨立存在一個資料夾中且它們的路徑方便您操作就行。以小弟為例,小弟將它們放在「C:\MariaDB」這個目錄下。

第2步:設定環境變數

請各位將剛剛解壓的檔案中一個叫bin的目錄加入系統環境變數,這麼做我們將可在命令列介面執行MariaDB的指令。以小弟的環境為例,小弟的path環境變數要多加一個「C:\MariaDB\bin」。

第3步:以指令建立資料庫檔案

這一步有人要做,有人可能不用做。請各位檢察檢察解壓縮的資料夾裡是否有個data目錄,有的人請直接下一步。
沒有的人請注意了,我們現在要來建立資料庫系統運作時的所需檔案。這些檔案預設會放在我們解壓縮路徑下的data資料夾,以小弟為例的話就是「C:\MariaDB\data」。請以系統管理員身分開啟命令提示字元,並在命令列介面下指令「mysql_install_db --datadir=C:\MariaDB\data」。以下貼出小弟執行指令後系統顯示訊息的經過。

C:\>mysql_install_db --datadir=C:\MariaDB\data
Default data directory is C:\MariaDB\data
Running bootstrap
2021-08-13 9:38:56 0 [Note] C:\MariaDB\bin\mysqld.exe (mysqld 10.4.12-MariaDB)
starting as process 4296 ...
Removing default user
Creating my.ini file
Creation of the database was successful

C:\>

只要看到類似「successful」的提示後,資料庫檔案就全部建立完成了。各位可以看一下剛剛解壓縮的目錄,裡面應該多了個data資料夾。請千萬不要任意修改或移動data資料夾裡的檔案,以免造成錯誤。

第4步:設定資料庫編碼

一般來說至此資料庫系統已可正常執行。不過因為MariaDB預設支援的編碼為Latin1,使用非英文資料儲存、顯示及下指令會發生亂碼。在開始使用之前,我們得先把系統所有的編碼設定弄成號稱MariaDB專用的高效萬國碼utf8mb4。
一般來說在data資料夾中應該會有個my.ini檔案,沒有的人請以純文字編輯器自行建立。我們的編碼設定直接寫進去就行了。如果my.ini檔已存在,內容大致上應該是這樣的。
[mysqld]
datadir=C:/MariaDB/data
[client]
plugin-dir=C:/MariaDB/lib/plugin
因為小弟放置資料庫的路徑為「C:\MariaDB」,各位打開設定檔後可能會看到跟上面不一樣的路徑設定值。不過這完全不礙事,請在內容添加編碼設定並存檔。像下面這樣。要特別注意的是,自行建立檔案的各位請把路徑修改成您解壓縮的路徑。
[mysqld]
datadir=C:/MariaDB/data
character-set-server=utf8mb4
[client]
plugin-dir=C:/MariaDB/lib/plugin
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

第5步:啟動資料庫

弄了大半天終於可以來啟動MariaDB了。請先以系統管理員身分執行一個命令提示字元,並下指令「mysqld」。
C:\>mysqld
此時MariaDB已經啟動,我們現在能透過命令列或任何有支援MySQL/MariaDB的程式語言(php、Python、NodeJS)對它連線。
在這邊我們以命令列來操作,請再以管理員身分打開另一個命令提示字元並下指令「mysql -uroot」。
C:\>mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.4.12-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
看到如是訊息就表示我們連線成功了,下指令「\q」或「exit」退出。
MariaDB [(none)]> exit
Bye
C:\>
接著關閉所有命令提示字元,徹底結束MariaDB。

第6步:把MariaDB安裝成Windows服務

到這邊大概會有高手問:我每次要啟動MariaDB都要先開個命令列下「mysqld」指令,還要再開第二個command-line下「mysql -u 'root'」指令真不方便。MariaDB能否裝成服務,它在我開機時自己在背景啟動?當然可以,開發MariaDB的那群大牛已經幫我們想到這個問題了。
以上設定都確認沒問題後,請以管理員身分執行命令提示字元。執行指令「mysqld --install」,接著再執行指令「net start mysql」,如果系統有提示啟動成功就ok了。當要把背景執行中的MariaDB關閉做些設定,指令是「net stop mysql」。更凶猛的是,從現在開始我們一開機它就會自己跳起來工作並等待我們去連線了。
記得有次小弟跟研究所的同學討論到MariaDB這個部分的內容時,有人開嗆:你現在用的是MariaDB,下什麼怪指令「net start mysql」?小弟因此學到我們安裝服務的指令可以是「mysqld --install MariaDB」或任何各位爽用的名字,開關指令分別變成「net start MariaDB」以及「net stop MariaDB」。
最後如果哪天各位要更版或砍掉這個服務,指令為「mysqld --remove」。當初如果有指定自己爽用的名字(如MariaDB),指令為「mysqld --remove MariaDB」。也提供給各位。

迷之音:唉有!你們這些傢伙也太吹毛求疵,哥能用就好了啊!算了,以上就是要基本使用MariaDB的全部安裝步驟。從下篇文章起,我們正式進入MariaDB基本觀念、常用指令和SQL語法的部分。

留言

#1

此篇留言已被刪除。

#2

阿慶

阿慶圖像

2021-08-21 20:42:12

From:219.91.55.9

針對設定檔的部分,我找了些資料,稍做一點補充。

utf8mb4 vs. utf8

在 MySQL 5.5.3 以後,一般來說會建議用 utf8mb4。因為它才是真正的 UTF-8 編碼,且完全兼容 utf8。 utf8 速度比較快但只支援三個字元長度的字,這代表部份中文字以及 Emoji 要存入的時候會噴錯。因為 utf8 這個名字實在是太令人混淆了,很多人會誤以為它就是 UTF-8 編碼,因此後來官方也做了一些調整,將它改名為 utf8mb3,mb3 指的是用三個位元組儲存,mb4 則是用四個位元組儲存的意思。
到了 MySQL 8.0 時, Oracle 將 utf8mb4 設為了預設編碼,也做了大幅的效能優化,變得比 utf8mb3 快很多,因此再也沒有使用舊編碼的理由了,舊編碼也被官方標為 deprecated,在未來會被移除掉。

general vs. unicode

一般會建議用 unicode,不要用 general 的版本。

  • general 版本(例如 utf8mb4_general_ci),在排序時比較快,但在某些特殊情況會排錯。
  • unicode 版本(例如 utf8mb4_unicode_ci),實作了完整的 Unicode 標準。
    例如在德文的 ß 在排序時應該看作是 ss,但在 _general_ci 內會被當成 s。或是有些字元是隱藏字元,排序時不應該被拿來做計算之類的。中文字之間的排序可能也會不一樣。詳細差別可以參考「官方文件」中的說明。

完整文章來源:點此連結

基於以上,設定檔可加入以下內容:

[mysqld]
# ...
collation_server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'

以上。順便感謝 Dack 幫我敘寫 SQL 的教學內容XDDD

#3

Dack

Dack圖像(預設)

2021-08-21 22:33:31

From:219.70.166.106

感謝補充,不過您這已到了調參數優化的地步會不會對初學者有一定的難度啊?(汗)

#4

阿慶

阿慶圖像

2021-08-22 00:14:34

From:219.91.55.9

沒有啊,都一樣放在設定檔,只要貼上就好了。
只是想說補充一下為什麼要這樣設定。

#5

Dack

Dack圖像(預設)

2021-08-22 00:56:57

From:219.70.166.106

了解

#6

特種兵

特種兵圖像(預設)

2021-08-22 11:55:55

From:111.249.154.17

那mariadb要去對應mysql的話不知道版本狀況是怎樣的
因為上面提到mysql最新8.0
就不確定mariadb對於utf8的支援狀況是如何

#7

阿慶

阿慶圖像

2021-08-22 14:32:11

From:219.91.55.9

MariaDB 10.2, MariaDB 10.3, and MariaDB 10.4 function as limited drop-in replacements for MySQL 5.7, as far as InnoDB is concerned. However, the implementation differences continue to grow in each new MariaDB version.
MariaDB 10.0 and MariaDB 10.1 function as limited drop-in replacements for MySQL 5.6, as far as InnoDB is concerned. However, there are some implementation differences in some features.
MariaDB 5.5 functions as a drop-in replacement for MySQL 5.5.
https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/

#8

阿慶

阿慶圖像

2021-08-22 14:43:19

From:219.91.55.9

所以 MariaDB 5.5 就等於 MySQL 5.5.
從文章來看,Mariadb 10.4 應該還是差不多在 MySQL 5.7 的基礎上,增加只有 MariaDB 才有的功能。

#9

特種兵

特種兵圖像(預設)

2021-08-23 09:57:49

From:211.23.21.202

看來mysql8.0要再等等囉

#10

Dack

Dack圖像(預設)

2021-08-24 06:35:45

From:219.70.166.106

MariaDB才是真理,否則就直上Oracle

#11

Dack

Dack圖像(預設)

2021-08-24 06:36:03

From:219.70.166.106

感覺Oracle並沒有很積極的維護MySQL,相對幫他們賺比較多收入的Oracle Database跟Java

#12

特種兵

特種兵圖像(預設)

2021-08-24 09:44:12

From:211.23.21.202

還是賺錢的優先吧,當初mysql做這個決定大概結局就不會太樂觀了

#13

Dack

Dack圖像(預設)

2021-08-24 23:44:30

From:219.70.166.106

同意

#14

阿慶

阿慶圖像

2021-08-25 02:15:35

From:219.91.55.9

MariaDB 不久前出了 10.6!!
也說了,會把 utf8 編碼設定當作 utf8mb3 來處理,也就是 utf8mb3 的別名是 utf8
而且我發現 MariaDB 10.5 出來部久就出了 10.6,感覺是因為有什麼重大突破才這樣。

#15

Dack

Dack圖像(預設)

2021-08-25 23:02:01

From:219.70.166.106

一個多月前才發現,原來我長時間使用MariaDB都是在utf8mb3編碼下(搔頭)