跳到主要內容

Fedora 29 架站實務 之 Part 5 MariaDB 開源版MySQL

前情提要: 

Fedora 29 架站實務 之 Part 4 安裝php-fpm



我熟悉的MySQL到哪裡去了 ?:

這說來要講起一段坎坷的故事,MySQL出現於1995年,由MySQL AB公司以 軟體開源 服務收錢(軟體要使用全部都免費,但是需要本公司提供服務支援時(好比顧問)需要收錢) 的方式經營,讓MySQLAB成為了當時全球最大的開放原始碼公司。MySQL高效能低成本(某些情況可以視為不用錢)可靠性高,成為當時架設網站的首選,2008年由昇陽電腦(Sun Microsystems)收購後,仍維持原本的經營方式。
事情的變化是到了2010年,甲骨文公司(Oracle)收購了昇陽電腦後發生的:
Oracle 的經營下,MySQL Enterprise 售價大幅提高,同時也腰斬了許多昇陽電腦時代旗下出了名的開源軟體: StarOffice 的開源版OpenOffice 丟給了Apache 基金會,逼得LibreOffice 誕生。OpenSolaris 停止公司支援而社群努力支撐後來的Openindiana。Oracle 對於開源軟體的極度不友善,讓MySQL創始人擔憂,故以MySQL基礎,成立了MariaDB。
目前的MySQL仍然有社群版本(Community Edition),但帶著原本精神的MySQL已經來到了MariaDB。
所以,MySQL沒有消失,甚至我們在MariaDB的指令裡都還是看的到MySQL的身影呢。而會不會有什麼相容性問題呢 ? 目前似乎是沒有這個個案(至少php5原本的php.mysql運作上沒有問題),所以就請客官們放心吧。

MariaDB 的執行在Fedora 29 Server上的重要資訊:


  • 服務名稱: mariadb
  • 預設的執行帳號: mysql
  • 設定檔案位置: /etc/my.cnf 和 /etc/my.cnf.d/
  • 實際資料庫儲存: /var/lib/mysql/
  • Log檔案位置: /var/log/mariadb/
  • 預設通訊Socket: /var/lib/mysql/mysql.sock 或 3306埠
  • 預設Root密碼: [空白] (MySQL預設的管理資料庫最高權限帳號也是root,和Linux的root是不同的)
  • 服務預設狀態: 不開機啟動,停止


安裝MariaDB:

# dnf install mariadb mariadb-server

啟動MariaDB 服務:

# systemctl start mariadb

讓MariaDB 開機就啟動:

# systemctl enable mariadb

安裝MariaDB的基本資料庫與基本設定:

這個程式會協助你完成: 設定root 密碼、移除匿名使用者、設定root是否能夠遠端登入、移除test資料庫

# mysql_secure_installation
第一次會要求登入MariaDB,而預設root密碼是空白,所以按下Enter就好

登入之後會詢問您否要設定 root密碼,請選y,Enter 後會要求輸入新的root密碼。這時請輸入您的root新密碼。

完成後系統會詢問您是否移除匿名使用者,請選y,按下Enter繼續。

接下來系統會詢問您是否拒絕root從遠端登入,請選y,按下Enter繼續。

系統詢問您是否要移除test資料庫,請選y,按下Enter繼續。

最後系統會詢問您是否要重新載入權限資料,請選y,按下Enter繼續

當您看到這個畫面時,代表您的MariaDB已經設定好了。

看完這些我想我會需要很多說明:

Q: 資料庫為什麼會有自己獨立的權限系統 ?
A: (注意: 這是我的解釋) 當然如果要依照系統的權限來決定存取的資料庫也是有的(e.g. MSSQL),但是這樣會讓管理很麻煩,作業系統的權限設定的複雜度會近乎無限提升(什麼都管,什麼都理)。

Q: MariaDB為什麼會有匿名使用者? 不移除會怎麼樣呢 ?
A: 匿名使用者,依照MariaDB所述,是用來進行測試用的(應該是測試是否可以依照指定的主機表來進行允許或拒絕連線),而這些匿名使用者就算不移除,系統的預設設定是: 全部拒絕其任何要求,以下便是不移除而phpMyAdmin中對於帳號的存取權限顯示:

Q: test 資料庫是做什麼用的 ?
A: 開發過程中測試MariaDB的時候使用。

Q: 為什麼不放行root進行遠端連線 ?
A: 就依安全管理的面相來說,任何開放直接連線便具有管理權限的帳號都是危險而不建議的。

Q: 網路上都說架網站或寫程式直接用root連線就好,這樣方便又快速,為什麼要對root做出管制 ?
A: 權限管理角度方面提倡的是: 最小權限完成最大的事情,root的權限已經完全超過一般架網站或寫程式的需求(只需要對特定資料庫存取即可、並不需要有權限可以管理其他資料庫、也不需要可以賦予他人權限),建議您建立額外的使用者,並賦予適當的權限即可。

