MySQL 5.7 的SSL加密方法
1、停止msyql
/etc/init.d/mysql stop
2、查看數據庫的位置查看datadir的位置
cat /etc/my.cnf
3、安裝證書
/usr/bin/mysql_ssl_rsa_setup --datadir=/var/lib/mysql
4、修改權限
chown -R mysql:mysql /var/lib/mysql/*.pem
5、修改/etc/my.cnf 在 [mysqld] 下面添加
ssl-ca = /var/lib/mysql/ca.pem
ssl-cert = /var/lib/mysql/server-cert.pem
ssl-key = /var/lib/mysql/server-key.pem
6、啟動 mysql
/etc/init.d/mysql start
7、登錄mysql
mysql -uroot -p
8、查看ssl參數狀態,查看have_ssl,為YES,這表示已經開始支持SSL了
show global variables like '%ssl%';
9、查看SSL的加密方式
show global variables like 'tls_version';
10、配置SSL用戶
a、取消ssl驗證
CREATE USER 'yang0001'@'%' IDENTIFIED BY 'afdsa0897091';
grant all privileges on *.* to yang0001@'%' identified by 'afdsa0897091' require none;
alter user yang0001@'%' require none;
b、強制ssl驗證,即使設置了強制ssl,在登錄時候使用--ssl-mode=disable依然可以避開ssl驗證
CREATE USER 'yang0001'@'%' IDENTIFIED BY 'afdsa0897091';
grant all privileges on *.* to yang0001@'%' identified by 'afdsa0897091' require ssl;
alter user abcssl@'%' require ssl;
11、查看是否開啟強制用戶使用SSL
select user,host,ssl_type,ssl_cipher from mysql.user ;
12、連接數據庫的時候,帶上SSL
不指定客戶端證書方式
5.6
--ssl、--disable-ssl、--skip-ssl:在mysql5.7是將被廢棄的選項,將來版本不再支持,建議使用--ssl-mode選項,
/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl 默認為1
/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl=0
/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl=1 默認為1
/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --disable-ssl
/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --skip-ssl
5.7
/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl-mode=disable
/usr/local/mysql/bin/mysql -uroot -p -h127.0.0.1 --ssl-mode=required 默認required
從另一台機器連接過去也可以ssl加密,表明不需要安裝客戶端證書的
/usr/local/mysql/bin/mysql -uroot -p -h10.105.45.133 --ssl-mode=required
13、指定客戶端證書方式,5.6的方式,5.7也可以用
/usr/local/mysql/bin/mysql --ssl-ca=/data/mysql/mysql3306/data/ca.pem \
--ssl-cert=/data/mysql/mysql3306/data/client-cert.pem \
--ssl-key=/data/mysql/mysql3306/data/client-key.pem \
-uroot -p -h127.0.0.1
14、接驗證連接是否用了ssl
登錄數據庫后,輸入 status
總結
1、MySQL5.7默認是開啟SSL連接,如果強制用戶使用SSL連接,那么應用程序的配置也需要明確指定SSL相關參數,否則程序會報錯。
2、雖然SSL方式使得安全性提高了,但是相對地使得QPS也降低23%左右。所以要謹慎選擇:
2.1、對於非常敏感核心的數據,或者QPS本來就不高的核心數據,可以采用SSL方式保障數據安全性;
2.2、對於采用短鏈接、要求高性能的應用,或者不產生核心敏感數據的應用,性能和可用性才是首要,建議不要采用SSL方式;
參考文章:
