mysql 建立加密连接

加密连接可提高数据的安全性,但会降低性能。要进行加密连接,必须满足以下要求:

  • user权限表里要有相关的SSL数据列。如果安装的MySQL服务器是4.0.0版的,user权限表已包含相关的SSL数据列,否则,我们也可用mysql_fix_privilege_tables脚本升级权限表。
  • 服务器和客户程序都已经编译有OpenSSL支持。首先要安装openssl,在编译时MySQL服务器时加--with-vio和--with-openssl选项加上openssl支持。可用以下语句查询服务器是否支持SSL:
    mysql> show variables like ‘have_openssl‘;
    
  • 在启动服务器时用有关选项指明证书文件和密钥文件的位置。在建立加密连接前,要准备三个文件,一个CA证书,是由可信赖第三方出具的证书,用来验证客户端和服务器端提供的证书。CA证书可向商业机构购买,也可自行生成。第二个文件是证书文件,用于在连接时向对方证明自已身份的文件。第三个文件是密钥文件,用来对在加密连接上传输数据的加密和解密。MySQL服务器端的证书文件和密钥文件必须首先安装,在sampdb发行版本的ssl目录里有几个供参考的样本文件:ca-cert.pem(CA证书),server-cert.pem(服务器证书),server-key.pem(服务器公共密钥)。把这几个文件拷贝到服务器的数据目录中,再在选项文件里加上以下内容:
    [mysqld]
    ssl-ca=/usr/local/mysql/data/ca-cert.pem
    ssl-cert=/usr/local/mysql/data/server-cert.pem
    ssl-key=/usr/local/mysql/data/server-key.pem
    

    重启服务器,使配置生效。

  • 要想让某个客户程序建立加密连接,必须在调用这个客户程序时用有关选项告诉它在哪里能找到其证书文件和密钥文件。在sampdb发行版的ssl目录中提供了client-cert.pem(客户证书文件),client-key.pem(客户密钥文件),CA证书与服务器使用同样的ca-cert.pem。把他们拷贝到个人目录下,并在.my.cnf选项文件中指出文件位置,如:
    [mysql]
    ssl-ca=/home/mysql/ca-cert.pem
    ssl-cert=/home/mysql/client-cert.pem
    ssl-key=/home/mysql/client-key.pem
    

    配置完成后,调用mysql程序运行\s或SHOW STATUS LIKE ‘SSL%‘命令,如果看到SSL:的信息行就说明是加密连接了。如果把SSL相关的配置写进选项文件,则默认是加密连接的。也可用mysql程序的--skip-ssl选项取消加密连接。如果用命令行方式启用加密连接可以这样写:

    % mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
    

可用GRANT语句的REQUIRE SSL选项来强制用户使用加密连接。

使用sampdb发行版的证书可以建立一个加密连接,但由于该文件已公开,所以安全性不好,我们可以在测试成功后自行建立证书或购买商业证书,以提高安全性。如何自行建立SSL证书的文档在sampdb发行版的ssl/README文件里有说明

时间: 2024-10-08 21:36:47

mysql 建立加密连接的相关文章

MySQL建立SSL连接警告

WARN: 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 e

有关PHP不利于和MYSQL建立长连接的原因

http://www.tuicool.com/articles/iUrERn2 http://rango.swoole.com/archives/265

mysql 加密连接SSL

1.SSL含义 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与SSL在传输层对网络连接进行加密. 2.mysql5.7SSL配置和使用 注意:这种方法只使用5.7,mysql5.6也支持ssl加密连接,但是配置过程比较复杂,需要用到openssl命令来创建各类共秘钥. 我的测试环境默认没有启用SSL,状态为disabled mysql> sho

MySQL的SSL加密连接与性能开销

前言 在生产环境下,安全总是无法忽视的问题,数据库安全则是重中之重,因为所有的数据都存放在数据库中.MySQL在5.7版本之前对于安全问题的确考虑并不充分,导致存在比较大的隐患,比如下面的这些问题,可能有些小伙伴知道,有些却还不知道: MySQL数据库默认安装的用户密码为空 所有用户拥有对于MySQL默认安装test数据库的访问权限(即使没有授予权限) 好在Oracle官方也已经意识到安全的重要性,MySQL 5.7开始安装完成后的root用户的密码不再是空,而是在安装时随机产生一个密码,这也导

PHP与MySql建立连接

通过PHP脚本建立与一个MySQL数据库的连接时,数据库服务器的主机位置(在本地就是localhost).用户名(root).密码.和数据库名是必须的.一旦建立连接,脚本就能执行SQL命令.二者联系的一系列步骤主要为四步: 1.用mysqli_connect()连接数据库: 2.组装SQL查询串,放入一个变量,该变量将作为下一步的必须参数: 3.用mysqli_query()执行查询, 4.用mysqli_close()关闭连接. 下面深入分析 一. mysqli_connect():建立连接,

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

由于项目中必须得用JDK6来作为Java环境,于是连接SQLServer时出现了com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接.错误:"Java.lang.RuntimeException: Could not generate DH keypair".这样的错误. 这个在JDK7中是修复了的,所以如果项目允许的话就换成JDK7吧,但有些只能用JDK6

MySQL建立连接的过程

数据库连接的一些知识: import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.Statement ; public class InsertDemo01{     // 定义MySQL的数据库驱动程序     public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;     // 定义MySQL数据库的连接地址  

在libuv中使用openssl建立ssl连接

在libuv中使用openssl建立ssl连接 @(blogs) 使用openssl进行加密通信时,通常是先建立socket连接,然后使用SSL_XXX系列函数在普通socket之上建立安全连接,然后发送和接收数据.openssl的这些函数可以支持底层的socket是非阻塞模式的.但当将openssl和libuv进行结合时,会遇到一些问题: 1. openssl在进行数据读写之前,需要进行若干次"握手"."握手"中会有若干次的数据读写.这个在普通的socket连接中

MySQL 5.7--------SSL连接最佳实战

                                                                                         MySQL 5.7--------SSL连接最佳实战 1. 背景 * 在生产环境下,安全总是无法忽视的问题,数据库安全则是重中之重,因为所有的数据都存放在数据库中 * 当使用非加密方式连接MySQL数据库时,在网络中传输的所有信息都是明文的,可以被网络中所有人截取,敏感信息可能被泄露.在传送敏感信息(如密码)时,可以采用