MySQL:SSL远程登录

环境:linux mint 15

安装openssl:
sudo apt-get install openssl
查看mysql的ssl是否开启了(在mysql 命令行中):
show variables like '%ssl%';
若没开启则`have_openssl`和`have_ssl`选项的值为DISABLED。

生成证书(在mysql server主机下):
建议在/etc/mysql建立目录certs:
# cd /etc/mysql/
# mkdir certs
# cd certs
# openssl genrsa 2048 > ca-key.pem
# openssl req -new -x509 -nodes -days 1095 -key ca-key.pem -out ca-cert.pem
# openssl req -newkey rsa:2048 -days 1095 -nodes -keyout server-key.pem -out server-req.pem
# openssl rsa -in server-key.pem -out server-key.pem
# openssl x509 -req -in server-req.pem -days 1095 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
注意,如果`sudo openssl genrsa 2048 > ca-key.pem`的话会提示权限不够。
之后修改mysql服务器主机下的配置文件:
# vim /etc/mysql/my.cnf
在`[mysqld]`后添加:
ssl
ssl-cipher=DHE-RSA-AES256-SHA
ssl-ca=/etc/mysql/certs/ca-cert.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem
重启mysql,进入mysql命令行`show variables like '%ssl%';`看到:
+---------------+----------------------------------+
| Variable_name | Value                            |
+---------------+----------------------------------+
| have_openssl  | YES                              |
| have_ssl      | YES                              |
| ssl_ca        | /etc/mysql/certs/ca-cert.pem     |
| ssl_capath    |                                  |
| ssl_cert      | /etc/mysql/certs/server-cert.pem |
| ssl_cipher    | DHE-RSA-AES256-SHA               |
| ssl_key       | /etc/mysql/certs/server-key.pem  |
+---------------+----------------------------------+

配置 mysql client
将ca-cert.pem拷贝到mysql client主机下的/etc/mysql/certs目录下,打开client下的my.cnf,在`[client]`后添加:
ssl
ssl-cipher=DHE-RSA-AES256-SHA
ssl-ca=/etc/mysql/certs/ca-cert.pem
重启client下的mysql。
开始远程登录吧:
在server 主机上为mysql建立一个新的用户:
GRANT ALL ON *.* TO 'ssl-user'@'%' identified by '123456'  REQUIRE SSL;
flush privileges;
然后在client登录:
mysql -h <server-ip> -u ssl-user -p
mysql> \s
mysql> status
\s和status作用相同,我们应该会看到:
SSL:  Cipher in use is DHE-RSA-AES256-SHA

如果client的my.cnf没有配置好,是无法使用ssl-user用户登录server的。

使用navicat
常规方法就不说了。
1、使用SSH


注意在“常规”选项卡中,主机名或者ip地址是localhost,连接名自定义,用户名和密码是mysql server的user和对应的密码。
在“SSH”选项卡中,主机名是mysql server的ip,用户是mysql server所在主机的用户名。mysql server所在主机必须开启ssh服务。
2、使用SSL

“常规”选项卡中的ip要改为server的ip,用户名本身应有“REQUIRE SSL”属性。
在“SSL”选项卡中,选中“使用SSL”,别忘了取消选中SSH。这时候可以正常连接,但是若选中“使用验证”并添加相应ca,死活没连上(不做讨论)。
3、使用HTTP


需要将navicat目录下的ntunnel_mysql.php拷贝到mysql server主机上的支持php的网站目录中(如/var/www)。通道地址即为该php文件的网络url。用户和密码是数据库的用户及其密码。

一些资料:
[Simplified MySQL SSL connections](http://www.mysqlfanboy.com/2011/11/simplified-mysql-ssl-connections/)
[6.3.6. Using SSL for Secure Connections](http://dev.mysql.com/doc/refman/5.0/en/ssl-connections.html)
[6.3.7. Connecting to MySQL Remotely from Windows with SSH](http://dev.mysql.com/doc/refman/5.0/en/windows-and-ssh.html)

转载于:https://my.oschina.net/letiantian/blog/145344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值