成都创新互联网站制作重庆分公司

mysql怎么设ssl mysql怎么设置密码

如何为MySQL服务器和客户机启用SSL

创建Server SSL证书和私钥

10年积累的网站设计制作、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先制作网站后付款的网站建设流程,更有米易免费网站建设让你可以放心的选择与我们合作。

首先,创建一个临时的工作目录,我们将把私钥和证书文件放在该目录下。

$ sudo mkdir ~/cert

$ cd ~/cert

确保OpenSSL已安装在运行MySQL服务器的系统上。通常,所有Linux发行版在默认情况下都安装了OpenSSL。想检查一下OpenSSL有没有安装,不妨使用下面这个命令。

$ openssl version

OpenSSL 1.0.1f 6 Jan 2014

现在,继续创建CA私钥和证书。下面这些命令将创建ca-key.pem和ca-cert.pem。

$ openssl genrsa 2048 ca-key.pem

$ openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem ca-cert.pem

第二个命令会询问你几个问题。你在这些字段里填入什么并不重要。只管填好那些字段。

下一步是为服务器创建私钥。

$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem server-req.pem

这个命令会再次询问几个问题,你可以填写上一步中提供的相同答案。

下一步,使用下面这个命令,将服务器的私钥导出成RSA类型的密钥。

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

最后,使用CA证书,创建服务器证书。

$ openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 server-cert.pem

配置MySQL服务器上的SSL

完成上述过程后,我们应该有了CA证书、服务器的私钥及其证书。下一步就是配置MySQL服务器,以

mysql 两种连接方式和SSL连接、x509认证

mysql连接可分为socket连接和TCP|IP连接两种。

[root@localhost bin]# mysql -uroot -p123456 -S/tmp/mysql.sock

-S/tmp/mysql.sock可以省略,因为默认参数如下:

假如sock文件另有其它,那么就后面不能省略,需要指定下。

mysql -h127.0.0.1 -P3306 -uroot -p123456

那么问题来了,如何知道当前连接的连接方式?

查看当前连接方式,使用\s 或者status命令

Connection: Localhost via UNIX socket 表示使用 socket 进行本地的连接

SSL: Not in use 没有使用SSL

Connection: 127.0.0.1 via TCP/IP 使用TCP/IP 协议进行远程连接

SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256 使用了SSL加密

mysql5.7默认是使用SSL的方式来进行通讯的。

/s输出SSL: Not in use,说明当前没有使用SSL连接。

再看下error.log有一个waning:failed to set up SSL because of the following SSL liberary error:SSL context is not usable withut certificate and private key。公密钥文件不存在,所以无法启用SSL的连接方式。

1、进入bin目录执行命令: mysql_ssl_rsa_setup 在/data 根目录 生成相关的*.pem 密钥文件。

2、对新生成到pem文件授权chown mysql:mysql *.pem

3、 /etc/init.d/mysqld restart 重启mysql

4、进入命令客户端执行\s

使用IP/TCP远程连接时,\s输出 SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256。说明已经用上SSL加密。

使用socket进行本地连接,就不会使用SSL加密。\s输出SSL: Not in use;

因为SSL开启可能有性能影响。如果不希望使用ssl加密登录连接,那么可以使用下面命令进行禁用:mysql -h127.0.0.1 -uroot -p123456 --ssl-mode=DISABLED

强制一个用户使用ssl

之后david用户就必须使用ssl登录了,否则报错如下:

取消一个用户强制使用ssl

x509认证在开启SSL的基础下,还强制指定用户必须使用client-cert.pem和client-key.pem证书、密钥文件来登录,否则登录不了。x509是mysql最高等级的认证机制。

之前已经在data根目录生成了8个 *.pem文件

把其中client-cert.pem和client-key.pem导出

如下,再使用之前的命令登录。发现登录不了了。

此时想要登录必须在客户端指定SSL CERT File和SSL Key File 如下在navicat中

在mysql workbench中

MySQL启用SSL连接

说明:pem配置文件中在test目录下有,但是最好自己生成

/home/mysql/mysql-5.5.35-linux2.6-x86_64/mysql-test/std_data

/etc/init.d/mysqld restart

SHOW VARIABLES LIKE 'have_%ssl';

SHOW VARIABLES LIKE '%ssl%';

如果为yes,表示服务端已经开启SSL

查看服务ssl等状态

SHOW STATUS LIKE 'Ssl_cipher';

STATUS或者\s

SSL: Cipher in use is DHE-RSA-AES256-SHA表示客户端已经 使用SSL连接

客户端无SSL登陆:

客户端开启SSL登陆:

GRANT ALL PRIVILEGES ON . TO 'ssluser'@'%' IDENTIFIED BY 'zdh1234' REQUIRE SSL;

本机登陆需要单独新增localhost

GRANT ALL PRIVILEGES ON . TO 'ssluser'@'localhost' IDENTIFIED BY 'zdh1234' REQUIRE SSL;

查看用户:

select host,user,password from mysql.user;

修改密码,需要重启mysql:

客户端无SSL登陆:

返回错误:ERROR 1045 (28000): Access denied for user 'ssluser'@'localhost' (using password: YES)

客户端开启SSL登陆:

如果不填密码或者--ssl-ca都无法登陆

由于创建server使用的服务器域名为zdh-11

校验失败,无法登陆:

校验成功,可以登陆:

如何解决MySQL在高版本需要指明是否进行SSL连接问题

 Java使用mysql-jdbc连接MySQL出现如下警告:

Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

在mysql连接字符串url中加入ssl=true或者false即可,如下所示。

url=jdbc:mysql://127.0.0.1:3306/framework?characterEncoding=utf8useSSL=true


文章名称:mysql怎么设ssl mysql怎么设置密码
本文地址:http://cxhlcq.com/article/ddehges.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部