豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: MySQL SSL连接

🤖 Ai回答:
在 MySQL 中启用和使用 SSL 连接可以增强客户端与服务器之间的通信安全性,防止数据被窃听或篡改。以下是配置和使用 MySQL SSL 连接的完整指南:

一、检查 MySQL 是否支持 SSL

首先确认你的 MySQL 服务器是否编译支持 SSL:

sql
SHOW VARIABLES LIKE 'have_ssl';

如果返回值为 `YES`,表示支持 SSL。

同时查看当前 SSL 状态:

sql
SHOW STATUS LIKE 'Ssl%';

若 `Ssl_version` 有值(如 `TLSv1.2`),说明当前连接已使用 SSL。

二、生成 SSL 证书和密钥(自签名)

如果你已有 CA 证书或希望使用正式证书,可跳过此步。

1、创建证书目录

bash
mkdir -p /var/lib/mysql/ssl
cd /var/lib/mysql/ssl

2、生成 CA 证书

bash
openssl genrsa 2048 ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem

填写国家、组织等信息,Common Name 可填 `MySQL CA`

3、生成服务器证书请求

bash
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem 移除密码保护
openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

4、生成客户端证书(可选,用于双向认证)

bash
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem

5、验证证书

bash
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

应显示 `OK`

三、配置 MySQL 使用 SSL

编辑 MySQL 配置文件(通常是 `/etc/mysql/my.cnf` 或 `/etc/my.cnf`):

ini
[mysqld]
ssl-ca=/var/lib/mysql/ssl/ca-cert.pem
ssl-cert=/var/lib/mysql/ssl/server-cert.pem
ssl-key=/var/lib/mysql/ssl/server-key.pem

可选:强制客户端使用 SSL(谨慎使用)
require_secure_transport = ON

重启 MySQL 服务:

bash
sudo systemctl restart mysql

sudo service mysqld restart

四、验证 SSL 是否启用

登录 MySQL:

sql
SHOW VARIABLES LIKE '%ssl%';

你应该看到类似:

have_openssl YES
have_ssl YES
ssl_ca /var/lib/mysql/ssl/ca-cert.pem
ssl_cert /var/lib/mysql/ssl/server-cert.pem
ssl_key /var/lib/mysql/ssl/server-key.pem

再检查当前连接状态:

sql
STATUS;

\status

在输出中查找:

SSL: Cipher in use is TLS_AES_256_GCM_SHA384

或执行:

sql
SELECT ssl_type FROM information_schema.processlist WHERE id=connection_id();

如果返回 `SSL` 或 `X509`,说明当前连接是加密的。

五、客户端连接时启用 SSL

方法 1:命令行客户端(mysql)

bash
mysql ssl-mode=REQUIRED \
ssl-ca=/path/to/ca-cert.pem \
ssl-cert=/path/to/client-cert.pem \
ssl-key=/path/to/client-key.pem \
-u username -h hostname -p

`ssl-mode` 可选值:
`DISABLED` — 不使用 SSL
`PREFERRED` — 尽量使用 SSL,不强制
`REQUIRED` — 必须使用 SSL,否则失败
`VERIFY_CA` — 验证 CA 证书
`VERIFY_IDENTITY` — 验证主机名与证书匹配(最安全)

方法 2:在连接字符串中指定(如 PHP、Python 等)

Python 示例(mysql-connector-python):

python
import mysql.connector

config = {
'user': 'username',
'password': 'password',
'host': 'hostname',
'database': 'dbname',
'ssl_ca': '/path/to/ca-cert.pem',
'ssl_cert': '/path/to/client-cert.pem',
'ssl_key': '/path/to/client-key.pem',
'ssl_verify_cert': True,
}

conn = mysql.connector.connect(config)

PHP 示例(PDO):

php
$pdo = new PDO(
mysql:host=hostname;dbname=dbname,
username,
password,
[
PDO::MYSQL_ATTR_SSL_KEY = '/path/to/client-key.pem',
PDO::MYSQL_ATTR_SSL_CERT = '/path/to/client-cert.pem',
PDO::MYSQL_ATTR_SSL_CA = '/path/to/ca-cert.pem',
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT = true,
]
);

六、创建需要 SSL 的用户(可选)

你可以创建只允许通过 SSL 连接的用户:

sql
CREATE USER 'secure_user'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
FLUSH PRIVILEGES;

或者更严格地要求证书:

sql
CREATE USER 'secure_user'@'%' IDENTIFIED BY 'password' REQUIRE X509;
FLUSH PRIVILEGES;

七、常见问题排查

❌ 错误:SSL connection error

检查证书路径是否正确
确保权限允许 MySQL 读取证书文件(通常 `chmod 600 *.pem`)
检查 `ssl_mode` 设置是否匹配
使用 `openssl s_client -connect host:port -CAfile ca-cert.pem` 测试连接

❌ 错误:Access denied for user ..、(using password: YES)

用户未设置 `REQUIRE SSL`
客户端未提供正确的证书或未启用 SSL

八、生产环境建议

✅ 使用由可信 CA 签发的证书
✅ 强制使用 `VERIFY_IDENTITY` 模式
✅ 定期更新证书(避免过期)
✅ 启用 `require_secure_transport = ON`(如果所有客户端都支持 SSL)
✅ 监控日志中的 SSL 连接错误

总结

| 步骤 | 内容 |

| 1️⃣ | 确认 MySQL 支持 SSL |
| 2️⃣ | 生成或获取证书(CA + Server + Client) |
| 3️⃣ | 配置 MySQL 启用 SSL |
| 4️⃣ | 重启服务并验证 |
| 5️⃣ | 客户端连接时指定证书和模式 |
| 6️⃣ | (可选)创建仅限 SSL 的用户 |

✅ 成功标志**:客户端连接后执行 `STATUS` 显示 `SSL: Cipher in use...`,且 `SHOW STATUS LIKE 'Ssl%'` 中计数器增加。

如需进一步自动化或集成到容器/K8s 环境,也可使用脚本或 Helm Chart 自动部署证书。

如有具体错误或环境,请提供详细信息以便针对性解决。

Ai作答

📣 商家广告


豌豆Ai站群搜索引擎系统

贵阳用友软件

求名

起名

域名抢注


0

IP地址: 10.252.212.50

搜索次数: 0

提问时间: 2025-11-11 06:22:14

🛒 域名购买
sbnjt.net
vg.gs
3.gx.cn
875.net.cn
62.gs
59.gold
61.chat
67.gs
v-z.net
58.gold

❓️ 热门提问
克罗心香港
电脑主机没电
php的web服务器
国外日本服务器
win vps 便宜
flask服务器推送
好用的台服加速器
阿根廷vps
100m香港主机
华美云服务器
豌豆Ai站群搜索引擎系统

🌐 域名评估
aaaa.xj.cn
eyxz.cn
musk.fashion
ee.hn.cn
tpyd.cn
vision2200.cn
oikid.com.cn
gpbg.cn
aaaa.cab
bxss.me

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
温泉设计施工  站搜  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 87201 87202 87203 下一篇