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-09-19 09:09:30

MYSQL教程:建立加密连接的相关文章

mysql数据库-远程连接服务器上,在自己的帐号下建立java连接mysql的程序,但是一直连接不上

问题描述 远程连接服务器上,在自己的帐号下建立java连接mysql的程序,但是一直连接不上 我是通过远程连接在实验室机房的一台机器(linux操作系统)上,然后在该机器上建立JAVA程序,其中涉及到连接mysql数据库的操作,但是在获取连接时一直提示"Communications link failure",涉及的代码为:connect=DriverManager.getConnection(""jdbc:mysql://localhost:3306/pyq_te

基础教程:TCP连接的建立和释放

TCP首部格式 先看TCP报文段的格式,如下; TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项.因此TCP报文段的最小长度为20个字节. 首部固定部分的各字段的意义如下: 1.源端口和目的端口:加上IP首部的源IP地址和目的IP地址,确定唯一的一个TCP连接.另外通过目的端口来决定TCP将数据报交付于那个应用程序,从而实现TCP的分用功能. 2.序号:占4个字节,序号的范围为[0,4284967296].由于TCP是面向字节流的,在一个TCP连接中传送的字节流中的每

MySQL教程

    现在我们已经具备了所需的所有基础知识:可以将MySQL投入工作了!本节提供一个教程,帮助熟悉MySQL.在完成这个教程时,将创建一个样例数据库和这个数据库中的表,然后增加.检索.删除和修改信息与数据库进行交互.此外,在操作这个样例数据库的过程中,将能学到下列东西:    ■ 如何利用mysql客户机程序与MySQL通信.    ■ SQL 语言的基本语句.(如果您曾经使用过其他RDBMS,从而熟悉SQL,那么浏览一下这个教程,看看SQL 的MySQL版与您熟悉的版本有何差别也是很好的.)

在树莓派上建立VPN(二):建立加密客户端

在树莓派上建立VPN(二):建立加密客户端 你已经成功搭建了一个工作中的VPN服务器! 现在该干什么了? 欢迎来到ReadWrite的树莓派VPN搭建教程的第二部分! 到现在为止,显然我们已经搞定了将你的树莓派变成了一个虚拟私人网络这个工作.随着未来安全漏洞对互联网生活的妥协,你会觉得在你的身边拥有一个安全的服务器越来越有必要了.只有这样,你才可以不用担心有人在你的电脑和互联网之间传输信息时被拦截,可以自由自在地写邮件以及传输数据了. 如果你看过此教程的第一部分,你应该已经在你的树莓派上配置好了

MYSQL教程:MySQL服务器权限表

MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化.这些权限表分别user,db,table_priv,columns_priv和host.下面分别介绍一下这些表的结构和内容: user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的. db权限表:记录各个帐号在各个数据库上的操作权限. table_priv权限表:记录数据表级的操作权限. columns_priv权限表:记录数据列级的操作权限. ho

Mysql下建立用户授权权限例子

用户授权在mysql中使用grant命令就可以了,我相信各位都会有了解过了,下面小编为各位介绍一个Mysql下建立用户授权权限例子,希望本文章对各位有帮助.     建立用户,授权数据库: mysql> create user 'byrd'@'localhost' identified by 'admin123';    #建立主机为localhost,密码为admin123的用户byrd Query OK, 0 rows affected (0.05 sec) mysql> show gra

mysql教程删除数据sql语句用法

  mysql教程删除数据sql语句用法 DELETE FROM 语句用于从数据库表中删除记录. 语法 DELETE FROM table_name WHERE column_name = some_value 注释:SQL 对大小写不敏感.DELETE FROM 与 delete from 等效. 为了让 PHP 执行上面的语句,我们必须使用 mysql_query( 函数.该函数用于向 SQL 连接发送查询和命令. 例子 稍早时,我们在本教程中创建了一个名为 "Person" 的表

详解XP系统建立VPN连接的途径

  详解XP系统建立VPN连接的途径          VPN(Virtual Private Network),中文译名为虚拟专用网络,利用VPN技术,用户可以通过Internet远程接入某个内部网络(例如某个企业的局域网),通过身份验证之后,即使事实上该用户身处地球的另一端,也可以像访问本地网资源一样访问这个网络.同时,由于它采用了特殊的加密技术,因此能保证内部网中数据不被Internet上的其它用户窃取. VPN使用一项称为隧道的技术,可以通过Internet将数据安全地传输给您工作场所网

mysql-MySQL插入数据缓慢,建立session连接需要很长时间是怎么回事?

问题描述 MySQL插入数据缓慢,建立session连接需要很长时间是怎么回事? 为什么在执行Mysql插入的时候会等待20-30秒,就是建立SessionFactory的这个过程. program strt: 2013-09-22 16:22:40.413 complete build SessionFactory: 2013-09-22 16:23:10.299 open session begin transaction time: 2013-09-22 16:23:10.322 这是我在