CentOS7安裝MySQL8.0.45解決GPG密鑰不匹配問題的全步驟(生產(chǎn)環(huán)境合規(guī)版)
一、文檔說明
1.1 適用場景
本文適用于 CentOS 7 系統(tǒng),在安裝 MySQL 8.0.45 社區(qū)版(通過 YUM 源方式)時,遇到「GPG 密鑰已安裝但與包不匹配」報錯的生產(chǎn)環(huán)境解決方案。
核心報錯信息(本文重點解決):
The GPG keys listed for the “MySQL 8.0 Community Server” repository are already installed but they are not correct for this package. Check that the correct key URLs are configured for this repository. Failing package is: mysql-community-common-8.0.45-1.el7.x86_64. GPG Keys are configured as: https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
1.2 環(huán)境前提
系統(tǒng):CentOS 7(x86_64,任意內(nèi)核版本,生產(chǎn)環(huán)境穩(wěn)定版優(yōu)先);
權(quán)限:已獲取 root 用戶權(quán)限(生產(chǎn)環(huán)境操作必備);
狀態(tài):已嘗試安裝 MySQL 8.0.45,出現(xiàn)上述 GPG 密鑰不匹配報錯,且已清理舊 MySQL YUM 源配置;
網(wǎng)絡(luò):服務(wù)器可正常訪問外網(wǎng)(需下載官方密鑰及 MySQL 安裝包)。
1.3 文檔價值
針對生產(chǎn)環(huán)境「安全性、合規(guī)性」要求,提供「徹底清理密鑰沖突+重新導入官方全量密鑰」的解決方案,不跳過 GPG 驗證、不降低系統(tǒng)安全等級,全程可追溯、可復用,解決 CentOS 7 與 MySQL 8.0.45 密鑰適配兼容性問題。
二、問題根源分析
生產(chǎn)環(huán)境出現(xiàn)該報錯的核心原因的是 系統(tǒng)密鑰環(huán)殘留沖突,具體如下:
MySQL 8.0.45 版本對 GPG 密鑰校驗更嚴格,需匹配官方 2022/2023 版密鑰;
系統(tǒng)此前可能安裝過 MySQL 舊版本、舊 YUM 源,導致密鑰環(huán)中殘留舊版 MySQL 密鑰(如 0x5072E1F5 舊密鑰);
殘留舊密鑰與 MySQL 8.0.45 包所需的新密鑰沖突,即使重新導入新密鑰,系統(tǒng)仍會優(yōu)先校驗殘留舊密鑰,導致報錯;
YUM 緩存中留存了舊的密鑰校驗信息,未徹底清理,進一步加劇沖突。
三、解決方案(生產(chǎn)環(huán)境合規(guī)版)
核心思路:徹底清理所有 MySQL 相關(guān)殘留密鑰 → 導入 MySQL 官方全量密鑰 → 強制刷新 YUM 緩存 → 正常安裝 MySQL 8.0.45,全程保留 GPG 驗證,符合生產(chǎn)環(huán)境安全規(guī)范。
步驟 1:清理系統(tǒng)中所有 MySQL 相關(guān) GPG 密鑰(關(guān)鍵步驟)
執(zhí)行以下命令,批量列出并刪除密鑰環(huán)中所有與 MySQL 相關(guān)的 GPG 密鑰,徹底清除沖突根源(生產(chǎn)環(huán)境可安全執(zhí)行,僅刪除 MySQL 相關(guān)密鑰,不影響其他軟件):
# 批量列出并刪除所有 MySQL 相關(guān) GPG 密鑰
for key in $(rpm -qa gpg-pubkey | grep -i mysql | cut -d '-' -f 4-); do
rpm -e --allmatches gpg-pubkey-$key
done執(zhí)行說明:
命令會先通過
rpm -qa gpg-pubkey | grep -i mysql列出所有 MySQL 相關(guān)密鑰;通過
cut -d '-' -f 4-提取密鑰編號,再通過rpm -e --allmatches徹底刪除該密鑰(包括所有匹配的版本);執(zhí)行后無報錯即說明清理成功,若提示“未找到對應(yīng)密鑰”,說明系統(tǒng)中無殘留,可直接進入下一步。
步驟 2:導入 MySQL 官方全量密鑰(覆蓋所有版本,避免遺漏)
清理完成后,重新導入 MySQL 官方全量密鑰(包括舊版、2022 版、2023 版),確保與 MySQL 8.0.45 包的密鑰校驗完全匹配,執(zhí)行以下命令:
# 下載 MySQL 官方基礎(chǔ)密鑰包并導入 wget https://repo.mysql.com/RPM-GPG-KEY-mysql -O /tmp/RPM-GPG-KEY-mysql rpm --import /tmp/RPM-GPG-KEY-mysql # 導入 MySQL 2022 版官方密鑰(適配 MySQL 8.0+ 新版本) rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 # 導入 MySQL 2023 版官方密鑰(兼容 MySQL 8.0.45+ 高版本校驗) rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
執(zhí)行說明:
先下載基礎(chǔ)密鑰包到 /tmp 目錄(避免直接覆蓋系統(tǒng)默認路徑,更安全),再導入;
依次導入 2022、2023 版密鑰,確保覆蓋 MySQL 8.0.45 所需的所有校驗密鑰;
Linux 系統(tǒng)中,密鑰導入成功后無任何輸出,若提示“密鑰已導入”,屬于正?,F(xiàn)象,無需重復操作。
步驟 3:強制清理 YUM 緩存(徹底清除舊校驗信息)
僅執(zhí)行 yum clean all 無法徹底清理密鑰校驗緩存,需手動刪除緩存目錄,再重新生成緩存,執(zhí)行以下命令(生產(chǎn)環(huán)境可安全執(zhí)行):
# 強制清理 YUM 所有緩存(包括包緩存、密鑰校驗緩存) yum clean all && rm -rf /var/cache/yum/* # 重新生成 YUM 緩存(僅緩存 MySQL 官方源相關(guān)信息,避免混雜) yum makecache fast
執(zhí)行說明:
rm -rf /var/cache/yum/*會徹底刪除 YUM 緩存目錄下的所有文件,確保舊的密鑰校驗信息被完全清除;yum makecache fast會快速生成新的緩存,縮短后續(xù)安裝時間;緩存生成成功后,會顯示 MySQL 8.0 倉庫的包數(shù)量,說明緩存生成正常。
步驟 4:配置 MySQL 8.0 官方 YUM 源(確保源配置正確)
若此前已清理舊源配置,需重新創(chuàng)建 MySQL 8.0 官方 YUM 源配置文件,確保源地址和密鑰地址正確,執(zhí)行以下命令:
# 創(chuàng)建并寫入 MySQL 8.0 官方 YUM 源配置 cat > /etc/yum.repos.d/mysql-community.repo << EOF [mysql80-community] name=MySQL 8.0 Community Server baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el/7/x86_64/ enabled=1 gpgcheck=1 # 配置官方 2022 版密鑰地址(與步驟 2 導入的密鑰對應(yīng)) gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 EOF
執(zhí)行說明:該配置文件僅包含 MySQL 8.0 官方源,無多余干擾項,確保安裝時從官方源下載包,且密鑰地址與導入的密鑰一致。
步驟 5:安裝 MySQL 8.0.45 服務(wù)器(生產(chǎn)環(huán)境安全安裝)
完成上述所有步驟后,密鑰沖突已徹底解決,執(zhí)行以下命令安裝 MySQL 8.0.45,全程會正常進行 GPG 密鑰驗證,且驗證會通過:
yum install -y mysql-community-server
安裝說明:
安裝過程中,系統(tǒng)會自動校驗包的 GPG 密鑰,無需手動干預;
若出現(xiàn)“導入 GPG 密鑰”提示,直接按 y 確認即可(與步驟 2 導入的密鑰一致);
安裝完成后,系統(tǒng)會自動配置 MySQL 相關(guān)依賴,無需額外操作。
四、安裝后生產(chǎn)環(huán)境必做驗證(合規(guī)性檢查)
安裝完成后,需執(zhí)行以下驗證步驟,確保 MySQL 服務(wù)正常、密鑰校驗合規(guī)、包完整,符合生產(chǎn)環(huán)境要求:
驗證 1:查看 MySQL 版本,確認安裝成功
mysql --version
正常輸出示例(需包含 8.0.45 版本):
mysql Ver 8.0.45 for Linux on x86_64 (MySQL Community Server - GPL)
驗證 2:啟動 MySQL 服務(wù)并設(shè)置開機自啟
# 啟動 MySQL 服務(wù) systemctl start mysqld # 設(shè)置開機自啟(生產(chǎn)環(huán)境必做,避免服務(wù)器重啟后服務(wù)失效) systemctl enable mysqld # 查看 MySQL 服務(wù)狀態(tài) systemctl status mysqld
正常狀態(tài):輸出中包含 active (running),無報錯信息,說明服務(wù)啟動正常。
驗證 3:驗證 GPG 密鑰校驗合規(guī)性
檢查 MySQL 安裝包的 GPG 校驗狀態(tài),確保包未被篡改,符合生產(chǎn)環(huán)境安全要求:
# 驗證 MySQL 核心包的 GPG 校驗狀態(tài) rpm -K /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-common-8.0.45-1.el7.x86_64.rpm
正常輸出示例(需包含 pgp sha256 OK):
mysql-community-common-8.0.45-1.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
驗證 4:修改初始密碼(生產(chǎn)環(huán)境必做)
MySQL 8.0.45 安裝后會生成臨時初始密碼,需立即修改為生產(chǎn)環(huán)境強密碼(符合復雜度:大小寫+數(shù)字+特殊字符,長度≥8):
# 提取初始密碼(從 MySQL 日志中獲取)
temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
# 登錄 MySQL 并修改初始密碼(一行命令執(zhí)行,無需手動輸入密碼)
mysql -uroot -p$temp_pass --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass@2026'; FLUSH PRIVILEGES;"說明:將 YourStrongPass@2026 替換為生產(chǎn)環(huán)境實際使用的強密碼,執(zhí)行后無報錯即說明密碼修改成功。
五、常見問題補充(生產(chǎn)環(huán)境適配)
問題 1:執(zhí)行密鑰刪除命令時,提示“無對應(yīng)密鑰”
原因:系統(tǒng)中無 MySQL 相關(guān)殘留密鑰,屬于正?,F(xiàn)象;
解決:直接跳過該步驟,進入“導入官方全量密鑰”步驟即可。
問題 2:wget 下載密鑰時提示“無法連接”
原因:生產(chǎn)環(huán)境服務(wù)器外網(wǎng)訪問受限,無法訪問 MySQL 官方地址;
解決:手動下載 https://repo.mysql.com/RPM-GPG-KEY-mysql 密鑰文件,上傳至服務(wù)器 /tmp 目錄,再執(zhí)行 rpm --import /tmp/RPM-GPG-KEY-mysql。
問題 3:安裝時仍提示密鑰不匹配
原因:密鑰緩存未徹底清除,或源配置與密鑰地址不對應(yīng);
解決:重新執(zhí)行“步驟 1-步驟 3”,確保密鑰清理干凈、緩存徹底刷新,再重新安裝。
六、總結(jié)
核心結(jié)論:本文方案通過「徹底清理殘留密鑰+導入官方全量密鑰+強制刷新緩存」,從根源解決了 CentOS 7 安裝 MySQL 8.0.45 時的 GPG 密鑰不匹配問題,全程保留 GPG 驗證,符合生產(chǎn)環(huán)境安全合規(guī)要求;
關(guān)鍵要點:生產(chǎn)環(huán)境禁止跳過 GPG 驗證,密鑰沖突的核心是“殘留舊密鑰干擾”,徹底清理是解決問題的關(guān)鍵;
可復用性:本文所有命令均可直接復制執(zhí)行,適配所有 CentOS 7 系統(tǒng)+MySQL 8.0.45 版本的密鑰沖突場景,生產(chǎn)環(huán)境可直接復用;
后續(xù)建議:安裝完成后,定期檢查 MySQL 服務(wù)狀態(tài)和密鑰校驗狀態(tài),確保生產(chǎn)環(huán)境 MySQL 運行穩(wěn)定、安全。
到此這篇關(guān)于CentOS7安裝MySQL8.0.45解決GPG密鑰不匹配問題的文章就介紹到這了,更多相關(guān)MySQL解決GPG密鑰不匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用SQL實現(xiàn)統(tǒng)計報表中的"小計"與"合計"的方法詳解
本篇文章是對使用SQL實現(xiàn)統(tǒng)計報表中的"小計"與"合計"的方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06
MySQL8.0設(shè)置遠程訪問權(quán)限的方法
這篇文章主要介紹了MySQL8.0設(shè)置遠程訪問權(quán)限的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
Mysql中Row size too large (> 8126)&n
本文主要介紹了Mysql中Row size too large (> 8126) 錯誤的問題解決,原因?qū)嵅迦氲男袛?shù)據(jù)可能太大了,超過了設(shè)定的闕值,下面就來看一下如何解決2024-07-07

