記錄一下自己在 CentOS7 下 rpm 安裝 MySQL8.0.16 的過程。

一、準備工作

1. 下載MySQL所需要的安裝包

MySQL官網 下載,上傳至 CentOS 系統 /usr/local/MySQL 目錄下,當然你也可以使用 wget 命令直接下載至 CentOS,此處使用的 8.0.16 版本。

# 你想要的版本
Product Version: 8.0.16
# CentOS選擇Red Hat Enterprise Linux / Oracle Linux
Operating System:OS Version: Red Hat Enterprise Linux / Oracle Linux
# CentOS7 64位選擇
OS Version: Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)

然後下載rpm包(RPM Bundle)。

2. 檢查是否存在自帶mariadb

CentOS7 開始不自帶 MySQL,替換成了 mariadb,但是我們安裝 MySQL 的時候會衝突,所以需要先解除安裝 mariadb。

# 查詢是否存在自帶mariadb
rpm -qa | grep mariadb # 如果存在則解除安裝, 比如我查找出來的名稱為mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps

3. 檢查是否安裝過MySQL

# 檢查是否安裝過mysql
rpm -qa | grep mysql # 如果存在則解除安裝, 比如名稱為mysql-libs-5.1.52.x86_64
rpm -e mysql-libs-5.1.52.x86_64 --nodeps

4. 檢查mysql組及使用者是否存在,不存在則建立

# 檢查
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql # 建立
groupadd mysql
useradd -r -g mysql mysql

5. 檢查是否開啟MySQL使用埠

我使用的預設埠3306。

# 檢視想開的埠是否已開,若此提示FirewallD is not running, 表示為不可知的防火牆 需要檢視狀態並開啟防火牆, 如果是雲伺服器還需要去控制檯配置安全組訪問
firewall-cmd --query-port=3306/tcp # 開啟埠, success代表成功
firewall-cmd --add-port=3306/tcp --permanent
# 重新整理配置, 使配置生效
firewall-cmd --reload

二、安裝及配置MySQL

1. 解壓

cd /usr/local/mysql

# 解壓
tar -xvf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar # 檢視一下解壓出來的檔案
ll
#結果
-rw-r--r--. 1 7155 31415 33432660 5月 3 2019 mysql-community-client-8.0.16-2.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 588520 5月 3 2019 mysql-community-common-8.0.16-2.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 5712552 5月 3 2019 mysql-community-devel-8.0.16-2.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 24493344 5月 3 2019 mysql-community-embedded-compat-8.0.16-2.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 3127296 5月 3 2019 mysql-community-libs-8.0.16-2.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 2177156 5月 3 2019 mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 422672748 5月 3 2019 mysql-community-server-8.0.16-2.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 114848996 5月 3 2019 mysql-community-test-8.0.16-2.el7.x86_64.rpm

2. 通過rpm命令安裝common

# 命令
rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm # 列印內容
警告:mysql-community-common-8.0.16-2.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 金鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-common-8.0.16-2.e################################# [100%]

3. 通過rpm命令安裝libs

# 命令
rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm # 列印內容
警告:mysql-community-libs-8.0.16-2.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 金鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-libs-8.0.16-2.el7################################# [100%]

4. 通過rpm命令安裝client

# 命令
rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm # 列印內容
警告:mysql-community-client-8.0.16-2.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 金鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-client-8.0.16-2.e################################# [100%]

5. 通過rpm命令安裝server

如果這裡提示缺少net-tool依賴,那麼 yum -y install net-tools* 安裝再執行

# 命令
rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm # 列印內容
警告:mysql-community-server-8.0.16-2.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 金鑰 ID 5072e1f5: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:mysql-community-server-8.0.16-2.e################################# [100%]

6. 檢視MySQL安裝包

# 命令
rpm -qa | grep mysql # 列印內容
mysql-community-libs-8.0.16-2.el7.x86_64
mysql-community-common-8.0.16-2.el7.x86_64
mysql-community-client-8.0.16-2.el7.x86_64
mysql-community-server-8.0.16-2.el7.x86_64

7. 初始化MySQL資料庫

該命令會在 /var/log/mysqld.log 生成隨機密碼。

mysqld --initialize

8. 配置使用者組

配置MySQL資料庫目錄所屬的使用者和組,預設MySQL的配置檔案路徑為: /etc/my.cnf,如果有需要可以修改配置檔案。

chown mysql:mysql /var/lib/mysql -R

9. 啟動MySQL資料庫

# 啟動mysqld.service
systemctl start mysqld # 檢視狀態, 顯示有 running 代表啟動成功
systemctl status mysqld

10. 修改資料庫密碼

# 檢視資料庫密碼
cat /var/log/mysqld.log | grep password # 列印內容, 其中4M4pSDfcr=9o就是資料庫密碼
2020-04-03T14:34:28.837144Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 4M4pSDfcr=9o
# 使用查詢到的密碼登入MySQL
mysql -u root -p'4M4pSDfcr=9o' # 登入到MySQL之後修改密碼為自定義密碼(我設定為123456), 這個設定還和5.7版本不同呢
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; # 使用`exit;`退出MySQL後使用自定義密碼重新登入

11. 建立使用者並授權遠端登入

此處不能使用 5.7 版本的方式,不然會報錯。

mysql> GRANT ALL PRIVILEGES ON *.* TO 'SunnyBear'@'%' IDENTIFIED BY '123456';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456'' at line 1

8.0版本需要使用如下方式,和 Oralce 的建立授權類似,先建立使用者再賦予許可權。

因為正常開發一般 root 使用者不允許遠端登入,所以我們建立一個 SunnyBear 使用者,賦予使用 sunny 資料庫(已經使用命令建立好)的許可權。

# 先建立一個使用者
mysql> CREATE USER 'SunnyBear'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec) # 授權
# 其中sunny.*代表賦予sunny資料庫所有操作許可權, 如果想賦予所有資料庫許可權, 可設定為*.*
# 其中'SunnyBear'@'%'代表允許SunnyBear使用者在任何ip登入, 當然也可以指定ip, 例如'使用者名稱稱'@'ip地址'
mysql> GRANT ALL PRIVILEGES ON sunny.* TO 'SunnyBear'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec) # 重新整理許可權
FLUSH PRIVILEGES;

配置成功之後可以使用連線工具嘗試連線,我這裡使用的是 Navicat,至此,單機版 MySQL 安裝配置完成。

12. 一些命令

# 啟動mysql服務
systemctl start mysqld.service # 停止mysql服務
systemctl stop mysqld.service # 重啟mysql服務
systemctl restart mysqld.service # 檢視mysql服務當前狀態
systemctl status mysqld.service # 設定mysql服務開機自啟動
systemctl enable mysqld.service # 停止mysql服務開機自啟動
systemctl disable mysqld.service

都讀到這裡了,來個 點贊、評論、關注、收藏 吧!

文章作者:IT王小二

首發地址:https://www.itwxe.com/posts/79382061/

版權宣告:文章內容遵循 署名-非商業性使用-禁止演繹 4.0 國際 進行許可,轉載請在文章頁面明顯位置給出作者與原文連結。