您的位置:首页 > 数据库 > MySQL

MySQL:SSL远程登录

2015-06-04 10:21 561 查看
原文地址:http://www.2cto.com/database/201310/252451.html

MySQL:SSL远程登录

环境:linux mint 15

安装openssl:

1

sudo apt-get install openssl

查看mysql的ssl是否开启了(在mysql 命令行中):

1

show variables like '%ssl%';

若没开启则`have_openssl`和`have_ssl`选项的值为DISABLED。

生成证书(在mysql server主机下):

建议在/etc/mysql建立目录certs:

1

# cd /etc/mysql/

2

# mkdir certs

3

# cd certs

4

# openssl genrsa 2048 > ca-key.pem

5

# openssl req -new -x509 -nodes -days 1095 -key ca-key.pem -out ca-cert.pem

6

# openssl req -newkey rsa:2048 -days 1095 -nodes -keyout server-key.pem -out server-req.pem

7

# openssl rsa -in server-key.pem -out server-key.pem

8

# 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服务器主机下的配置文件:

1

# vim /etc/mysql/my.cnf

在`[mysqld]`后添加:

1

ssl

2

ssl-cipher=DHE-RSA-AES256-SHA

3

ssl-ca=/etc/mysql/certs/ca-cert.pem

4

ssl-cert=/etc/mysql/certs/server-cert.pem

5

ssl-key=/etc/mysql/certs/server-key.pem

重启mysql,进入mysql命令行`show variables like '%ssl%';`看到:

01

+---------------+----------------------------------+

02

| Variable_name | Value |

03

+---------------+----------------------------------+

04

| have_openssl | YES |

05

| have_ssl | YES |

06

| ssl_ca | /etc/mysql/certs/ca-cert.pem |

07

| ssl_capath | |

08

| ssl_cert | /etc/mysql/certs/server-cert.pem |

09

| ssl_cipher | DHE-RSA-AES256-SHA |

10

| ssl_key | /etc/mysql/certs/server-key.pem |

11

+---------------+----------------------------------+

配置 mysql client :

将ca-cert.pem拷贝到mysql client主机下的/etc/mysql/certs目录下,打开client下的my.cnf,在`[client]`后添加:

1

ssl

2

ssl-cipher=DHE-RSA-AES256-SHA

3

ssl-ca=/etc/mysql/certs/ca-cert.pem

重启client下的mysql。

开始远程登录吧:

在server 主机上为mysql建立一个新的用户:

1

GRANT ALL ON *.* TO 'ssl-user'@'%' identified by '123456' REQUIRE SSL;

2

flush privileges;

然后在client登录:

1

mysql -h <server-ip> -u ssl-user -p

2

mysql> \s

3

mysql> status

\s和status作用相同,我们应该会看到:

1

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。用户和密码是数据库的用户及其密码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: