暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
MySQL数据库安全解决方案.doc
63
4页
0次
2023-05-29
5墨值下载
随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几
台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,但也给不法分子造
成了可乘之机。由于数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通
过非常手段进入数据库。由于以上原因,数据库安全就显得十分重要。因此,本文就以上
问题讨论了
MySQL
数据库在网络安全方面的一些功能。
帐户安全
帐户是
MySQL
最简单的安全措施。每一帐户都由用户名、密码以及位置(一般由服务器
名、
IP
或通配符)组成。如用户
john
server1
进行登录可能和
john
server2
登录
的权限不同。
MySQL
的用户结构是用户名
/
密码
/
位置。这其中并不包括数据库名。下面的两条命令为
database1
database2
设置了
SELECT
用户权限。
GRANT SELECT ON database1.* to ‘abc’@‘server1’ IDENTIFIED BY ‘password1’;
GRANT SELECT ON database2.* to ‘abc’@‘server1’ IDENTIFIED BY ‘password2’;
第一条命令设置了用户
abc
在连接数据库
database1
时使用
password1
。第二条命令设
置了用户
abc
在连接数据库
database2
时使用
password2
。因此,用户
abc
在连接数
据库
database1
database2
的密码是不一样的。
上面的设置是非常有用的。如果你只想让用户对一个数据库进行有限的访问,而对其它数
据库不能访问,这样可以对同一个用户设置不同的密码。如果不这样做,当用户发现这个
用户名可以访问其它数据库时,那将会造成麻烦。
MySQL
使用了很多授权表来跟踪用户和这些用户的不同权限。这些表就是在
mysql
数据
库中的
MyISAM
表。将这些安全信息保存在
MySQL
中是非常有意义的。因此,我们可以
使用标准的
SQL
来设置不同的权限。
一般在
MySQL
数据库中可以使用
3
种不同类型的安全检查:
·
登录验证
也就是最常用的用户名和密码验证。一但你输入了正确的用户名和密码,这个验证就可通
过。
·
授权
在登录成功后,就要求对这个用户设置它的具体权限。如是否可以删除数据库中的表等。
·
访问控制
这个安全类型更具体。它涉及到这个用户可以对数据表进行什么样的操作,如是否可以编
辑数据库,是否可以查询数据等等。
访问控制由一些特权组成,这些特权涉及到所何使用和操作
MySQL
中的数据。它们都是
布尔型,即要么允许,要么不允许。下面是这些特权的列表:
·SELECT
SELECT
是设定用户是否可以使用
SELECT
来查询数据。如果用户没有这个特权,那么就
只能执行一些简单的
SELECT
命令,如计算表达式(
SELECT 1+2
),或是日期转换
SELECT Unix_TIMESTAMP
NOW
( )))等。
·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
这个权限允许用户终止任何查询(这些查询可能并不是这个用户执行的)。
以上几种权限是非常危险的,在给用户授权限时要非常慎。
NextPage
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
命令:
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
定一个特定的客户来访问数据库。
of 4
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