CentOS7安裝MySQL8.0.45解決GPG密鑰不匹配問題的全步驟(生產(chǎn)環(huán)境合規(guī)版)
一、文檔說明
1.1 適用場景
本文適用于 CentOS 7 系統(tǒng),在安裝 MySQL 8.0.45 社區(qū)版(通過 YUM 源方式)時(shí),遇到「GPG 密鑰已安裝但與包不匹配」報(bào)錯(cuò)的生產(chǎn)環(huán)境解決方案。
核心報(bào)錯(cuò)信息(本文重點(diǎ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 密鑰不匹配報(bào)錯(cuò),且已清理舊 MySQL YUM 源配置;
網(wǎng)絡(luò):服務(wù)器可正常訪問外網(wǎng)(需下載官方密鑰及 MySQL 安裝包)。
1.3 文檔價(jià)值
針對生產(chǎn)環(huán)境「安全性、合規(guī)性」要求,提供「徹底清理密鑰沖突+重新導(dǎo)入官方全量密鑰」的解決方案,不跳過 GPG 驗(yàn)證、不降低系統(tǒng)安全等級,全程可追溯、可復(fù)用,解決 CentOS 7 與 MySQL 8.0.45 密鑰適配兼容性問題。
二、問題根源分析
生產(chǎn)環(huán)境出現(xiàn)該報(bào)錯(cuò)的核心原因的是 系統(tǒng)密鑰環(huán)殘留沖突,具體如下:
MySQL 8.0.45 版本對 GPG 密鑰校驗(yàn)更嚴(yán)格,需匹配官方 2022/2023 版密鑰;
系統(tǒng)此前可能安裝過 MySQL 舊版本、舊 YUM 源,導(dǎo)致密鑰環(huán)中殘留舊版 MySQL 密鑰(如 0x5072E1F5 舊密鑰);
殘留舊密鑰與 MySQL 8.0.45 包所需的新密鑰沖突,即使重新導(dǎo)入新密鑰,系統(tǒng)仍會(huì)優(yōu)先校驗(yàn)殘留舊密鑰,導(dǎo)致報(bào)錯(cuò);
YUM 緩存中留存了舊的密鑰校驗(yàn)信息,未徹底清理,進(jìn)一步加劇沖突。
三、解決方案(生產(chǎn)環(huán)境合規(guī)版)
核心思路:徹底清理所有 MySQL 相關(guān)殘留密鑰 → 導(dǎo)入 MySQL 官方全量密鑰 → 強(qiáng)制刷新 YUM 緩存 → 正常安裝 MySQL 8.0.45,全程保留 GPG 驗(yàn)證,符合生產(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í)行說明:
命令會(huì)先通過
rpm -qa gpg-pubkey | grep -i mysql列出所有 MySQL 相關(guān)密鑰;通過
cut -d '-' -f 4-提取密鑰編號,再通過rpm -e --allmatches徹底刪除該密鑰(包括所有匹配的版本);執(zhí)行后無報(bào)錯(cuò)即說明清理成功,若提示“未找到對應(yīng)密鑰”,說明系統(tǒng)中無殘留,可直接進(jìn)入下一步。
步驟 2:導(dǎo)入 MySQL 官方全量密鑰(覆蓋所有版本,避免遺漏)
清理完成后,重新導(dǎo)入 MySQL 官方全量密鑰(包括舊版、2022 版、2023 版),確保與 MySQL 8.0.45 包的密鑰校驗(yàn)完全匹配,執(zhí)行以下命令:
# 下載 MySQL 官方基礎(chǔ)密鑰包并導(dǎo)入 wget https://repo.mysql.com/RPM-GPG-KEY-mysql -O /tmp/RPM-GPG-KEY-mysql rpm --import /tmp/RPM-GPG-KEY-mysql # 導(dǎo)入 MySQL 2022 版官方密鑰(適配 MySQL 8.0+ 新版本) rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 # 導(dǎo)入 MySQL 2023 版官方密鑰(兼容 MySQL 8.0.45+ 高版本校驗(yàn)) rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
執(zhí)行說明:
先下載基礎(chǔ)密鑰包到 /tmp 目錄(避免直接覆蓋系統(tǒng)默認(rèn)路徑,更安全),再導(dǎo)入;
依次導(dǎo)入 2022、2023 版密鑰,確保覆蓋 MySQL 8.0.45 所需的所有校驗(yàn)密鑰;
Linux 系統(tǒng)中,密鑰導(dǎo)入成功后無任何輸出,若提示“密鑰已導(dǎo)入”,屬于正?,F(xiàn)象,無需重復(fù)操作。
步驟 3:強(qiáng)制清理 YUM 緩存(徹底清除舊校驗(yàn)信息)
僅執(zhí)行 yum clean all 無法徹底清理密鑰校驗(yàn)緩存,需手動(dòng)刪除緩存目錄,再重新生成緩存,執(zhí)行以下命令(生產(chǎn)環(huán)境可安全執(zhí)行):
# 強(qiáng)制清理 YUM 所有緩存(包括包緩存、密鑰校驗(yàn)緩存) yum clean all && rm -rf /var/cache/yum/* # 重新生成 YUM 緩存(僅緩存 MySQL 官方源相關(guān)信息,避免混雜) yum makecache fast
執(zhí)行說明:
rm -rf /var/cache/yum/*會(huì)徹底刪除 YUM 緩存目錄下的所有文件,確保舊的密鑰校驗(yàn)信息被完全清除;yum makecache fast會(huì)快速生成新的緩存,縮短后續(xù)安裝時(shí)間;緩存生成成功后,會(huì)顯示 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 導(dǎo)入的密鑰對應(yīng)) gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 EOF
執(zhí)行說明:該配置文件僅包含 MySQL 8.0 官方源,無多余干擾項(xiàng),確保安裝時(shí)從官方源下載包,且密鑰地址與導(dǎo)入的密鑰一致。
步驟 5:安裝 MySQL 8.0.45 服務(wù)器(生產(chǎn)環(huán)境安全安裝)
完成上述所有步驟后,密鑰沖突已徹底解決,執(zhí)行以下命令安裝 MySQL 8.0.45,全程會(huì)正常進(jìn)行 GPG 密鑰驗(yàn)證,且驗(yàn)證會(huì)通過:
yum install -y mysql-community-server
安裝說明:
安裝過程中,系統(tǒng)會(huì)自動(dòng)校驗(yàn)包的 GPG 密鑰,無需手動(dòng)干預(yù);
若出現(xiàn)“導(dǎo)入 GPG 密鑰”提示,直接按 y 確認(rèn)即可(與步驟 2 導(dǎo)入的密鑰一致);
安裝完成后,系統(tǒng)會(huì)自動(dòng)配置 MySQL 相關(guān)依賴,無需額外操作。
四、安裝后生產(chǎn)環(huán)境必做驗(yàn)證(合規(guī)性檢查)
安裝完成后,需執(zhí)行以下驗(yàn)證步驟,確保 MySQL 服務(wù)正常、密鑰校驗(yàn)合規(guī)、包完整,符合生產(chǎn)環(huán)境要求:
驗(yàn)證 1:查看 MySQL 版本,確認(rèn)安裝成功
mysql --version
正常輸出示例(需包含 8.0.45 版本):
mysql Ver 8.0.45 for Linux on x86_64 (MySQL Community Server - GPL)
驗(yàn)證 2:啟動(dòng) MySQL 服務(wù)并設(shè)置開機(jī)自啟
# 啟動(dòng) MySQL 服務(wù) systemctl start mysqld # 設(shè)置開機(jī)自啟(生產(chǎn)環(huán)境必做,避免服務(wù)器重啟后服務(wù)失效) systemctl enable mysqld # 查看 MySQL 服務(wù)狀態(tài) systemctl status mysqld
正常狀態(tài):輸出中包含 active (running),無報(bào)錯(cuò)信息,說明服務(wù)啟動(dòng)正常。
驗(yàn)證 3:驗(yàn)證 GPG 密鑰校驗(yàn)合規(guī)性
檢查 MySQL 安裝包的 GPG 校驗(yàn)狀態(tài),確保包未被篡改,符合生產(chǎn)環(huán)境安全要求:
# 驗(yàn)證 MySQL 核心包的 GPG 校驗(yàn)狀態(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
驗(yàn)證 4:修改初始密碼(生產(chǎn)環(huán)境必做)
MySQL 8.0.45 安裝后會(huì)生成臨時(shí)初始密碼,需立即修改為生產(chǎn)環(huán)境強(qiáng)密碼(符合復(fù)雜度:大小寫+數(shù)字+特殊字符,長度≥8):
# 提取初始密碼(從 MySQL 日志中獲?。?
temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
# 登錄 MySQL 并修改初始密碼(一行命令執(zhí)行,無需手動(dòng)輸入密碼)
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)境實(shí)際使用的強(qiáng)密碼,執(zhí)行后無報(bào)錯(cuò)即說明密碼修改成功。
五、常見問題補(bǔ)充(生產(chǎn)環(huán)境適配)
問題 1:執(zhí)行密鑰刪除命令時(shí),提示“無對應(yīng)密鑰”
原因:系統(tǒng)中無 MySQL 相關(guān)殘留密鑰,屬于正?,F(xiàn)象;
解決:直接跳過該步驟,進(jìn)入“導(dǎo)入官方全量密鑰”步驟即可。
問題 2:wget 下載密鑰時(shí)提示“無法連接”
原因:生產(chǎn)環(huán)境服務(wù)器外網(wǎng)訪問受限,無法訪問 MySQL 官方地址;
解決:手動(dòng)下載 https://repo.mysql.com/RPM-GPG-KEY-mysql 密鑰文件,上傳至服務(wù)器 /tmp 目錄,再執(zhí)行 rpm --import /tmp/RPM-GPG-KEY-mysql。
問題 3:安裝時(shí)仍提示密鑰不匹配
原因:密鑰緩存未徹底清除,或源配置與密鑰地址不對應(yīng);
解決:重新執(zhí)行“步驟 1-步驟 3”,確保密鑰清理干凈、緩存徹底刷新,再重新安裝。
六、總結(jié)
核心結(jié)論:本文方案通過「徹底清理殘留密鑰+導(dǎo)入官方全量密鑰+強(qiáng)制刷新緩存」,從根源解決了 CentOS 7 安裝 MySQL 8.0.45 時(shí)的 GPG 密鑰不匹配問題,全程保留 GPG 驗(yàn)證,符合生產(chǎn)環(huán)境安全合規(guī)要求;
關(guān)鍵要點(diǎn):生產(chǎn)環(huán)境禁止跳過 GPG 驗(yàn)證,密鑰沖突的核心是“殘留舊密鑰干擾”,徹底清理是解決問題的關(guān)鍵;
可復(fù)用性:本文所有命令均可直接復(fù)制執(zhí)行,適配所有 CentOS 7 系統(tǒng)+MySQL 8.0.45 版本的密鑰沖突場景,生產(chǎn)環(huán)境可直接復(fù)用;
后續(xù)建議:安裝完成后,定期檢查 MySQL 服務(wù)狀態(tài)和密鑰校驗(yàn)狀態(tài),確保生產(chǎn)環(huán)境 MySQL 運(yùn)行穩(wěn)定、安全。
到此這篇關(guān)于CentOS7安裝MySQL8.0.45解決GPG密鑰不匹配問題的文章就介紹到這了,更多相關(guān)MySQL解決GPG密鑰不匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用SQL實(shí)現(xiàn)統(tǒng)計(jì)報(bào)表中的"小計(jì)"與"合計(jì)"的方法詳解
本篇文章是對使用SQL實(shí)現(xiàn)統(tǒng)計(jì)報(bào)表中的"小計(jì)"與"合計(jì)"的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
docker安裝MySQL報(bào)錯(cuò)端口被占用問題解決辦法
docker部署mysql容器時(shí),最常見的啟動(dòng)失敗原因之一是宿主機(jī)的3306端口被占用,這篇文章主要介紹了docker安裝MySQL報(bào)錯(cuò)端口被占用問題解決辦法的相關(guān)資料,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2026-03-03
一文徹底搞懂MySQL?TimeStamp時(shí)區(qū)問題
MySQL的timestamp類型默認(rèn)使用的是服務(wù)器的時(shí)區(qū)來存儲(chǔ)時(shí)間值,這意味著如果服務(wù)器的時(shí)區(qū)發(fā)生了變化,那么存儲(chǔ)的timestamp值也會(huì)發(fā)生變化,下面這篇文章主要給大家介紹了關(guān)于如何通過一文徹底搞懂MySQL?TimeStamp時(shí)區(qū)問題的相關(guān)資料,需要的朋友可以參考下2024-01-01
關(guān)于MySQL的存儲(chǔ)過程與存儲(chǔ)函數(shù)
存儲(chǔ)過程是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL?語句集(這些SQL語句已經(jīng)編譯過了),它存儲(chǔ)在數(shù)據(jù)庫中,一次編譯后永久有效,需要的朋友可以參考下2023-05-05
MySQL8.0設(shè)置遠(yuǎn)程訪問權(quán)限的方法
這篇文章主要介紹了MySQL8.0設(shè)置遠(yuǎn)程訪問權(quán)限的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Mysql中Row size too large (> 8126)&n
本文主要介紹了Mysql中Row size too large (> 8126) 錯(cuò)誤的問題解決,原因?qū)嵅迦氲男袛?shù)據(jù)可能太大了,超過了設(shè)定的闕值,下面就來看一下如何解決2024-07-07

