MySQL服务器开启SSL
封面图
•
2025-11-27
•
MySQL
191
0
0
0
在 MySQL 服务器上启用 SSL 可以增强数据库连接的安全性,防止数据在传输过程中被窃听或篡改。以下是开启 MySQL 服务器 SSL 的步骤(适用于大多数 Linux 系统,如 Ubuntu、CentOS 等)。 --- ## ✅ 一、检查 MySQL 是否支持 SSL 首先确认你的 MySQL 服务器是否支持 SSL: ```bash mysql -u root -p -e "SHOW VARIABLES LIKE 'have_ssl';" ``` 如果输出为 `have_ssl: YES`,说明 MySQL 支持 SSL;否则需要重新编译安装支持 SSL 的版本。 --- ## ✅ 二、生成 SSL 证书(可选) 如果你没有现成的 SSL 证书,可以使用 OpenSSL 生成自签名证书。 ### 1. 创建证书目录 ```bash sudo mkdir /etc/mysql/ssl cd /etc/mysql/ssl ``` ### 2. 生成私钥 ```bash sudo openssl genrsa 2048 > ca-key.pem ``` ### 3. 生成 CA 证书(自签名) ```bash sudo openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem ``` ### 4. 生成服务器私钥 ```bash sudo openssl req -new -nodes -keyout server-key.pem -out server-req.pem ``` ### 5. 使用 CA 证书签署服务器证书 ```bash sudo openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 3650 ``` ### 6. 生成客户端证书(可选) ```bash sudo openssl req -new -nodes -keyout client-key.pem -out client-req.pem sudo openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 3650 ``` --- ## ✅ 三、配置 MySQL 启用 SSL 编辑 MySQL 配置文件(通常是 `/etc/mysql/my.cnf` 或 `/etc/my.cnf`): ```bash sudo nano /etc/mysql/my.cnf ``` 在 `[mysqld]` 段中添加以下内容: ```ini [mysqld] ssl-ca=/etc/mysql/ssl/ca-cert.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem ``` > 如果你不想强制要求 SSL 连接,可以不加 `require_secure_transport = ON`,但建议启用。 --- ## ✅ 四、重启 MySQL 服务 ```bash sudo systemctl restart mysql # 或者 sudo service mysql restart ``` --- ## ✅ 五、验证 SSL 是否启用 登录 MySQL 并执行以下命令: ```sql SHOW VARIABLES LIKE 'have_ssl'; SHOW STATUS LIKE 'Ssl_cipher'; ``` 如果 `have_ssl` 是 `YES`,并且 `Ssl_cipher` 显示了使用的加密算法,则说明 SSL 已成功启用。 --- ## ✅ 六、客户端连接时使用 SSL 你可以通过指定 SSL 参数来连接 MySQL 服务器: ```bash mysql -u username -p --ssl-ca=/etc/mysql/ssl/ca-cert.pem --ssl-cert=/etc/mysql/ssl/client-cert.pem --ssl-key=/etc/mysql/ssl/client-key.pem ``` --- ## ⚠️ 注意事项 - 如果你使用的是云数据库(如 AWS RDS、阿里云等),通常不需要自己生成证书,而是通过控制台配置 SSL。 - 自签名证书仅用于测试环境,生产环境应使用受信任的 CA 机构签发的证书。 - 开启 SSL 后,可能会略微影响性能,但对安全性提升很大。 --- 如果你需要我帮你生成 SSL 证书或配置特定的 MySQL 版本,请告诉我你的 MySQL 版本和操作系统。
上一篇:
MySQL启用SSL连接
下一篇:
mysqlbinlog 查看binlog日志时报错unknown variable 'default-character-set=utf8'
标题录入,一次不能超过6条
留言
评论