Linux部署MySQL
在今后的使用過程中,需要頻繁使用Linux系統,所以在Linux上安裝軟是必不可少的操作 。
前置要求
- 需要學習前四章知識,初識Linux、Linux基礎命令、Linux權限管理、Linux高階技巧這4個章節。
- 需要開啟多態虛擬機,電腦內存要大于8G,或者可以選擇使用阿里云等云服務器。
MySQL的安裝部署
MySQL數據庫管理系統(后續簡稱MySQL),是一款知名的數據庫系統,其特點是:輕量、簡單、功能豐富。
MySQL數據庫可謂是軟件行業的明星產品,無論是后端開發、大數據、AI、運維、測試等各類崗位,基本上都會和MySQL打交道。
從MySQL開始,進行實戰的Linux軟件安裝部署。
下面將介紹2個版本進行安裝:
- MySQL 5.7版本安裝
- MySQL 8.x版本安裝
MySQL5.7版本在CentOS系統安裝
注意:安裝操作需要root權限
MySQL的安裝可以通過前面學習的yum命令進行。
安裝
- 配置yum倉庫
# 更新密鑰
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安裝Mysql yum庫
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
- 使用yum安裝MySQL
# yum安裝Mysql
yum -y install mysql-community-server
- 安裝完成后,啟動MySQL并配置開機自啟動
systemctl start mysqld # 啟動
systemctl enable mysqld # 開機自啟
MySQL安裝完成后,會自動配置為名稱叫做:
mysqld
的服務,可以被systemctl
所管理
- 檢查MySQL的運行狀態
systemctl status mysqld
配置
配置管理員用戶root的密碼以及配置允許遠程登錄的權限
- 獲取MySQL的初始密碼
# 通過grep命令,在/var/log/mysqld.log文件中,過濾temporary password關鍵字,得到初始密碼
grep 'temporary password' /var/log/mysqld.log
- 登錄MySQL
# 執行
mysql -uroot -p
# 解釋
# -u,登陸的用戶,MySQL數據庫的管理員用戶同Linux一樣,是root
# -p,表示使用密碼登陸# 執行完畢后輸入剛剛得到的初始密碼,即可進入MySQL數據庫
- 修改root用戶密碼
# 在MySQL控制臺內執行
ALTER USER 'root'@'localhost' IDENTIFIED BY '密碼'; -- 密碼需要符合:大于8位,有大寫字母,有特殊符號,不能是連續的簡單語句如123,abc
- 配置root的簡單密碼
我們可以給root設置簡單密碼,如123456.
請注意,此配置僅僅是用于測試環境或學習環境的MySQL,如果是正式使用,請勿設置簡單密碼
# 如果你想設置簡單密碼,需要降低Mysql的密碼安全級別
set global validate_password_policy=LOW; # 密碼安全級別低
set global validate_password_length=4; # 密碼長度最低4位即可# 然后就可以用簡單密碼了(在學習中使用簡單密碼,為了方便,生產中不要這樣)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
- 配置root遠程登錄
默認情況下,root用戶是不運行遠程登錄的,只允許在MySQL所在的Linux服務器登陸MySQL系統
請注意,允許root遠程登錄會帶來安全風險
# 授權root遠程登錄
grant all privileges on *.* to root@"IP地址" identified by '密碼' with grant option;
# IP地址即允許登陸的IP地址,也可以填寫%,表示允許任何地址
# 密碼表示給遠程登錄獨立設置密碼,和本地登陸的密碼可以不同# 刷新權限,生效
flush privileges;
- 退出MySQL控制臺頁面
# 退出命令
exit# 或者通過快捷鍵退出:ctrl + d
-
檢查端口
MySQL默認綁定了3306端口,可以通過端口占用檢查MySQL的網絡狀態
netstat -anp | grep 3306
至此,MySQL就安裝完成并可用了,請妥善保存好MySQL的root密碼。
使用Navicat連接centOS7.9中的MySQL5.7
- 開啟防火墻
systemctl start firewalld
- 顯示防火墻狀態
systemctl status firewalld
- 打開防火墻的3306端口(
--permanent
永久生效)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重啟防火墻
service firewalld restart
- 使用Navicat連接centOS中的MySQL5.7
MySQL8.0版本在CentOS系統安裝
注意:安裝操作需要root權限
安裝
- 配置yum倉庫(這里的2023要緊跟實時)
# 更新密鑰
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023# 安裝Mysql8.x版本 yum庫
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
- 使用yum安裝MySQL
# yum安裝Mysql
yum -y install mysql-community-server
- 安裝完成后,啟動MySQL并配置開機自啟動
systemctl start mysqld # 啟動
systemctl enable mysqld # 開機自啟
MySQL安裝完成后,會自動配置為名稱叫做:
mysqld
的服務,可以被systemctl
所管理
- 查看MySQL的運行狀態
systemctl status mysqld
配置
主要修改root密碼和允許root遠程登錄
- 獲取MySQL的初始密碼
# 通過grep命令,在/var/log/mysqld.log文件中,過濾temporary password關鍵字,得到初始密碼
grep 'temporary password' /var/log/mysqld.log
- 登錄MySQL數據庫系統
# 執行
mysql -uroot -p
# 解釋
# -u,登陸的用戶,MySQL數據庫的管理員用戶同Linux一樣,是root
# -p,表示使用密碼登陸# 執行完畢后輸入剛剛得到的初始密碼,即可進入MySQL數據庫
- 修改root密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼'; -- 密碼需要符合:大于8位,有大寫字母,有特殊符號,不能是連續的簡單語句如123,abc
- 配置root的簡單密碼
我們可以給root設置簡單密碼,如123456.
請注意,此配置僅僅是用于測試環境或學習環境的MySQL,如果是正式使用,請勿設置簡單密碼
set global validate_password.policy=0; # 密碼安全級別低
set global validate_password.length=4; # 密碼長度最低4位即可
- 允許root遠程登錄,并設置遠程登錄密碼
默認情況下,root用戶是不運行遠程登錄的,只允許在MySQL所在的Linux服務器登陸MySQL系統
請注意,允許root遠程登錄會帶來安全風險
# 第一次設置root遠程登錄,并配置遠程密碼使用如下SQL命令
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼!'; -- 密碼需要符合:大于8位,有大寫字母,有特殊符號,不能是連續的簡單語句如123,abc# 后續修改密碼使用如下SQL命令
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
- 退出MySQL控制臺頁面
# 退出命令
exit# 或者通過快捷鍵退出:ctrl + d
-
檢查端口
MySQL默認綁定了3306端口,可以通過端口占用檢查MySQL的網絡狀態
netstat -anp | grep 3306
至此,MySQL就安裝完成并可用了,請妥善保存好MySQL的root密碼。
使用Navicat連接centOS7.9中的MySQL8.0
- 開啟防火墻
systemctl start firewalld
- 顯示防火墻狀態
systemctl status firewalld
- 打開防火墻的3306端口(
--permanent
永久生效)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重啟防火墻
service firewalld restart
- 使用Navicat連接centOS中的MySQL8.0
- 查看MySQL版本
mysql> status;
--------------
mysql Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)Connection id: 12
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.36 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/lib/mysql/mysql.sock
Binary data as: Hexadecimal
Uptime: 18 min 0 secThreads: 3 Questions: 21 Slow queries: 0 Opens: 179 Flush tables: 3 Open tables: 95 Queries per second avg: 0.019
--------------mysql>
可以看到這個MySQL的版本號是8.0.36
使用Xshell連接Ubuntu系統
Ubuntu系統的配置
- 提升root權限
sudo su -
#輸入密碼
- 安裝
net-tools
sudo apt install net-tools
- 查看IP地址
ifconfig
- 查看22號端口
netstat -ntlp|grep 22
- 安裝
spenssh-server
apt-get install openssh-server
- 啟動ufw防火墻
ufw enable
- 允許通過TCP協議在22端口上的傳入連接
ufw allow 22/tcp
使用Xshell連接Ubuntu系統
- 填寫IP
- 填寫用戶密碼
- 在Xshell上登錄成功
MySQL5.7版本在Ubuntu(可使用WSL環境)系統安裝
課程中配置的WSL環境是最新的Ubuntu22.04版本,這個版本的軟件商店內置的MySQL是8.0版本
所以我們需要額外的步驟才可以安裝5.7版本的MySQL
安裝操作需root權限,你可以:
-
通過
sudo su -
,切換到root用戶課程中選擇這種方式操作
-
或在每一個命令前,加上
sudo
,用來臨時提升權限
安裝
- 下載apt倉庫文件
# 下載apt倉庫的安裝包,Ubuntu的安裝包是.deb文件
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
- 配置
apt
倉庫
# 使用dpkg命令安裝倉庫
dpkg -i mysql-apt-config_0.8.12-1_all.deb
彈出框中選擇:ubuntu bionic
(Ubuntu18.04系統的代號是bionic,選擇18.04的版本庫用來安裝)
彈出框中選擇:MySQL Server & Cluster
彈出框中選擇:mysql-5.7
最后選擇ok
- 更新apt倉庫的信息
# 首先導入倉庫的密鑰信息
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
# 更新倉庫信息
apt update
- 檢查是否成功配置MySQL5.7的倉庫
apt-cache policy mysql-server
發現沒有5.7版本的MySQL,并有以下報錯
W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B7B3B788A8D3785C
E: The repository 'http://repo.mysql.com/apt/ubuntu bionic InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
該報錯說明APT無法驗證倉庫的 GPG 簽名,因為它缺少必要的公鑰,可以執行以下命令
#加入公鑰
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
#更新apt
apt update
#查看是否配置MySQL5.7倉庫
apt-cache policy mysql-server
- 安裝MySQL5.7
# 使用apt安裝mysql客戶端和mysql服務端
apt install -f -y mysql-client=5.7* mysql-community-server=5.7*
加載安裝
進入安裝界面
輸入密碼,123456,然后選擇ok
再次輸入密碼,然后選擇ok
- 啟動MySQL5.7
/etc/init.d/mysql start # 啟動
/etc/init.d/mysql stop # 停止
/etc/init.d/mysql status # 查看狀態
- 對MySQL5.7進行初始化
# 執行如下命令,此命令是MySQL安裝后自帶的配置程序
mysql_secure_installation
# 可以通過which命令查看到這個自帶程序所在的位置
root@DESKTOP-Q89USRE:~# which mysql_secure_installation
/usr/bin/mysql_secure_installation
-
輸入密碼
-
是否開啟密碼驗證插件,如果需要增強密碼安全性,輸入
y
并回車,不需要直接回車(課程中選擇直接回車) -
是否更改root密碼,需要輸入
y
回車,不需要直接回車(課程不更改) -
是否移除匿名用戶,移除輸入
y
回車,不移除直接回車(課程選擇移除) -
是否進制root用戶遠程登錄,禁止輸入
y
回車,不禁止直接回車(課程選擇不禁止) -
是否移除自帶的測試數據庫,移除輸入
y
回車,不移除直接回車(課程選擇不移除) -
是否刷新權限,刷新輸入
y
回車,不刷新直接回車(課程選擇刷新) -
登錄MySQL5.7
mysql -u root -p
至此,在Ubuntu上安裝MySQL5.7版本成功。
使用Navicat連接Ubuntu中的MySQL5.7
- 配置MySQL的文件,需要用到
vim
操作,先安裝vim
命令
apt install vim
- 編輯
/etc/mysql/mysql.conf.d/mysqld.cnf
文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注釋掉 bind-address = 127.0.0.1
# bind-address = 127.0.0.1
添加3306端口
port = 3306
最后按ESC輸入:wq
保存并退出
- 重啟MySQL5.7
#停用MySQL
service mysql stop
#啟動MySQL
service mysql start
#設置MySQL開機自啟動
systemctl enable mysql
- 進入MySQL配置遠程登錄密碼
# 授權root遠程登錄
grant all privileges on *.* to root@"IP地址" identified by '密碼' with grant option;
# IP地址即允許登陸的IP地址,也可以填寫%,表示允許任何地址
# 密碼表示給遠程登錄獨立設置密碼,和本地登陸的密碼可以不同# 刷新權限,生效
flush privileges;
- 配置防火墻,開放3306防火墻端口
#安裝防火墻軟件
apt install firewalld
- 開放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重啟防火墻
firewall-cmd --reload
- 查詢防火墻是否允許通過3306端口
firewall-cmd --query-port=3306/tcp
- 使用Navicat連接Ubuntu中的MySQL5.7
MySQL8.0版本在Ubuntu(可使用WSL環境)系統安裝
課程中配置的WSL環境是最新的Ubuntu22.04版本,這個版本的軟件商店內置的MySQL是8.0版本
所以直接可以通過apt安裝即可
注意,課程是以WSL獲得的Ubuntu操作系統環境。
如果你通過VMware虛擬機的方式獲得了Ubuntu操作系統環境,操作步驟不用擔心,和課程中使用WSL環境是完全一致的
安裝操作需root權限,你可以:
-
通過 sudo su -,切換到root用戶
課程中選擇這種方式操作
-
或在每一個命令前,加上sudo,用來臨時提升權限
安裝
- 如果已經安裝過MySQL5.7版本,需要卸載倉庫信息哦
# 卸載MySQL5.7版本
apt remove -y mysql-client=5.7* mysql-community-server=5.7*# 卸載5.7的倉庫信息
dpkg -l | grep mysql | awk '{print $2}' | xargs dpkg -P
- 更新apt倉庫信息
apt update
- 安裝MySQL
apt install -y mysql-server
- 啟動MySQL
/etc/init.d/mysql start # 啟動
/etc/init.d/mysql stop # 停止
/etc/init.d/mysql status # 查看狀態
- 登錄MySQL8.0,設置密碼
# 直接執行:mysql
mysql
- 設置密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
- 退出MySQL控制臺
exit
- 初始化MySQL8.0
# 執行如下命令,此命令是MySQL安裝后自帶的配置程序
mysql_secure_installation
# 可以通過which命令查看到這個自帶程序所在的位置
root@DESKTOP-Q89USRE:~# which mysql_secure_installation
/usr/bin/mysql_secure_installation
- 輸入密碼
- 是否開啟密碼驗證插件,如果需要增強密碼安全性,輸入
y
并回車,不需要直接回車(課程中選擇直接回車)
- 是否更改root密碼,需要輸入
y
回車,不需要直接回車(課程不更改)
- 是否移除匿名用戶,移除輸入
y
回車,不移除直接回車(課程選擇移除)
- 是否進制root用戶遠程登錄,禁止輸入
y
回車,不禁止直接回車(課程選擇不禁止)
- 是否移除自帶的測試數據庫,移除輸入
y
回車,不移除直接回車(課程選擇不移除)
- 是否刷新權限,刷新輸入
y
回車,不刷新直接回車(課程選擇刷新)
- 重新登陸MySQL(用更改后的密碼)
mysql -u root -p
至此,在Ubuntu上安裝MySQL8.0版本成功。
使用Navicat連接Ubuntu中的MySQL8.0
- 配置MySQL的文件,需要用到
vim
操作,先安裝vim
命令
apt install vim
- 編輯
/etc/mysql/mysql.conf.d/mysqld.cnf
文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注釋掉 bind-address = 127.0.0.1
# bind-address = 127.0.0.1
添加3306端口
port = 3306
最后按ESC輸入:wq
保存并退出
- 重啟MySQL5.7
#停用MySQL
service mysql stop
#啟動MySQL
service mysql start
#設置MySQL開機自啟動
systemctl enable mysql
- 進入MySQL配置遠程登錄密碼
在MySQL 5.7.6及以后的版本中,CREATE USER
和GRANT
語句是分開的
CREATE USER 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED BY '654321';
#授予該用戶所有數據庫的所有權限,并允許該用戶授予其他用戶權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
#刷新權限
FLUSH PRIVILEGES;
#退出
exit;
- 配置防火墻,開放3306防火墻端口
#安裝防火墻軟件
apt install firewalld
- 開放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重啟防火墻
firewall-cmd --reload
- 查詢防火墻是否允許通過3306端口
firewall-cmd --query-port=3306/tcp
- 使用Navicat連接Ubuntu中的MySQL8.0
注意
在正式的生產環境中,一定要使用強密碼配置MySQL的登錄,以及Linux的登錄,MySQL遠程登錄最好是固定一個公網IP,阿里云服務器中專用的安全組策略來設置,同時要定期備份數據庫。否則你的數據庫會像如下一樣,被劫持。
在使用Ubuntu系統安裝MySQL時,使用虛擬機創建的Ubuntu與上述WSL環境一樣
WSL環境是指Windows自帶的Linux系統環境