MySQL启用SSL连接
封面图
•
2025-12-20
•
MySQL
233
0
0
0
在 MySQL 中启用 SSL 连接可以增强数据库连接的安全性,防止数据在传输过程中被窃听或篡改。以下是启用 MySQL SSL 连接的步骤: --- ## ✅ 一、准备工作 1. **确认 MySQL 是否支持 SSL** 登录 MySQL 后执行以下命令查看是否支持 SSL: ```sql SHOW VARIABLES LIKE 'have_ssl'; ``` - 如果返回 `Value = YES`,说明 MySQL 支持 SSL。 - 如果是 `NO` 或 `DISABLED`,则需要重新编译 MySQL 或使用支持 SSL 的版本。 2. **生成 SSL 证书(如果还没有)** 你可以使用 OpenSSL 生成自签名证书,用于测试环境。 ```bash # 创建 CA 证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -days 365 -key ca-key.pem -out ca-cert.pem # 创建服务器证书 openssl genrsa 2048 > server-key.pem openssl req -new -key server-key.pem -out server-req.pem openssl x509 -req -days 365 -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem # 创建客户端证书 openssl genrsa 2048 > client-key.pem openssl req -new -key client-key.pem -out client-req.pem openssl x509 -req -days 365 -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem ``` 生成后,将这些文件放在 MySQL 的配置目录中(如 `/etc/mysql/ssl/`)。 --- ## ✅ 二、配置 MySQL 使用 SSL 1. **编辑 MySQL 配置文件** 通常位于 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`,添加以下内容: ```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-ca`: CA 证书路径 - `ssl-cert`: 服务器证书路径 - `ssl-key`: 服务器私钥路径 2. **重启 MySQL 服务** ```bash sudo systemctl restart mysql ``` 或者根据你的系统使用: ```bash sudo service mysql restart ``` --- ## ✅ 三、验证 SSL 是否启用 登录 MySQL 并执行以下命令: ```sql SHOW VARIABLES LIKE 'have_ssl'; SHOW STATUS LIKE 'Ssl_%'; ``` 你应该看到类似如下输出: ``` Variable_name: have_ssl Value: YES Variable_name: Ssl_version Value: TLSv1.2 ``` --- ## ✅ 四、客户端连接时使用 SSL ### 1. 使用命令行连接(MySQL 客户端) ```bash mysql -u username -p --ssl-mode=REQUIRED --ssl-ca=/path/to/ca-cert.pem ``` 或者指定所有 SSL 参数: ```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 ``` ### 2. 使用编程语言连接(例如 Python + pymysql) ```python import pymysql conn = pymysql.connect( host='localhost', user='username', password='password', database='database', ssl={'ca': '/etc/mysql/ssl/ca-cert.pem'} ) ``` --- ## ✅ 五、SSL 模式说明 | 模式 | 描述 | |------|------| | `DISABLED` | 不使用 SSL | | `PREFERRED` | 优先使用 SSL,如果没有则不使用 | | `REQUIRED` | 必须使用 SSL,否则连接失败 | | `VERIFY_CA` | 必须使用 SSL,并验证服务器的 CA 证书 | | `VERIFY_IDENTITY` | 必须使用 SSL,并验证服务器的主机名 | --- ## 📌 注意事项 - 生产环境中建议使用由权威 CA 签名的证书,而不是自签名证书。 - 如果你使用的是云数据库(如 AWS RDS、阿里云等),通常已经内置了 SSL 支持,只需在连接时指定 SSL 参数即可。 --- 如果你有特定的 MySQL 版本或操作系统(如 Ubuntu、CentOS、Windows),我可以提供更详细的步骤。欢迎继续提问!
上一篇:
mysql授权单个表权限
下一篇:
MySQL服务器开启SSL
标题录入,一次不能超过6条
留言
评论