由淺入深抓住MySQL的精髓— (一)CentOS7上的MySQL安裝與配置
前言
這一系列文章是介紹關於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.cnf
將skip-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,謝謝你看完這篇文章,如果文章有幫助到你的話,希望不吝於幫我拍手 🙌🙌