mysql ssl_MySQL使用SSL连接

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:44   1606   0

一、查看是否开启SSLmysql> show variables like 'have_ssl';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| have_ssl | YES |

+---------------+-------+

1 row in set (0.00 sec)

mysql>

#当 have_ssl 为 YES 时, 表示此时 MySQL 服务已经支持 SSL 了. 如果是 DESABLE,证明还没有开启SSL

二、生成证书

使用工具创建证书与私钥(推荐)

在 MySQL 5.7 中, 提供了一个名为 mysql_ssl_rsa_setup 的工具, 通过它, 我们可以很方便地创建 SSL 连接所需要的各种文件:

这个工具在你mysql的安装目录下的bin目录下,如果实在找不到,用以下命令查找下locate -r mysql_ssl_rsa_setup$

#或

find / -name "mysql_ssl_rsa_setup"

进入到mysql_ssl_rsa_setup所在的目录后#需要先停止mysql

systemctl stop mysqld

./mysql_ssl_rsa_setup --uid=mysql

默认会在mysql的datadir下生成8个.pem文件, (datadir可以在 ./mysql_ssl_rsa_setup --help 命令下看到)-v 可以指定证书的生成目录

--uid 指定证书文件的归属用户

生成的八个证书文件ca-key.pem #CA私钥

ca.pem #自签的CA证书,客户端连接也需要提供

client-cert.pem #客户端连接服务器端需要提供的证书文件

client-key.pem #客户端连接服务器端需要提供的私钥文件

private_key.pem #私钥/公钥对的私有成员

public_key.pem #私钥/公钥对的共有成员

server-cert.pem #服务器端证书文件

server-key.pem #服务器端私钥文件

三、服务器端配置SSL(非必须)

在你保证生成的八个证书文件的归属用户和权限均设置正确的情况下来说,重启下mysql服务,mysql会自动开启SSL,下面操作只针对为自动加载证书,开启SSL的情况.

在mysql的配置文件下添加以下内容(注意需要添加到[mysqld]下)[mysqld]

ssl-ca = path/ca.pem

ssl-cert = path/server-cert.pem

ssl-key = path/server-key.pem

四、验证

在你改完配置之后一定要重启或重新加载下配置mysql -u tom --ssl-mode=required -p

注意: 需要添加 --ssl-mode=requiredmysql> status

--------------

mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using EditLine wrapper

Connection id:49

Current database:

Current user:tom@localhost

SSL:Cipher in use is DHE-RSA-AES128-GCM-SHA256

Current pager:stdout

Using outfile:''

Using delimiter:;

Server version:5.7.31-log Source distribution

Protocol version:10

Connection:Localhost via UNIX socket

Server characterset:utf8mb4

Db characterset:utf8mb4

Client characterset:utf8mb4

Conn. characterset:utf8mb4

UNIX socket:/tmp/mysql.sock

Uptime:12 min 8 sec

Threads: 2 Questions: 817 Slow queries: 0 Opens: 178 Flush tables: 1 Open tables: 78 Queries per second avg: 1.122

SSL项显示 Cipher in use ,表明当前链接使用了SSLmysql> show status like 'ssl_cipher';

+---------------+---------------------------+

| Variable_name | Value |

+---------------+---------------------------+

| Ssl_cipher | DHE-RSA-AES128-GCM-SHA256 |

+---------------+---------------------------+

1 row in set (0.00 sec)

Ssl_cipher 项显示的不为空证明使用了SSL

目前mysql并不是对用户强制使用SSL.#让某个tom用户强制使用SSL

ALTER USER 'tom'@'%' REQUIRE SSL;

#新建用户强制使用SSL

grant select on *.* to 'tom'@'%' identified by 'xxx' REQUIRE SSL;

注意: 强制使用SSL连接的用户一定要加: --ssl-mode=required

不建议强制所有用户使用SSL, 使用SSL会降低数据库QPS.

参考文章:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP