MySQL8开启SSL加密
1 概述
MySQL
从5.7
开始默认开启SSL
加密功能,进入MySQL
控制台后输入status
可以查看SSL
的状态,出现下图表示在使用SSL
:
另外,加密连接需要密钥与证书,可以使用OpenSSL
手动生成或使用mysql_ssl_rsa_setup
自动生成,这里使用了mysql_ssl_rsa_setup
。
下面从安装开始。
2 安装(可选)
系统CentOS
,直接使用yum
安装(编译安装参考此处),先用list
查看一下:
这里的版本是8.0.17
,直接install
:
yum install mysql
yum install mysql-server
好了之后启动服务:
systemctl start mysqld
然后获取临时密码后修改root
密码:
grep password /var/log/mysql/mysqld.log
这里显示密码为空,直接root
登录修改密码:
mysql -u root -p
alter user root@localhost identified by 'xxxxx
3 生成证书与密钥
首先查看有没有开启SSL
,MySQL
控制台输入
show variables like '%ssl%';
这里have_ssl
显示yes
,表示已经开启了,表示本地的使用了SSL
连接,如果显示为no
,使用MySQL
自带的工具即可开启SSL
:
mysqld_ssl_rsa_setup
然后默认在/var/lib/mysql
下会有几个pem
文件,说明如下:
接着重启服务:
systemctl restart mysqld
4 测试
进入服务器的MySQL
控制台,新建两个测试用户,一个使用SSL
,一个不使用SSL
:
然后在本机上测试,首先测试不需要SSL
的用户,输入密码123456后可以直接登录:
然后测试需要SSL
的用户:
输入密码123456后登录不了,使用scp
从服务器复制CA
证书与客户端证书与私钥:
scp username@xxx.xxx.xxx.xxx:/var/lib/mysql/\{ca.pem,client-key.pem,client-cert.pem} .
然后在登录时加上
--ssl-ca=ca.pem
--ssl-cert=client-cert.pem
--ssl-key=client-key.pem
登录成功。