CentOS?7/8/9上安裝?MySQL?8.0+的方法完整指南
一、流程圖

二、安裝前的準(zhǔn)備工作
在開始安裝之前,建議你先完成以下步驟:
更新系統(tǒng)軟件包: 更新系統(tǒng),確保所有軟件包都是最新狀態(tài)。(對(duì)于啟用 dnf 的系統(tǒng),請(qǐng)?jiān)诿钪袑?yum 替換為 dnf)
yum update
檢查是否已安裝 MySQL:執(zhí)行以下命令檢查
yum list installed | grep mysql yum list installed | grep mariadb
卸載:如果存在舊版本,建議卸載以避免沖突。
yum remove 包名
清理殘留文件:卸載后建議刪除相關(guān)配置文件和數(shù)據(jù)目錄。
# 刪除配置文件 rm -rf /etc/my.cnf # 刪除數(shù)據(jù)目錄(注意:會(huì)刪除所有數(shù)據(jù)) rm -rf /var/lib/mysql # 刪除日志文件 rm -rf /var/log/localhost.log
三、使用包管理器安裝(簡(jiǎn)單,易管理)
1.添加 MySQL Yum 存儲(chǔ)庫(kù)
從 MySQL Yum 存儲(chǔ)庫(kù)頁(yè)面 下載它。上傳到服務(wù)器后執(zhí)行(對(duì)于啟用 dnf 的系統(tǒng),請(qǐng)?jiān)诿钪袑?yum 替換為 dnf)
yum localinstall mysql84-community-release-el9-1.noarch.rpm
您可以通過以下命令檢查 MySQL Yum 存儲(chǔ)庫(kù)是否已成功添加并啟用
yum repolist enabled | grep mysql.*-community
2. 禁用默認(rèn)的 MySQL 模塊
(僅限 EL8 系統(tǒng)) 基于 EL8 的系統(tǒng)(例如 RHEL8 和 Oracle Linux 8)包含一個(gè)默認(rèn)情況下啟用的 MySQL 模塊。
yum module disable mysql
3. 安裝 MySQL
通過以下命令安裝 MySQL
yum install mysql-community-server
這將安裝 MySQL 服務(wù)器軟件包 (mysql-community-server),以及運(yùn)行服務(wù)器所需組件的軟件包,包括客戶端軟件包 (mysql-community-client)、客戶端和服務(wù)器的通用錯(cuò)誤消息和字符集 (mysql-community-common) 以及共享客戶端庫(kù) (mysql-community-libs)。
4. 啟動(dòng) MySQL 服務(wù)器
使用以下命令啟動(dòng) MySQL 服務(wù)器。
systemctl start mysqld
您可以使用以下命令檢查 MySQL 服務(wù)器的狀態(tài)。
systemctl status mysqld
如果操作系統(tǒng)啟用了 systemd,則應(yīng)使用標(biāo)準(zhǔn)的 systemctl(或者,使用參數(shù)反轉(zhuǎn)的 service)命令,例如 stop、start、status 和 restart 來(lái)管理 MySQL 服務(wù)器服務(wù)。 mysqld 服務(wù)默認(rèn)情況下處于啟用狀態(tài),并且在系統(tǒng)重啟時(shí)啟動(dòng)。
四、手動(dòng)安裝二進(jìn)制包(難,但更靈活)
1. MySQL Linux 通用二進(jìn)制分發(fā)目錄
| 目錄 | 目錄內(nèi)容 |
|---|---|
| bin | mysqld 服務(wù)器、客戶端和實(shí)用程序 |
| docs | Info 格式的 MySQL 手冊(cè) |
| man | Unix 手冊(cè)頁(yè) |
| include | 包含(頭)文件 |
| lib | 庫(kù) |
| share | 錯(cuò)誤消息、字典和用于數(shù)據(jù)庫(kù)安裝的 SQL |
| support-files | 各種支持文件 |
2. 命令序列如下所示
yum install libaio tar -xvf /path/to/mysql-VERSION-OS.tar.xz ln -s full-path-to-mysql-VERSION-OS mysql groupadd mysql useradd -r -g mysql -s /bin/false mysql cd /etc touch my.cnf chown root:root my.cnf cd /usr/local/mysql mkdir data chmod 750 data chown mysql:mysql data bin/mysqld --defaults-file=/etc/my.cnf --initialize cat data/localhost.localdomain.err cd /usr/lib/systemd/system touch mysqld.service systemctl enable mysqld.service systemctl start mysqld
3. 安裝二進(jìn)制包
安裝 libaio 庫(kù):MySQL 依賴于該libaio 庫(kù)。如果未在本地安裝此庫(kù),則數(shù)據(jù)目錄初始化和后續(xù)服務(wù)器啟動(dòng)步驟將失敗。如有必要,請(qǐng)使用適當(dāng)?shù)陌芾砥靼惭b它。例如,在基于 Yum 的系統(tǒng)上:
yum search libaio # search for info yum install libaio # install library
下載和解壓:從 MySQL 官網(wǎng)下載對(duì)應(yīng)版本的二進(jìn)制壓縮包(如 mysql-9.4.0-linux-glibc2.28-x86_64.tar.xz),使用 tar -xzf 命令解壓。
tar xvf mysql-9.4.0-linux-glibc2.28-x86_64.tar.xz -C /usr/local/ cd /usr/local/ mv mysql-9.4.0-linux-glibc2.28-x86_64 mysql #或 ln -s mysql-9.4.0-linux-glibc2.28-x86_64 mysql
創(chuàng)建專用用戶和組:創(chuàng)建一個(gè)不允許登錄系統(tǒng)的 MySQL 專用用戶,提升安全性。
groupadd mysql useradd -r -g mysql -s /bin/false mysql #或 useradd -r -g mysql -s /usr/sbin/nologin mysql
-s 設(shè)置用戶的登錄 shell
/bin/false 一個(gè)總是返回失敗的程序,這樣設(shè)置后,該用戶無(wú)法通過 shell 登錄系統(tǒng)
/usr/sbin/nologin 達(dá)到類似效果,并給出友好提示
4. 安裝后配置
配置環(huán)境變量:將 mysql 加入環(huán)境變量中。
vim /etc/profile.d/mysql.sh
#編輯mysql.sh內(nèi)容 export MYSQL_HOME=/usr/local/mysql export PATH=$MYSQL_HOME/bin:$PATH
source /etc/profile.d/mysql.sh
創(chuàng)建配置文件:通過將它們放在 MySQL 配置文件中來(lái)指定 MySQL 服務(wù)器在啟動(dòng)時(shí)應(yīng)使用的選項(xiàng)。如果不這樣做,服務(wù)器將以其默認(rèn)設(shè)置啟動(dòng),要?jiǎng)?chuàng)建 MySQL 配置文件,請(qǐng)以 root 身份發(fā)出以下命令:
cd /etc vim my.cnf
添加以下設(shè)置到配置文件中
[client] socket=/usr/local/mysql/data/mysql.sock [mysqld] datadir=/usr/local/mysql/data socket=/usr/local/mysql/data/mysql.sock port=3306 log-error=/usr/local/mysql/data/localhost.log user=mysql secure_file_priv=NULL local_infile=OFF
初始化數(shù)據(jù)目錄:進(jìn)入 MySQL 目錄并初始化數(shù)據(jù)目錄
cd /usr/local/mysql mkdir data chmod 750 data chown mysql:mysql data bin/mysqld --defaults-file=/etc/my.cnf --initialize
初始化輸出被打印到日志 ( /usr/local/mysql/data/localhost.log) 中。
5. 使用 systemd 啟動(dòng)服務(wù)器
添加一個(gè) systemd 服務(wù)單元配置文件
cd /usr/lib/systemd/system vim mysqld.service
將此配置信息添加到 mysqld.service 文件中:
[Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql # Have mysqld write its state to the systemd notify socket Type=notify # Disable service start and stop timeout logic of systemd for mysqld service. TimeoutSec=0 # Start main service ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS # Use this to switch malloc implementation EnvironmentFile=-/etc/sysconfig/mysql # Sets open_files_limit LimitNOFILE = 10000 #Restart=on-failure #RestartPreventExitStatus=1 # Set environment variable MYSQLD_PARENT_PID. This is required for restart. #Environment=MYSQLD_PARENT_PID=1 #PrivateTmp=false
使用以下命令來(lái)管理 MySQL 服務(wù)。
#使mysqld服務(wù)在重新啟動(dòng)時(shí)自動(dòng)啟動(dòng)。 systemctl enable mysqld.service #手動(dòng)啟動(dòng)mysqld服務(wù) systemctl start mysqld #檢查mysqld服務(wù)的狀態(tài) systemctl status mysqld
五、重置 MySQL root 賬戶密碼
使用客戶端,使用服務(wù)器在初始化序列期間生成的隨機(jī)密碼 mysql連接到服務(wù)器:root@localhost
# Yum 安裝 grep 'temporary password' /var/log/mysqld.log # 二進(jìn)制安裝 grep 'temporary password' /usr/local/mysql/data/*.err mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; mysql> exit
提示:如果啟用了 validate_password 插件(默認(rèn)開啟),密碼必須滿足強(qiáng)度策略(大寫、小寫、數(shù)字、特殊字符、長(zhǎng)度 ≥ 8)。
六、測(cè)試 MySQL 服務(wù)器
使用mysqlshow驗(yàn)證您是否可以從服務(wù)器檢索信息。
mysqlshow -u root -p
使用mysqladmin查看 MySQL 服務(wù)器版本信息。
mysqladmin -u root -p version
七、開啟遠(yuǎn)程訪問權(quán)限
需要登錄到 MySQL 服務(wù)器,執(zhí)行下面的命令:
-- 1. 創(chuàng)建用戶 CREATE USER 'username'@'%' IDENTIFIED BY 'password'; -- 2. 授權(quán) GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'; -- 3.刷新權(quán)限 FLUSH PRIVILEGES;
這里的 username 和 password 分別是遠(yuǎn)程用戶的用戶名和密碼,% 表示允許任何 IP 地址的用戶連接。如果需要限制特定 IP 地址,可以將 % 替換為具體的 IP 地址。
編輯 MySQL 的配置文件 my.cnf , 允許任意 IP 地址訪問:
[mysqld] # 注釋掉或刪除這一行(如果存在): # 如果不想暴露MySQL,可以保留,通過SSH 隧道(端口轉(zhuǎn)發(fā))安全地連接,具體見常見問題 # bind-address = 127.0.0.1 # 或顯式綁定到所有地址: bind-address = 0.0.0.0
修改后,保存文件并重啟 MySQL 服務(wù)以使更改生效:
systemctl restart mysqld
在客戶端計(jì)算機(jī)上,使用以下命令嘗試連接到遠(yuǎn)程 MySQL 服務(wù)器:
mysql -h server_ip -P 3306 -u username -p #例如 mysql -h192.168.100.128 -P3306 -uroot -p123456
八、常見問題
1. MySQL 服務(wù)無(wú)法啟動(dòng)
可以運(yùn)行 systemctl status mysql 查看服務(wù)狀態(tài),或者通過 journalctl -xe 查看系統(tǒng)日志來(lái)排查問題。
2. SELinux 或 AppArmor 阻止執(zhí)行
臨時(shí)禁用 SELinux 測(cè)試:
setenforce 0 systemctl start mysqld
如果成功,說(shuō)明是 SELinux 策略問題??苫謴?fù)后添加策略:
setenforce 1 restorecon -R /usr/local/mysql # 或使用 audit2allow 生成自定義策略
3. 客戶端連接失敗
檢查防火墻設(shè)置:確保服務(wù)器的防火墻開放了 MySQL 的默認(rèn) 3306 端口??梢允褂靡韵旅?。
firewall-cmd --list-ports | grep 3306
如果沒有放行(輸出是空的),執(zhí)行以下命令,重新檢查
firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload
檢查 MySQL 綁定地址:查看 MySQL 配置文件(如 /etc/mysql/my.cnf)中的 bind-address 選項(xiàng)。如果希望從其他機(jī)器連接,需將其設(shè)置為服務(wù)器的 IP 地址或 0.0.0.0(注意安全風(fēng)險(xiǎn)),或者直接注釋掉該行。
如果服務(wù)端只允許本機(jī)訪問(127.0.0.1),則在客戶端執(zhí)行下面的命令:
ssh -L 3307:127.0.0.1:3306 user@your-server.com #或 ssh -fNL 3307:127.0.0.1:3306 user@your-server.com mysql -h 127.0.0.1 -P 3307 -u myuser -p
-L 3307:127.0.0.1:3306:表示將本地機(jī)器的 3307 端口 轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器上的 127.0.0.1:3306 。
user@your-server.com:是你在遠(yuǎn)程服務(wù)器上的登錄賬戶和主機(jī)地址。
-fNL :在后臺(tái)運(yùn)行,不執(zhí)行遠(yuǎn)程命令,同時(shí)設(shè)置本地端口轉(zhuǎn)發(fā)。
如果是后臺(tái)運(yùn)行,Linux/MacOS 用 ps aux | grep ssh ,Windows 用 get-process ssh* ,找到進(jìn)程并 kill <PID> 。
4. 忘記 root 密碼
- 停止 MySQL 服務(wù)。
- 在配置文件中(如
[mysqld]段下)添加skip-grant-tables。 - 重啟 MySQL 服務(wù),此時(shí)可以不需密碼登錄。
- 執(zhí)行
FLUSH PRIVILEGES;后重設(shè) root 密碼。 - 移除
skip-grant-tables配置,重啟 MySQL 服務(wù)。
到此這篇關(guān)于CentOS 7/8/9上安裝 MySQL 8.0+的方法完整指南的文章就介紹到這了,更多相關(guān)CentOS安裝 MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)監(jiān)控軟件lepus使用問題以及解決辦法
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)監(jiān)控軟件lepus使用問題及解決辦法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
MySQL數(shù)據(jù)庫(kù)基礎(chǔ)入門之常用命令小結(jié)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)基礎(chǔ)入門之常用命令,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫(kù)管理、備份、日志常用操作命令與使用注意事項(xiàng),需要的朋友可以參考下2020-05-05
Mysql刪除重復(fù)數(shù)據(jù)通用SQL的兩種方法
本文主要介紹了Mysql刪除重復(fù)數(shù)據(jù)通用SQL的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
MySQL中的鎖機(jī)制詳解之全局鎖,表級(jí)鎖,行級(jí)鎖
MySQL鎖機(jī)制通過全局、表級(jí)、行級(jí)鎖控制并發(fā),保障數(shù)據(jù)一致性與隔離性,全局鎖適用于全庫(kù)備份,表級(jí)鎖適合讀多寫少場(chǎng)景,行級(jí)鎖(InnoDB)實(shí)現(xiàn)高并發(fā)事務(wù)控制,本文給大家介紹MySQL之鎖機(jī)制詳解:全局鎖,表級(jí)鎖,行級(jí)鎖,感興趣的朋友一起看看吧2025-06-06
面試被問select......for update會(huì)鎖表還是鎖行
select … for update 是我們常用的對(duì)行加鎖的一種方式,那么select......for update會(huì)鎖表還是鎖行,本文就詳細(xì)的來(lái)介紹一下,感興趣的可以了解一下2021-11-11
macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16
這篇文章主要為大家詳細(xì)介紹了macOS Sierra安裝Apache2.4+PHP7.0+MySQL5.7.16的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
mysql數(shù)據(jù)庫(kù)空間統(tǒng)計(jì)sql代碼示例
在mysql中有一個(gè)information_schema數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)中裝的是mysql的元數(shù)據(jù),包括數(shù)據(jù)庫(kù)信息、數(shù)據(jù)庫(kù)中表的信息等,這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫(kù)空間統(tǒng)計(jì)sql的相關(guān)資料,需要的朋友可以參考下2024-08-08
詳解MySQL和Redis如何保證數(shù)據(jù)一致性
MySQL與Redis都是常用的數(shù)據(jù)存儲(chǔ)和緩存系統(tǒng),為了提高應(yīng)用程序的性能和可伸縮性,很多應(yīng)用程序?qū)ySQL和Redis一起使用,其中MySQL作為主要的持久存儲(chǔ),而Redis作為主要的緩存,那么本文就給大家介紹一下MySQL和Redis如何保證數(shù)據(jù)一致性,需要的朋友可以參考下2023-08-08

