由淺入深抓住MySQL的精髓— (一)CentOS7上的MySQL安裝與配置

Andy Cheng
Andy的趣味程式練功坊
7 min readAug 14, 2021

前言

這一系列文章是介紹關於MySQL的原理、架構並撰寫如何提升MySQL的性能,比較基礎的SQL語句就不太會講,適合已經有用過資料庫做過軟體開發的讀者。這篇會講解如何在Linux上面安裝MySQL,還有MySQL的基本配置。

環境搭建準備

首先需要你準備一台虛擬機,我們會把需要的MySQL環境架在上面,如果你是用Mac可以參考我之前寫的這篇Centos 7安裝指南,如果是Windows可以參考網路上其他文章,我通常會用本機的終端機ssh至虛擬機中進行操作,這樣操作上比較順手也不太會有延遲,你也可以使用類似Xshell遠端操作。

第一步,到MySQL官網下載MySQL

請到官網的downloads地方並前往下載Community版本,並進入到MySQL Community Server的頁面。

我們是使用MySQL 5.7版本,因此到Archives,

配置像下圖這樣後,滑鼠移到Download右鍵「複製連結網址」,我們會直接到終端機進行下載。

使用終端機下載前,請先確定你的虛擬機有沒有wget,如果沒有的話,請按造下面步驟:

安裝前請用下面指令先進入root

sudo su

如果遠端無法進入root,可能要先配置一下,可以參考下面這篇文章:

接著使用yum install wget安裝

# yum install wget

然後就可以用下面指令進行安裝

# wget "https://downloads...." // 你剛剛複製的Downloads的網址

下載完成後你可以用ls查看一下是否有mysql-5.7.33….tar文件,有的話就代表你下載成功。

第二步,解壓縮並安裝MySQL

首先我們可以用指令tar解壓檔案:

# tar -xvf mysql-5.7.33...tar

解壓後,可以看到下面檔案

下面有很多後綴為rpm的安裝檔,rpm是centos自帶的套件管理器,我們可以用rpm -ivh 文件名 安裝套件。

這邊要注意的是,我們的安裝順序是

mysql-community-common -> mysql-community-libs -> mysql-community-common -> mysql-community-common

先從common開始安裝

# rpm -ivh mysql-community-common-5.7(後面省略)

接著安裝libs

# rpm -ivh mysql-community-libs-5.7(後面省略)

CentOS7自帶mariadb套件,所以可能會發生安裝失敗,可以先用rpm-qa | grep mariadb 查看有沒有mariadb開頭的套件,有的話我們先將它卸掉。

# rpm -e --nodeps mariadb-libs-5.5(後面省略)

接著再試一次,發現還是裝不起來,出現簽名校驗發生問題,這邊直接用force直接安裝即可解決。

# rpm -ivh --force --nodeps mysql-community-libs-5.7(後面省略)

安裝完libs後就來安裝client端。

# rpm -ivh --force --nodeps mysql-community-client-5.7(後面省略)

值得注意的是,安裝server端之前,需要再yum安裝幾個依賴套件

# yum install perl
# yum install net-tools

再進行server端的安裝

# rpm -ivh --force --nodeps mysql-community-server-5.7(後面省略)

如果沒有報錯,可以運行看看which mysql,如果有路徑的話,恭喜你安裝成功囉。

第三步,mysql配置

mysql的默認配置路徑在/etc/my.cnf ,首先我們用vim編輯這個檔案,讓mysql的校驗先取消,因為mysql在安裝完成後,會先自動配置root的默認密碼,我們如果要看的話可以去log中查看,再登入進去,但這樣太麻煩,我們可以先取消mysql的校驗,添加skip-grant-tables

# vim /etc/my.cnf

:wq 退出保存後,執行以下指令啟動服務。

# systemctl start mysqld.service

輸入mysql就能進去mysql中了,接著我們先配置一下root的密碼:

mysql> update mysql.user set authentication_string=password('密碼') where user = 'root';

這樣我們就設置好root的密碼了,接著先關閉mysqld.service

# systemctl stop mysqld.service

vim /etc/my.cnfskip-grant-tables註解掉,不然太危險。

最後再啟動服務:

# systemctl start mysqld.service

然後輸入mysql -uroot -p 密碼 就能再次進到mysql。

如果你的密碼跟我一樣很簡單,那需要先去修改一下mysql的global配置。

第四步,開啟mysql的防火牆

我們通常想看資料庫的表,會使用像navicat進行連接,但你直接連接時,可能會有個10060 Unkown error的錯誤,因為防火牆擋住mysql默認的3306端口,因此我們需要先打開3306端口,可以輸入下列命令直接搞定:下面命令就是永久開啟3306的端口。

# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# firewall-cmd --reload

除此之外,還要至mysql中,允許所有域名遠端使用root帳號,及密碼進行登入。

mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

執行完後,照理說就能直接用navicat進行mysql連接了。

以上是我們今天介紹的mysql前置準備,謝謝各位。

我是Andy,謝謝你看完這篇文章,如果文章有幫助到你的話,希望不吝於幫我拍手 🙌🙌

--

--

Andy Cheng
Andy的趣味程式練功坊

若能將學到的知識轉化為易懂的文章,才能算是真正學會。這是我創建這個帳號的初衷。