时间:2021-07-01 10:21:17 帮助过:55人阅读
以上三种方法,第1种方法最不安全,因为是明文。第2种方法安全,但要交互。第3种方便,但要将配置文件设置严格的存取权限。
2.4 只授予账号必须的权限
在很多情况下,DBA 为了方便,给用户all privileges权限,这个权限超过了一般应用需要的权限,比如drop_priv等,这些权限如果误操作,将会产生严重后果。
2.5 除root外,任何用户不应有mysql库user表的存取权限。
由于mysql中可以通过更改mysql数据库的user表进行权限的增加,删除,变更等操作,因此除了root以外,任何用户都不应该拥有对user表存取权限(select,update,insert,delete等),比如:在前面章节创建的z1@localhost用户,拥有了all privileges 权限,就能修改user表数据,如果修改了root用户密码,将导致root用户登录mysql失败。
2.6 不要把file, process,super权限授予管理员以处的账号
a. file权限主要作用是:(1)将数据库的信息通过select .. into outfile.. 写到服务器上有写入权限的目录下。(2)可以将有读权限的文本文件通过load data infile.. 命令写入数据库表,如果表中存放很重要的信息,对系统造成很大安全隐患。
b. process 权限能被用来执行“show processlist” 命令,查看当前所有用户执行查询的明文文本。
c. super权限能执行kill命令,终掉其它用户进程(SHOW PROCESSLIST的ID进程值)。
-- 例如kill掉进程11 SHOW PROCESSLIST kill 11
2.7 drop table 命令并不收回以前的相关访问授权
drop表的时候,其它用户对此表的权限并没有被收回,这样导致重新创建同名的表时,以前其它用户对此表的权限会自动赋予,进而产生权限外流。因此在删除表时,要同时取消其它用户在此表的相应权限。
2.8 使用ssl
ssl 是(secure socket yayer安全套接字层)是一种安全的传输协议,用于保障在internet上数据传输的安全。要使用ssl转输,需要先运行mysql_ssl_rsa_setup生成证书,配置my.cnf,重启服务,配置mysql用户(这里不在深入)。
-- 判断是否启用ssl SHOW GLOBAL VARIABLES LIKE ‘have_%ssl‘;
2.9 最好给每个用户加上访问ip限制
在创建用户的时候,可以指定user表host字段的ip或者hostname, 只有符合授权的ip或者hostname才可以进行数据库访问。
2.10 其它
(1) skip-grant-tables
在忘记密码时,可以在my.cnf中加入skip-grant-tables,mysql用户登录后,在设置新密码。这个功能在mysql 开发进阶篇系列 29 数据库二进制包安装中有讲到。skip-grant-tables是个选项是使服务器不使用权限系统,给每个mysql用户完全访问所有数据库的权力。能过执行 mysqladmin flush-privileges或 mysqladmin reload或flush privileges语句,可以让一个正在运行的服务器再次开始使用授权表。
mysql 开发进阶篇系列 55 权限与安全(安全事项 )
标签:roc htm 默认 密码 style 启动数据库 一个 table 表数