计算机四级考试辅导:MySQL数据库中关于网络安全的解决方案
发布时间:2010/3/13 10:36:05 来源:城市学习网 编辑:MOON
随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,但也给不法分子造成了可乘之机。由于数据都是通过网络传输的 ...
随着网络的普及,基于网络的应用也越来越多。网络就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,但也给不法分子造成了可乘之机。由于数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通过非常手段进入数据库。由于以上原因,数据库安全就显得十分重要。因此,本文就以上问题讨论了MySQL数据库在网络安全方面的一些功能。
账户安全
账户是MySQL最简单的安全措施。每一账户都由用户名、密码以及位置,或是日期转换(SELECT Unix_TIMESTAMP))等。
INSERT
UPDATE
INDEX
INDEX决定用户是否可以对表的索引进行设置。如果用户没有这个权限,那么将无法设置表中的索引。
ALTER
CREATE
GRANT
如果一个用户拥有这个GRANT权限,那么他就可以将自己的权限授给别的用户。也就是说,这个用户可以和其它用户共享自己的权限。
REFERENCES
有了REFERENCES权限,用户就可以将其它表的一个字段作为某一个表的外键约束。
除了以上的权限外,MySQL还有一些权限可以对整个MySQL进行操作。
Reload
这个权限可以使用户有权执行各种FLUSH命令,如FLUSH TABLES, FLUSH STATUS等。
Shutdown
这个权限允许用户关闭MySQL
Process
通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。这些命令可以查看MySQL的处理进程,可以通过这种方式查看SQL执行的细节。
File
这个权限决定用户是否可以执行LOAD DATA INFILE命令。给用户这个权限要慎重,因为有这个权限的用户可以将任意的文件装载到表中,这样对MySQL是十分危险的。
Super
这个权限允许用户终止任何查询(这些查询可能并不是这个用户执行的)。
以上几种权限是非常危险的,在给用户授权限时要非常谨慎。
MySQL中的SSL
以上的账户安全只是以普通的Socket进行数据传输的,这样非常不安全。因此,MySQL在4.1版以后提供了对SSL(Secure Scokets Layer)的支持。MySQL使用的是免费的OpenSSL库。
由于MySQL的版本一般都是随本身一起发布,因此,它们默认时都不使用SSL进行传输数据。如果要打开SSL功能,需要对hava_openssl变量进行设置:
MySQL的Windows版本已经将OpenSSL加入了。也面的命令是查看你的MySQL是否打开了SSL功能。
SHOW VARIABLES LIKE ‘have_openssl‘;
+---------------+-------+
Variable_name Value
+---------------+-------+
have_openssl NO
+---------------+-------+
1 row in set
如果返回的是NO,那么说明你需要将OpenSSL编译进自己的MySQL。
在有时你可能需要将用户名和密码进行加密传输。在这时可以使用下面GRANT命令:
GRANT ALL PRIVILEGES ON ssl_only_db. to IDENTIFIED BY "password!" REQUIRE SSL;
还可以通过 REQUIRE x509 选项进行SSL传输:
GRANT ALL PRIVILEGES ON ssl_only_db. to IDENTIFIED BY "password!" REQUIRE x509;
你还可以使用REQUIRE SUBJECT来指定一个特定的客户端证书来访问数据库。