mysql5.7 ssl 的更新知识和了解

之前版本MySQL数据库默认安装的用户密码为空
 
所有用户拥有对于MySQL默认安装test数据库的访问权限(即使没有授予权限)
 
好在Oracle官方也已经意识到安全的重要性,MySQL 5.7开始安装完成后的root用户的密码不再是空,而是在安装时随机产生一个密码,这也导致了用户安装5.7时发现的与5.6版本比较大的一个不同点。其次,官方已经删除了test数据库,默认安装完后是没有test数据库的。更为重要的是,MySQL 5.7版本提供了更为简单SSL安全访问配置,并且默认连接就采用SSL的加密方式。

SSL指的是SSL/TLS,其是一种为了在计算机网络进行安全通信的加密协议。假设用户的传输不是通过SSL的方式,那么其在网络中以明文的方式进行传输,而这给别有用心的人带来了可乘之机。所以,现在很多网站其实默认已经开启了SSL功能,比如Facebook、Twtter、YouTube、淘宝等。

MySQL 5.7的SSL配置与使用 如果仔细阅读MySQL 5.7的安装文档INSTALL-BINARY,会发现5.7的安装文档在初始化数据目录之后还额外多做了一个操作,这是之前版本所没有的操作,而该步骤即是对于SSL的安装与配置:
......
shell> bin/mysqld --initialize --user=mysql
shell> bin/mysql_ssl_rsa_setup  
......          
 
运行完命令mysql_ssl_rsa_setup后会发现数据目录下多出了一些以pem结尾的文件,而这些文件就是开启SSL连接所需要的文件:
 
root@test-1:/usr/local/mysql/data# ls -lh *.pem  
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 ca-key.pem  
-rw-r--r-- 1 mysql mysql 1.1K Nov 25 14:12 ca.pem  
-rw-r--r-- 1 mysql mysql 1.1K Nov 25 14:12 client-cert.pem  
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 client-key.pem  
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 private_key.pem  
-rw-r--r-- 1 mysql mysql  451 Nov 25 14:12 public_key.pem  
-rw-r--r-- 1 mysql mysql 1.1K Nov 25 14:12 server-cert.pem  
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 server-key.pem  
root@test-1:/usr/local/mysql/data# ls -lh *.pem
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 ca-key.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 25 14:12 ca.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 25 14:12 client-cert.pem
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 client-key.pem
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 private_key.pem
-rw-r--r-- 1 mysql mysql  451 Nov 25 14:12 public_key.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 25 14:12 server-cert.pem
-rw------- 1 mysql mysql 1.7K Nov 25 14:12 server-key.pem
 
若这时启动MySQL数据库并启动应该可以发现如下状态:
 
mysql>SHOW VARIABLES LIKE 'have_ssl';  
+---------------+-------+  
| Variable_name | Value |  
+---------------+-------+  
| have_ssl          | YES     |  
+---------------+-------+  
1 row in set (0.00 sec)  
mysql>SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl          | YES     |
+---------------+-------+
1 row in set (0.00 sec)
 
该参数表示MySQL服务器开启了SSL功能,而在MySQL 5.7版本下默认就会使用SSL的方式来进行连接,比如:
 
root@test-1:~# mysql -h10.166.224.32 -udavid  
mysql> \s  
--------------  
mysql  Ver 14.14 Distrib 5.7.9, for linux-glibc2.5 (x86_64) using  EditLine wrapper  
 
Connection id:      6119  
Current database:     
Current user:       david@10.166.224.32  
SSL:            Cipher in use is DHE-RSA-AES256-SHA  
......  
root@test-1:~# mysql -h10.166.224.32 -udavid
mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.9, for linux-glibc2.5 (x86_64) using  EditLine wrapper
 
Connection id: 6119
Current database:
Current user: david@10.166.224.32
SSL: Cipher in use is DHE-RSA-AES256-SHA
......
 
通过STATUS的SSL列就能判断连接的用户是否使用了SSL,比如上述例子中的Cipher in use is DHE-RSA-AES256-SHA就表示当前david用户是通过SSL的方式进行连接。若在创建用户时,希望该用户每次必须通过SSL方式,则需在创建用户通过REQUIRE SSL来进行设置,对于上述的david用户,可以通过如下方式来进行修改以确保每次通过SSL进行连接,强制不使用SSL进行连接则报错:
 
mysql> ALTER USER david@'%' REQUIRE SSL;  
......  
root@test-1:~# mysql -h10.166.224.32 -udavid --ssl=0  
ERROR 1045 (28000): Access denied for user 'david'@'10.166.224.32' (using password: YES)  
mysql> ALTER USER david@'%' REQUIRE SSL;
......
root@test-1:~# mysql -h10.166.224.32 -udavid --ssl=0
ERROR 1045 (28000): Access denied for user 'david'@'10.166.224.32' (using password: YES)
 
MySQL 5.6同样支持以SSL的方式进行连接,但是操作相对5.7较为复杂,用户需要自己通过openssl命令来创建各类公密钥,具体可以查看相关官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值