Q: 為什麼在這裡沒有講到要開3306埠呢 ?
A: Well, it depends. 如果您的架構是網站或應用程式在另一台主機,而這台主機只作為資料庫時,就必須讓防火牆放行3306,讓另一台主機來存取,但是在本專案中,我們視為網站(或應用程式)與資料庫在同一台電腦上,此時請愛用localhost 或者是socket 存取,提升安全性。
如果您要放行的話:
# firewall-cmd --zone=FedoraServer --add-service=mysql --permanent
Q: 為何使用mysql_secure_installation,而不用mysql_install_db呢 ?
A: 確實在許多方法中會提及使用mysql_install_db,但這個方法(在Fedora 29 Server上)會導致權限混亂,MariaDB就無法執行了,實際原因是在於任何人執行了mysql_install_db 都會導致設些預設的資料庫存取權限是屬於執行的帳號的(也就是說 root 執行mysql_install_db,那預設的資料庫檔案(注意: 不是資料庫,而是資料庫檔案)都會變成root權限所擁有,mysql帳號無法讀取,也無法寫入。(PS. 我正是犯了這個錯的笨蛋...)


留言

這個網誌中的熱門文章

網路卡卡急救章 – 您用的網路,您了解嗎 ?

這是我應該在乎的事情嗎 ? 是,同時也不是。取決於你對於網路的要求程度有多高而有變異。對於一個上上網偶爾看看Youtube的人,這些不是他會在乎的問題,便宜,能用就好,對一個線上遊戲玩家來說,穩定才是首要考量的問題,對一個追劇狂來說,方案提供的總流量才是考量。所以正在看文章的您是什麼樣的使用者呢 ? 無論怎麼樣的使用者,對於自己正在使用什麼樣的網路多了解一些,也不是壞事。

暫時當一下外國人的 SoftEther VPN Gate

在一個自由的國度與優質的ISP裡: 這兩個評斷台灣的網路服務環境,我想許多人便是吐槽不已,但我想與各位討論的,便是靜下來思考: 台灣的ISP好在哪些地方 ? 還記得第一次日本出差的嚮往,我期待著超乎我能所想像的高速網路,隨處可方便使用的行動網路。莫約小學(2006年左右),網路上大家總是謾罵著中華電信傲慢無理的價格且速度緩慢,而日本如火如荼的進行著光纖鋪設,便是邊用中華順便謾罵。 而在日本的三個月期間,用的是NTT(相當於日本版的中華電信)的有線網路與4G服務,我覺得才便能體會台灣ISP所提供的服務水準: NTT FLET'S光迴線 300 晚間尖峰時段測速 2018/3/05 會津若松市 中華電信 4G 晚間尖峰時段測速 2019/3/20 花蓮縣壽豐鄉 在日本,無線網路通訊基本上是沒有吃到飽的(Au WiMax 雖然流量無限但還是會有每日到量限速),所以若要回宿舍做事最好還是裝固網 But What can I say ? 而台灣的ISP(用中華電信的體驗下來),是鮮少管東管西的: eMule 流量要不要限制、BT故意阻擋等等,讓使用VPN的理由實在不多,而自由的發言,不管控觀看內容,我想這個就留給客官們各自評斷了。 而如果對於P2P不友善的ISP有哪些, 倒是可以看看這個表 ,便一切皆知喔。 有限制地區的服務: 然而網站有些內容仍然會因為地區的關係而決定要不要顯示,如果是學術研究者,會很經常用到TANET的SSL-VPN,因為這些 死要錢 的論文網站都會綁學校的IP Block,要使用非得以用學校的網路出去。日常生活中,最明顯的可以從某些Youtube 影片,陸方的影音網站便能知曉 VPN 與你: VPN能提供的好處不少,但能導致的壞處也不少: VPN的好處: 隱藏自己實際的身分、公共網路上(如機場、飯店等開放式WiFi)他人無法竊聽整個傳輸內容(包含上了什麼網站等等的)、使用當地國網路優勢 VPN的壞處: 不良VPN提供業者可能會記錄傳輸內容、伺服器效能不足導致網路使用緩慢。 SoftEther VPN 與筑波大學: 筑波大學在VPN方面的研究十分奇葩,也相對先進。用盡各種方式建立VPN(甚至只要能送Ping 也能作為VPN,實際運作原理不多說)

讓我們來談談DELL XPS 13 9343 那恐怖的雜音

作為Dell 旗艦級筆電的XPS系列: 對一個實驗生來說,長效高性能的筆電,是一個叫做: 想作為必備,但是沒本事買配備。 餐餐的泡麵與吐司果醬,當覺得已經似乎快超脫時,便重金砸下。