最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql8.0.42啟用SSL安全連接完整步驟(等保整改、docker部署)

 更新時間:2026年04月23日 09:57:50   作者:lsl547445  
作為一名剛?cè)胄械拈_發(fā)者,你可能會遇到需要開啟MySQL數(shù)據(jù)庫的SSL加密連接的需求,這篇文章主要介紹了Mysql8.0.42啟用SSL安全連接(等保整改、docker部署)的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

概述

Mysql 8 默認(rèn)啟用SSL安全連接,也可以強(qiáng)制必須啟用。建議手動生成自簽名證書和key并配置到服務(wù)端和客戶端路徑里,也可以直接使用mysql默認(rèn)生成的,默認(rèn)在數(shù)據(jù)存儲目錄下,如圖所示:

開啟SSL

步驟一:修改配置文件my.cnf

這里有官方教程:https://dev.mysql.com/doc/refman/8.4/en/using-encrypted-connections.html#using-encrypted-connections-server-side-startup-configuration

[mysqld]
# SSL配置
# 強(qiáng)制所有連接使用SSL
require_secure_transport = ON
# 可以自行創(chuàng)建ca證書、服務(wù)端證書和KEYy,以下三個配置也可以不寫,使用默認(rèn)配置
ssl_ca=ca.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem
# 其他安全配置
tls_version = TLSv1.2,TLSv1.3  # 限制支持的TLS版本
ssl-cipher = HIGH:!aNULL:!MD5  # 限制加密套件

踩坑:這里我嘗試過修改證書存放目錄,mysql可以啟動成功,但是ssl會開啟失敗,日志中會出現(xiàn)失敗提示,倒騰了半天也沒找出原因,所以不建議修改證書存放路徑

audit-mysql  | 2025-09-29T07:57:32.455742Z 0 [Warning] [MY-013595] [Server] Failed to initialize TLS for channel: mysql_main. See below for the description of exact issue.
audit-mysql  | 2025-09-29T07:57:32.461268Z 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: SSL_CTX_set_default_verify_paths failed

步驟二:編寫docker-compose.yml文件

version: '3.8'

services:
  # MySQL 8.0.42
  mysql:
    # build: ./mysql
    image: mysql:8.0.42
    container_name: audit-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: Admin@123
      MYSQL_DATABASE: grzsk
      MYSQL_USER: grzsk-user
      MYSQL_PASSWORD: Admin@123
      TZ: Asia/Shanghai
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf.d:/etc/mysql/conf.d
      - ./mysql/audit-logs:/var/log/mysql
    ports:
      - "12001:3306"
    networks:
      - backend
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 10s
      retries: 5

步驟三:將配置文件my.cnf放入 ./mysql/conf.d文件夾中

步驟四:啟動docker容器,docker-compose up  -d

步驟五:編寫ssl證書生成腳本: ssl-genrenal.sh

#!/bin/bash
set -e  # 遇到錯誤立即退出
# ==============================================
# 配置參數(shù)
# ==============================================
SSL_DIR="./mysql/ssl"          # 證書存儲目錄
CA_DAYS=3650                   # CA證書有效期(10年)
CERT_DAYS=3650                 # 服務(wù)器/客戶端證書有效期(10年)
COUNTRY="CN"                   # 國家代碼
STATE="guangzhou"              # 省份/州
CITY="guangzhou"               # 城市
ORG="zuzhi"                   # 組織
UNIT="DBA"                     # 部門
COMMON_NAME="mysql-server"     # 服務(wù)器通用名稱
CLIENT_COMMON_NAME="mysql-client"  # 客戶端通用名稱
EMAIL="admin@zuzhi.com"       # 聯(lián)系郵箱
# ==============================================
# 清理舊證書并創(chuàng)建目錄
# ==============================================
echo "===== 準(zhǔn)備證書目錄 ====="
if [ -d "$SSL_DIR" ]; then
    echo "刪除舊證書目錄: $SSL_DIR"
    rm -rf "$SSL_DIR"
fi
echo "創(chuàng)建新證書目錄: $SSL_DIR"
mkdir -p "$SSL_DIR" || { echo "錯誤:無法創(chuàng)建目錄 $SSL_DIR"; exit 1; }
cd "$SSL_DIR" || { echo "錯誤:無法進(jìn)入目錄 $SSL_DIR"; exit 1; }
chmod 700 .  # 限制目錄訪問權(quán)限
# ==============================================
# 生成CA根證書
# ==============================================
echo -e "\n===== 生成CA根證書 ====="
echo "生成CA私鑰 (ca-key.pem)..."
openssl genrsa -out ca-key.pem 2048 || { echo "錯誤:CA私鑰生成失敗"; exit 1; }
echo "生成CA根證書 (ca-cert.pem)..."
openssl req -new -x509 -nodes -days "$CA_DAYS" \
    -key ca-key.pem \
    -out ca.pem \
    -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORG/OU=$UNIT/CN=$COMMON_NAME/emailAddress=$EMAIL" || { 
    echo "錯誤:CA根證書生成失敗"; exit 1; }
