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

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

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

概述

Mysql 8 默認啟用SSL安全連接,也可以強制必須啟用。建議手動生成自簽名證書和key并配置到服務端和客戶端路徑里,也可以直接使用mysql默認生成的,默認在數(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配置
# 強制所有連接使用SSL
require_secure_transport = ON
# 可以自行創(chuàng)建ca證書、服務端證書和KEYy,以下三個配置也可以不寫,使用默認配置
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                 # 服務器/客戶端證書有效期(10年)
COUNTRY="CN"                   # 國家代碼
STATE="guangzhou"              # 省份/州
CITY="guangzhou"               # 城市
ORG="zuzhi"                   # 組織
UNIT="DBA"                     # 部門
COMMON_NAME="mysql-server"     # 服務器通用名稱
CLIENT_COMMON_NAME="mysql-client"  # 客戶端通用名稱
EMAIL="admin@zuzhi.com"       # 聯(lián)系郵箱
# ==============================================
# 清理舊證書并創(chuàng)建目錄
# ==============================================
echo "===== 準備證書目錄 ====="
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 "錯誤:無法進入目錄 $SSL_DIR"; exit 1; }
chmod 700 .  # 限制目錄訪問權限
# ==============================================
# 生成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; }
# 驗證CA私鑰格式
echo "驗證CA私鑰格式..."
if ! grep -- "-----BEGIN RSA PRIVATE KEY-----" ca-key.pem >/dev/null 2>&1; then
    echo "錯誤:CA私鑰格式不正確,缺少起始標記"
    exit 1
fi
# ==============================================
# 生成服務器證書(移除PKCS#8轉換)
# ==============================================
echo -e "\n===== 生成服務器證書 ====="
echo "生成服務器私鑰 (server-key.pem)..."
openssl genrsa -out server-key.pem 2048 || { echo "錯誤:服務器私鑰生成失敗"; exit 1; }
# 驗證服務器私鑰格式
if ! grep -- "-----BEGIN RSA PRIVATE KEY-----" server-key.pem >/dev/null 2>&1; then
    echo "錯誤:服務器私鑰格式不正確,缺少起始標記"
    exit 1
fi
echo "生成服務器證書請求 (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 "錯誤:服務器證書請求生成失敗"; exit 1; }
echo "用CA簽名服務器證書 (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 "錯誤:服務器證書簽名失敗"; exit 1; }
# ==============================================
# 生成客戶端證書(移除PKCS#8轉換)
# ==============================================
echo -e "\n===== 生成客戶端證書 ====="
echo "生成客戶端私鑰 (client-key.pem)..."
openssl genrsa -out client-key.pem 2048 || { echo "錯誤:客戶端私鑰生成失敗"; exit 1; }
# 驗證客戶端私鑰格式
if ! grep -- "-----BEGIN RSA PRIVATE KEY-----" client-key.pem >/dev/null 2>&1; then
    echo "錯誤:客戶端私鑰格式不正確,缺少起始標記"
    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
# ==============================================
# 生成結果驗證
# ==============================================
echo -e "\n===== 證書生成完成 ====="
echo "證書存儲目錄: $(pwd)"
echo "生成的文件列表:"
ls -l ./*
# 驗證關鍵文件是否存在且非空
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 "警告:關鍵文件 $file 不存在或為空,生成過程可能有問題"
    fi
done

步驟六:執(zhí)行腳本:sh ssl-genrenal.sh,將ssl文件夾下的文件復制到./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 無法找到信任鏈中可信任的根證書,導致證書路徑驗證失敗。

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

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

導入命令如下:

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

5、導入結果

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

總結 

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

相關文章

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

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

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

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

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

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

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

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

    阿里云默認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語句性能達不到你的要求,執(zhí)行效率讓你忍無可忍,一般會造成很多影響。那么我們如何解決這些問題呢,下面由小編來和大家簡單講下
    2019-05-05
  • MySQL之初始化數(shù)據(jù)詳解

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

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

    MySQL中的TRUNCATE TABLE命令的使用

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

    詳解標準mysql(x64) Windows版安裝過程

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

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

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

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

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

最新評論

嘉义市| 红安县| 株洲市| 定远县| 六安市| 安溪县| 黄山市| 股票| 兰溪市| 朝阳县| 宁河县| 肃北| 龙山县| 顺昌县| 西藏| 西丰县| 阿拉尔市| 永寿县| 昭觉县| 宜兴市| 民乐县| 福鼎市| 永吉县| 凤山县| 井陉县| 长顺县| 锡林浩特市| 灵寿县| 双桥区| 忻州市| 翼城县| 平阳县| 汉源县| 黄梅县| 临湘市| 资阳市| 华蓥市| 巴彦淖尔市| 界首市| 本溪| 荣昌县|