分配合理的数据库权限对于维护系统安全至关重要。尤其是,一定要将网络应用程序和数据库管理功能所需的权限分开,以确保系统安全。我们看到有些客户,误设账号权限或将所有权限分配给一个账号(GRANT ALL in MySQL),这真的是没有见识,原因如下:
首先,很明显的一个原因就是,每个账号或用户仅授予其所需的权限,不多授权。这在安全设计中,是一个很关键的因素。这意味着,用户仅在其所用的数据库中,有选、改、增的权限,必要时,可赋予删除权限。而不是将用户权限设置为*.*,因为这样的话,他便可以阅读用户表及密码等。
其次,数据库管理员账号可以删除数据库、更改表、更改服务器配置等等。请记住如果有SQL注入攻击或您的应用程序有bug的话,那么黑客便能够轻易地通过该账号连接到数据库,所以,要一直假设该用户账号可能会被窃取,这样可以减少系统安全危害。
再次,为每个应用程序或子系统分设独立账号,这样不但能轻易地排除故障,还有利于分配不同的安全权限。这样,您的搜索引擎、备份监控等都可以采用不同的账号和不同的随机密码。您还应该分设独立的数据库管理员账号,使每个数据库管理员用户有单独账户,这样可以提高可审计性、可追踪性,便于了解谁做了什么事情。如果员工离职,也能够轻易地应付。
第四,数据库管理员账号可以逾越我们在MySQL从机上设置的只读权限,进而更改本地数据。(而数据修改仅允许在主机器上操作)。但是,任何有超级