# 驗(yàn)證CA私鑰格式
echo "驗(yàn)證CA私鑰格式..."
if ! grep -- "-----BEGIN RSA PRIVATE KEY-----" ca-key.pem >/dev/null 2>&1; then
    echo "錯誤:CA私鑰格式不正確,缺少起始標(biāo)記"
    exit 1
fi
# ==============================================
# 生成服務(wù)器證書(移除PKCS#8轉(zhuǎn)換)
# ==============================================
echo -e "\n===== 生成服務(wù)器證書 ====="
echo "生成服務(wù)器私鑰 (server-key.pem)..."
openssl genrsa -out server-key.pem 2048 || { echo "錯誤:服務(wù)器私鑰生成失敗"; exit 1; }
# 驗(yàn)證服務(wù)器私鑰格式
if ! grep -- "-----BEGIN RSA PRIVATE KEY-----" server-key.pem >/dev/null 2>&1; then
    echo "錯誤:服務(wù)器私鑰格式不正確,缺少起始標(biāo)記"
    exit 1
fi
echo "生成服務(wù)器證書請求 (server-req.pem)..."
openssl req -new -key server-key.pem -out server-req.pem \
    -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORG/OU=$UNIT/CN=$COMMON_NAME/emailAddress=$EMAIL" || {
    echo "錯誤:服務(wù)器證書請求生成失敗"; exit 1; }
echo "用CA簽名服務(wù)器證書 (server-cert.pem)..."
openssl x509 -req -in server-req.pem -days "$CERT_DAYS" \
    -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem || {
    echo "錯誤:服務(wù)器證書簽名失敗"; exit 1; }
# ==============================================
# 生成客戶端證書(移除PKCS#8轉(zhuǎn)換)
# ==============================================
echo -e "\n===== 生成客戶端證書 ====="
echo "生成客戶端私鑰 (client-key.pem)..."
openssl genrsa -out client-key.pem 2048 || { echo "錯誤:客戶端私鑰生成失敗"; exit 1; }
# 驗(yàn)證客戶端私鑰格式
if ! grep -- "-----BEGIN RSA PRIVATE KEY-----" client-key.pem >/dev/null 2>&1; then
    echo "錯誤:客戶端私鑰格式不正確,缺少起始標(biāo)記"
    exit 1
fi
echo "生成客戶端證書請求 (client-req.pem)..."
openssl req -new -key client-key.pem -out client-req.pem \
    -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORG/OU=$UNIT/CN=$CLIENT_COMMON_NAME/emailAddress=$EMAIL" || { 
    echo "錯誤:客戶端證書請求生成失敗"; exit 1; }
echo "用CA簽名客戶端證書 (client-cert.pem)..."
openssl x509 -req -in client-req.pem -days "$CERT_DAYS" \
    -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem || {
    echo "錯誤:客戶端證書簽名失敗"; exit 1; }
