mysql 5.7使用ssl连接
2015-11-29 23:34
656 查看
mysql 5.7使用ssl连接
mysql 57使用ssl连接环境
操作
使用脚本工具生成密钥文件
添加ssl参数到mycnf配置文件
启动mysql server
验证服务器是还开启ssl
客户端连接
创建必须使用ssl登录的用户
系统用户表user与ssl
其他
说明
环境
CentOS6.6 X86_64操作
使用脚本工具生成密钥文件
bin/mysql_ssl_rsa_setup 执行完成后,data目录下生成密钥文件 -rw-r--r--. 1 root root 451 11月 28 12:26 public_key.pem -rw-------. 1 root root 1.7K 11月 28 12:26 private_key.pem -rw-r--r--. 1 root root 1.1K 11月 28 12:26 client-cert.pem -rw-------. 1 root root 1.7K 11月 28 12:26 client-key.pem -rw-r--r--. 1 root root 1.1K 11月 28 12:26 server-cert.pem -rw-------. 1 root root 1.7K 11月 28 12:26 server-key.pem -rw-r--r--. 1 root root 1.1K 11月 28 12:26 ca.pem -rw-------. 1 root root 1.7K 11月 28 12:26 ca-key.pem 生成密钥文件后注意权限,特别是root运行此脚本,mysql01用户启动mysql这种 chown -R mysql01:mysql ./data 文件说明: ca.pem Self-signed CA certificate ca-key.pem CA private key server-cert.pem Server certificate server-key.pem Server private key client-cert.pem Client certificate client-key.pem Client private key 启动时产生RSA密钥对 private_key.pem Private member of private/public key pair public_key.pem Public member of private/public key pair 参考http://dev.mysql.com/doc/refman/5.7/en/creating-ssl-rsa-files-using-mysql.html 使用ssl连接http://dev.mysql.com/doc/refman/5.7/en/using-ssl-connections.html
添加ssl参数到my.cnf配置文件
添加ssl参数到my.cnf配置文件 [mysqld] ssl-ca=/opt/mysql01/data/ca.pem ssl-cert=/opt/mysql01/data/client-cert.pem ssl-key=/opt/mysql01/data/client-key.pem [mysql] ssl-ca=/opt/mysql01/data/ca.pem ssl-cert=/opt/mysql01/data/client-cert.pem ssl-key=/opt/mysql01/data/client-key.pem
启动mysql server
bin/mysqld_safe & 注意观察日志文件,是否添加ssl参数后报错,ssl无法启动。
验证服务器是还开启ssl
登入mysql服务器,查看have_ssl,如果为YES,恭喜你,服务器开始支持ssl连接了。 mysql> show variables like '%ssl%'; +---------------+-----------------------------------+ | Variable_name | Value | +---------------+-----------------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /opt/mysql01/data/ca.pem | | ssl_capath | | | ssl_cert | /opt/mysql01/data/server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | /opt/mysql01/data/server-key.pem | +---------------+-----------------------------------+ 9 rows in set (0.00 sec)
客户端连接
bin/mysql -uroot -h 192.168.31.84 -p 最好使用远程连接进行测试,localhost或者-S unix socket连接,这种有可能不会用ssl。 mysql> status -------------- bin/mysql Ver 14.14 Distrib 5.7.9, for Linux (x86_64) using EditLine wrapper Connection id: 10 Current database: Current user: root@192.168.31.84 SSL: Cipher in use is DHE-RSA-AES256-SHA Current pager: stdout Using outfile: '' Using delimiter: ; status中SSL中显示Cipher in use,表明当前连接使用ssl 或者查看状态Ssl_cipher也可以,Value不为空,表明客户端连接启用ssl mysql> show status like 'ssl_cipher'; +---------------+--------------------+ | Variable_name | Value | +---------------+--------------------+ | Ssl_cipher | DHE-RSA-AES256-SHA | +---------------+--------------------+ 1 row in set (0.00 sec) 如果客户不想使用ssl连接,可以在mysql连接参数中使用-ssl=0来禁用ssl连接,执行效果请自行使用status查看 bin/mysql -uroot -h 192.168.31.84 --ssl=0 -p
创建必须使用ssl登录的用户
如果服务器不强制要求用户使用ssl连接,则用户可以使用普通方式,也可以使用ssl方式连接服务器。某些安全场合,可以限制用户必须ssl登录。GRANT ALL PRIVILEGES ON *.* TO 'ssltest'@'%' IDENTIFIED BY 'foodsafe' REQUIRE SSL; FLUSH PRIVILEGES; 创建ssltest测试用户,密码为foodsafe,必须ssl登录。 测试 [root@vtfsdb1 mysql01]# bin/mysql -u ssltest -h 192.168.31.84 --ssl=0 -p Enter password: ERROR 1045 (28000): Access denied for user 'ssltest'@'192.168.31.84' (using password: YES) 如果不使用ssl登录,尽管密码正确,也会提示Access denied。
系统用户表user与ssl
系统权限表mysql.user中,表现为ssl_type有值,如果不要求则为空。 修改用户不需要ssl alter user 'ssltest'@'%' require none; mysql> select user,ssl_type,ssl_cipher from mysql.user where user='ssltest'; +---------+----------+------------+ | user | ssl_type | ssl_cipher | +---------+----------+------------+ | ssltest | | | +---------+----------+------------+ 1 row in set (0.00 sec) 修改用户需要ssl alter user 'ssltest'@'%' require ssl; mysql> select user,ssl_type,ssl_cipher from mysql.user where user='ssltest'; +---------+----------+------------+ | user | ssl_type | ssl_cipher | +---------+----------+------------+ | ssltest | ANY | | +---------+----------+------------+ 1 row in set (0.00 sec) 修改完成记得flush privileges;
其他
windows下连接测试,下次再说。说明
所有相关的目录,链接,参数,ip等请根据实际情况自行调整。相关文章推荐
- 安装MySQL配置时报错的处理方法
- MySQL是否在扫描额外的记录
- MySQL常用的操作整理
- 21分钟 MySQL 入门教程
- 如何增mysql innodb_data 文件的空间
- mac osx install mysql
- solr5.3.1从mysql导入索引
- mysql innodb ibdata 数据文件误删除恢复过程
- 10款最好用的MySQL数据库客户端图形界面管理工具
- 数据库使用总结 Sql sever ,mysql,sqlite
- 记一次MySQL手工注入案例
- mysql-5.7新版本尝鲜
- 命令行登录远程Mysql
- Mysql查询缓存碎片、缓存命中率及Nagios监控
- mysql数据库常用命令学习
- mysql中文乱码
- Ubuntu更改MySQL字符集utf8,以支持中文
- mysql之完全卸载
- MySQL递归查询树状表的子节点、父节点
- mysql之存储引擎