Mysql 5.7 开启 SSL

Posted by Cann on November 11, 2019

Mysql 5.7 开启 SSL

1: 生成证书、公私钥,执行 mysql/bin 目录下的:
    /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/ssl

注:--datadir 参数指定生成出来的证书、公私钥放在哪个目录下

2:编辑 my.cnf,在 mysqld 下加入以下内容,用于指定 Mysql Server 端使用的 证书、私钥地址:
ssl-ca = /usr/local/mysql/ssl/ca.pem
ssl-cert = /usr/local/mysql/ssl/server-cert.pem
ssl-key = /usr/local/mysql/ssl/server-key.pem

注:查找 my.cnf 位置: mysql --help|grep 'my.cnf'

3:重启 Mysql,执行以下命令,查看 Mysql 是否成功开启 SSL:
 show variables like '%ssl%'

have_ssl 等于 YES,表示成功开启 SSL

4:将指定用户设置为必须通过 SSL 连接:
alter user 'username'@'%' require ssl;
5:命令行通过 SSL 连接 Mysql:
mysql -uusername -ppassword --ssl-ca=/usr/local/mysql/ssl/ca.pem --ssl-cert=/usr/local/mysql/ssl/client-cert.pem --ssl-key=/usr/local/mysql/ssl/client-key.pem

Laravel 连接 Mysqls 配置:

        'mysql' => [
            'driver' => 'mysql',
            ...
            'options' => [
                PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => false,
                PDO::MYSQL_ATTR_SSL_KEY => '/Users/cann/home/wwwroot/ai_loan_kbb_server/config/certs/mysql/client-key.pem',
                PDO::MYSQL_ATTR_SSL_CERT => '/Users/cann/home/wwwroot/ai_loan_kbb_server/config/certs/mysql/client-cert.pem',
                PDO::MYSQL_ATTR_SSL_CA => '/Users/cann/home/wwwroot/ai_loan_kbb_server/config/certs/mysql/ca.pem',
            ],
        ],

注1:若没有将自生成的CA证书放到服务器的证书信任列表,则必须关闭 MYSQL_ATTR_SSL_VERIFY_SERVER_CERT

注2:证书、公钥路径必须为绝对路径