MySQL中的SSL
以上的帐户安全只是以普通的Socket进行数据传输的,这样非常不安全。因此,MySQL在4.1版以后提供了对SSL(Secure Scokets Layer)的支持。MySQL使用的是免费的OpenSSL库。
由于MySQL的Linux版本一般都是随Linux本身一起发布,因此,它们默认时都不使用SSL进行传输数据。如果要打开SSL功能,需要对hava_openssl变量进行设置:
MySQL的Windows版本已经将OpenSSL加入了。也面的命令是查看你的MySQL是否打开了SSL功能。
SHOW VARIABLES LIKE 'have_openssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | NO |
+---------------+-------+
1 row in set (0.00 sec)
如果返回的是NO,那么说明你需要将OpenSSL编译进自己的MySQL
在有时你可能需要将用户名和密码进行加密传输。在这时可以使用下面GRANT命令:
还可以通过 REQUIRE x509 选项进行SSL传输:
你还可以使用REQUIRE SUBJECT来指定一个特定的客户端证书来访问数据库。
也许你并不关心使用的是什么客户许可,而仅仅关心的是你的证书。那么你可以使用REQUIRE ISSUER来实现:
SSL还可以直接通过密码进行加密。可以使用REQUIRE CIPHER设置密码。
上面使用了GRANT命令对用户权限进行设置。而这些信息都是保存在授权表中,这些表是安全系统的心脏。在这些表中保存了每一个用户和客户机所具有的权限。如果正确地操作这些表,将会对数据库的安全起到积极的作用,而如果使用不慎,将是非常危险的。
下面让我们来看看MySQL中的最要的5个授权表。
user
用户表保存了用户的权限和被加密的密码。这个表负责确定哪些用户和客户机可以连接到服务器上。
host
这个表为每一个客户机分配权限,它并不考虑用户的权限。MySQL在确定是否接收还是拒绝一个连接时,首先考虑的是user表。而使用GRANT或REVOKE命令并不影响host表,我们可以通过手工方式修改这个表中的内容。
db
db表保存了数据库层的权限信息。
tables_priv
这个表存储了表的权限信息。
columns_priv
这个表保存了单独列的权限信息。通过这个表,可以将操作某一列的权限授予一个用户。专题:http://www.qqread.com/mysql/z281125.html
更多内容请看数字化校园网解决方案、路由安全配置专题、数据库处理专题专题,或进入讨论组讨论。
以上的帐户安全只是以普通的Socket进行数据传输的,这样非常不安全。因此,MySQL在4.1版以后提供了对SSL(Secure Scokets Layer)的支持。MySQL使用的是免费的OpenSSL库。
由于MySQL的Linux版本一般都是随Linux本身一起发布,因此,它们默认时都不使用SSL进行传输数据。如果要打开SSL功能,需要对hava_openssl变量进行设置:
MySQL的Windows版本已经将OpenSSL加入了。也面的命令是查看你的MySQL是否打开了SSL功能。
SHOW VARIABLES LIKE 'have_openssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | NO |
+---------------+-------+
1 row in set (0.00 sec)
如果返回的是NO,那么说明你需要将OpenSSL编译进自己的MySQL
在有时你可能需要将用户名和密码进行加密传输。在这时可以使用下面GRANT命令:
| GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "password!" REQUIRE SSL; |
还可以通过 REQUIRE x509 选项进行SSL传输:
| GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "password!" REQUIRE x509; |
你还可以使用REQUIRE SUBJECT来指定一个特定的客户端证书来访问数据库。
| GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "password!" REQUIRE SUBJECT "/C=US/ST=New York/L=Albany/O=Widgets Inc./CN=client-ray. example.com/emailAddress=raymond@example.com"; |
也许你并不关心使用的是什么客户许可,而仅仅关心的是你的证书。那么你可以使用REQUIRE ISSUER来实现:
| GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "password!" REQUIRE ISSUER "/C=US/ST=New+20York/L=Albany/O=Widgets Inc./CN=cacert.example. com/emailAddress=admin@example.com"; |
SSL还可以直接通过密码进行加密。可以使用REQUIRE CIPHER设置密码。
| GRANT ALL PRIVILEGES ON ssl_only_db.* to 'abc'@'%' IDENTIFIED BY "password!" REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA"; |
上面使用了GRANT命令对用户权限进行设置。而这些信息都是保存在授权表中,这些表是安全系统的心脏。在这些表中保存了每一个用户和客户机所具有的权限。如果正确地操作这些表,将会对数据库的安全起到积极的作用,而如果使用不慎,将是非常危险的。
下面让我们来看看MySQL中的最要的5个授权表。
user
用户表保存了用户的权限和被加密的密码。这个表负责确定哪些用户和客户机可以连接到服务器上。
host
这个表为每一个客户机分配权限,它并不考虑用户的权限。MySQL在确定是否接收还是拒绝一个连接时,首先考虑的是user表。而使用GRANT或REVOKE命令并不影响host表,我们可以通过手工方式修改这个表中的内容。
db
db表保存了数据库层的权限信息。
tables_priv
这个表存储了表的权限信息。
columns_priv
这个表保存了单独列的权限信息。通过这个表,可以将操作某一列的权限授予一个用户。专题:http://www.qqread.com/mysql/z281125.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 数字化校园网解决方案 (5616篇文章)
- 路由安全配置专题 (11650篇文章)
- 数据库处理专题 (8526篇文章)
- 中小企业防病毒解决方案 (5982篇文章)
- 电子邮件安全 (8226篇文章)
- SSH安全技术 (8063篇文章)
- 城域网专题 (7762篇文章)
- 数据库安全技术专题 (12951篇文章)
- FreeBSD系统安全管理 (8637篇文章)
- 局域网安全管理 (9364篇文章)
- 触发器概述 (522次浏览)
- mysql数据库下损坏数据的恢复操作其过程总结 (348次浏览)
- MySQL企业数据库前景分析 (171次浏览)
- 导入导出大量数据程序实现方法 (143次浏览)
- my.cnf (143次浏览)
- 详细讲解MySQL 4.1数据如何转换 (138次浏览)
- linux mysql jdbc 权限问题 (138次浏览)
- MySQL 5.0 新特性教程 存储 (115次浏览)
- 使用MYSQL索引(1) (110次浏览)
- 启动多个mysqld-HOWTO (102次浏览)