# ==============================================
# 清理臨時文件
# ==============================================
echo -e "\n===== 清理臨時文件 ====="
rm -f server-req.pem client-req.pem
# ==============================================
# 生成結(jié)果驗(yàn)證
# ==============================================
echo -e "\n===== 證書生成完成 ====="
echo "證書存儲目錄: $(pwd)"
echo "生成的文件列表:"
ls -l ./*
# 驗(yàn)證關(guān)鍵文件是否存在且非空
REQUIRED_FILES=("ca-key.pem" "ca.pem" "server-key.pem" "server-cert.pem" "client-key.pem" "client-cert.pem")
for file in "${REQUIRED_FILES[@]}"; do
    if [ ! -s "$file" ]; then
        echo "警告:關(guān)鍵文件 $file 不存在或?yàn)榭?,生成過程可能有問題"
    fi
done

步驟六:執(zhí)行腳本:sh ssl-genrenal.sh,將ssl文件夾下的文件復(fù)制到./mysql/mysql-data目錄中

步驟七:重啟容器 docker-compose restart,至此ssl開啟成功,可以用客戶端測試連接

客戶端連接

一、Navicat連接

1、將ca.pem、client-key.pem、client-cert.pem三個文件下載到本地,配置好參數(shù)測試連接

二、java程序連接

1、步驟一:將客戶端證書下載到resource文件夾下

2、步驟二:配置連接參數(shù)

url: jdbc:mysql://192.168.140.14:12001/grzsk?useSSL=true&verifyServerCertificate=true&sslCa=classpath:ssl/ca.pem&sslCert=classpath:ssl/client-cert.pem&sslKey=classpath:ssl/client-key.pem&characterEncoding=UTF-8&useUnicode=true&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

3、啟動程序,不出意外的話要出意外了

出現(xiàn)報錯:java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors

原因是Java 無法找到信任鏈中可信任的根證書,導(dǎo)致證書路徑驗(yàn)證失敗。

4、使用keytool工具(Java 自帶)導(dǎo)入根證書

通常在 $JAVA_HOME/jre/lib/security/cacerts(JDK 8 及以下)或 $JAVA_HOME/lib/security/cacerts(JDK 9+)。默認(rèn)密碼為 changeit

導(dǎo)入命令如下:

keytool -importcert -alias myrootca -file /path/to/ca.pem -keystore $JAVA_HOME/jre/lib/security/cacerts

5、導(dǎo)入結(jié)果

6、重新啟動程序:啟動成功

總結(jié) 

到此這篇關(guān)于Mysql8.0.42啟用SSL安全連接的文章就介紹到這了,更多相關(guān)Mysql啟用SSL安全連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySql 5.6.14 Win32位免安裝解壓縮版配置教程

    MySql 5.6.14 Win32位免安裝解壓縮版配置教程

    本文給大家介紹mysql 5.6.14 win32 位免安裝解壓縮版配置方法,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,對mysql5.6.14 免安裝解壓縮版配置方法感興趣的朋友一起看看吧
    2016-11-11
  • 一文帶你深度解讀MySQL表鎖問題及解決方案

    一文帶你深度解讀MySQL表鎖問題及解決方案

    MySQL中的表鎖是一種常見的并發(fā)控制機(jī)制,用于確保多個會話在訪問同一張表時的數(shù)據(jù)一致性,下面小編就帶大家深入了解下MySQL中表鎖問題的解決方案吧
    2026-02-02
  • MySQL主鍵批量修改的坑與解決方案

    MySQL主鍵批量修改的坑與解決方案

    在日常開發(fā)中,我們可能會遇到需要批量修改 MySQL 數(shù)據(jù)表主鍵的情況,乍一看,修改主鍵 ID 似乎是一個簡單的操作,但如果處理不當(dāng),會導(dǎo)致操作失敗甚至數(shù)據(jù)丟失,本文將詳細(xì)剖析問題成因,并總結(jié)多種安全高效的解決方案,需要的朋友可以參考下
    2024-12-12
  • 阿里云ECS centos6.8下安裝配置MySql5.7的教程

    阿里云ECS centos6.8下安裝配置MySql5.7的教程

    阿里云默認(rèn)yum命令下的MySQL是5.17****,安裝mysql5.7之前先卸載以前的版本。下面通過本文給大家介紹阿里云ECS centos6.8下安裝配置MySql5.7的教程,需要的的朋友參考下吧
    2017-07-07
  • MySQL中(JOIN/ORDER BY)語句的查詢過程及優(yōu)化方法

    MySQL中(JOIN/ORDER BY)語句的查詢過程及優(yōu)化方法

    sql語句性能達(dá)不到你的要求,執(zhí)行效率讓你忍無可忍,一般會造成很多影響。那么我們?nèi)绾谓鉀Q這些問題呢,下面由小編來和大家簡單講下
    2019-05-05
  • MySQL之初始化數(shù)據(jù)詳解

    MySQL之初始化數(shù)據(jù)詳解

    本文介紹了MySQL命令行的基本操作,包括列出數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫、使用數(shù)據(jù)庫、查看表、刪除數(shù)據(jù)庫、退出MySQL等,還詳細(xì)介紹了數(shù)據(jù)庫表的結(jié)構(gòu)和屬性,以及如何創(chuàng)建和初始化測試數(shù)據(jù)
    2025-01-01
  • MySQL中的TRUNCATE TABLE命令的使用

    MySQL中的TRUNCATE TABLE命令的使用

    TRUNCATE TABLE命令是一個用于快速刪除表中所有數(shù)據(jù)的重要工具,本文介紹了MySQL中的TRUNCATE TABLE命令的用法、工作原理以及實(shí)際應(yīng)用中的注意事項(xiàng),感興趣的可以了解一下
    2024-08-08
  • 詳解標(biāo)準(zhǔn)mysql(x64) Windows版安裝過程

    詳解標(biāo)準(zhǔn)mysql(x64) Windows版安裝過程

    這篇文章主要介紹了標(biāo)準(zhǔn)mysql(x64) Windows版安裝過程,需要的朋友可以參考下
    2017-08-08
  • 兩種mysql對自增id重新從1排序的方法

    兩種mysql對自增id重新從1排序的方法

    本文介紹了兩種mysql對自增id重新從1排序的方法,簡少了對于某個項(xiàng)目初始化數(shù)據(jù)的工作量,感興趣的朋友可以參考下
    2015-07-07
  • mysql 5.6.37(zip)下載安裝配置圖文教程

    mysql 5.6.37(zip)下載安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.6.37(zip)下載安裝配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論

盐亭县| 吕梁市| 潞城市| 维西| 会昌县| 台安县| 武义县| 黄骅市| 恩施市| 台北市| 榆社县| 和顺县| 精河县| 大足县| 墨竹工卡县| 壶关县| 康马县| 隆回县| 庐江县| 峨边| 大宁县| 仁布县| 普格县| 黔西县| 宕昌县| 炉霍县| 象州县| 临沭县| 道孚县| 上高县| 西藏| 万源市| 邻水| 吉林市| 罗江县| 绥阳县| 洛浦县| 宣化县| 建瓯市| 钟祥市| 北宁市|