mysql权限表:数据库mysql中三个表重要:user,db,host
查看他们的表结构:desc user/db/host
创建用户:
第一种方法(直接操作授权表):
insert into user(host,user,passwors)values('%','test',password('test'))
然后:flush privileges
修改密码:update user set password=password('123456')然后:flush privileges
删除用户:delete from user where user='test'
第二种方法(是用grant语句):
设置用户管理权限:grant 权限列表 [(字段列表)] on 数据库名.表名 to 用户名@域名或ip地址 [identified by '密码'] [with grant option]
eg:
1. 创建用户wuxiaoxiao,权限为在所有数据库上执行所有权限
grant all privileges on *.* to wuxiaoxiao@'%' identified by '870805'
2. 创建用户wuxiaoxiao,权限为在java数据库上,执行select的权限
grant select on java.* to wuxiaoxiao@'202.194.132.%' identified by '870805';
创建用户wuxiaoxiao,权限为在java数据库的customer表上,执行update字段name的权限
grant update (name) on java.customer to wuxiaoxiao@'%';
3.
grant all privileges on *.* to wuxiaoxiao@'localhost' identified by '870805';
查看权限:
show grants for user@host;
eg:show grants for wuxiaoxiao@'localhost';
修改权限和创建用户语句一样
收回权限
revoke 权限列表[(字段列表)] on 数据库.表名 from 用户名@域名或ip地址
eg:revoke create,drop on java.* from wuxiaoxiao@'%';
revoke grant option on java.* from wuxiaoxiao@localhost;
mysql安全问题:
操作系统相关的安全问题:
1.严格控制操作系统的账号和权限
2.尽量避免以root权限运行mysql
3.防止dns欺骗,创建用户时,host可以指定域名,如果域名对应的ip地址被别人恶意的修改,则数据库就会出现隐患
数据库相关的安全问题:
1.删除匿名账号
有些数据库安装完毕后会建立一个空账号,对test数据库具有所有的权限,要把该账号加密或者删除
2.设置安全密码:
3.只授予账号必须的权限
4.除root用户外,任何用户不能具有mysql库user表的存取权限
5.不要把FILE,PROCESS,SUPER授予管理员以外的用户
file:将数据库的信息通过select ...into outfile写入到服务器上
通过load data infile....命令写入数据库
process:能够通过show processlist查询当前所有用户执行查询的明文文本
super:能执行kill命令,终止其他用户进程
使用ssl(安全套接字层):
grant all privileges on *.* to wuxiaoxiao@'%' identified by '870805' require ssl;
该用户进行传输数据的时候就是用ssl
revoke命令的漏洞:
在一个数据库上多次赋予权限,权限会自动的合并,但是在多个数据库上的多次赋予权限,每个数据库上都会认为是单独的一组权限
阅读(1282) | 评论(0) | 转发(0) |