首页 > 数据库 > MySQL > 正文

MySQL数据库的安全问题详解

2024-07-09 22:43:43
字体:
来源:转载
供稿:网友

随着网络的发展,MySQL数据库的安全也成为互联网的一大安全之一,主要体现在2大方面:一、内部安全性-保证数据目录访问的安全;二、外部安全性-保证网络访问的安全。下面就一一介绍:
 
  一般在MySQL数据库中可以使用3种不同类型的安全检查:
  ・登录验证
  也就是最常用的用户名和密码验证。一但你输入了正确的用户名和密码,这个验证就可通过。
  ・授权
  在登录成功后,就要求对这个用户设置它的具体权限。如是否可以删除数据库中的表等。
  ・访问控制
  这个安全类型更具体。它涉及到这个用户可以对数据表进行什么样的操作,如是否可以编辑数据库,是否可以查询数据等等。
  访问控制由一些特权组成,这些特权涉及到所何使用和操作MySQL中的数据。它们都是布尔型,即要么允许,要么不允许。下面是这些特权的列表:
  ・SELECT
  SELECT是设定用户是否可以使用SELECT来查询数据。如果用户没有这个特权,那么就只能执行一些简单的SELECT命令,如计算表达式(SELECT 1+2),或是日期转换(SELECTUnix_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
  这个权限允许用户终止任何查询(这些查询可能并不是这个用户执行的)。
  以上几种权限是非常危险的,在给用户授权限时要非常谨慎。

  上面使用了GRANT命令对用户权限进行设置。而这些信息都是保存在授权表中,这些表是安全系统的心脏。在这些表中保存了每一个用户和客户机所具有的权限。如果正确地操作这些表,将会对数据库的安全起到积极的作用,而如果使用不慎,将是非常危险的。
  下面让我们来看看MySQL中的最要的5个授权表。
  user
  用户表保存了用户的权限和被加密的密码。这个表负责确定哪些用户和客户机可以连接到服务器上。
  host
  这个表为每一个客户机分配权限,它并不考虑用户的权限。MySQL在确定是否接收还是拒绝一个连接时,首先考虑的是user表。而使用GRANT或REVOKE命令并不影响host表,我们可以通过手工方式修改这个表中的内容。
  db
  db表保存了数据库层的权限信息。
  tables_priv
  这个表存储了表的权限信息。
  columns_priv
  这个表保存了单独列的权限信息。通过这个表,可以将操作某一列的权限授予一个用户。 ・Process
  通过这个权限,用户可以执行SHOW PROCESSLIST和KILL命令。这些命令可以查看MySQL的处理进程,可以通过这种方式查看SQL执行的细节。
  ・File
  这个权限决定用户是否可以执行LOAD DATA INFILE命令。给用户这个权限要慎重,因为有这个权限的用户可以将任意的文件装载到表中,这样对MySQL是十分危险的。
  ・Super
  这个权限允许用户终止任何查询(这些查询可能并不是这个用户执行的)。
  以上几种权限是非常危险的,在给用户授权限时要非常谨慎。


总之,由于MySQL数据库数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通过非常手段进入数据库。由于以上原因,MySQL数据库安全就显得十分重要。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表