mysql 细节记录01-权限相关
注意点
mysql权限级别
- 全局
- 数据库
- 表
- 列
information_schema数据库
这个数据库存储了mysql的一系列虚拟对象,这个数据库并没有对应的物理文件,不能对这个数据进行授权
test数据库
mysql安装之后会默认创建一个test数据库,这个数据库默认的权限是允许所有用户操作,注意安装之后要清除掉这个数据库,并执行truncate table mysql.db
,否则会存在安全隐患
权限类型
可以使用desc mysql.tables_priv;
,查看权限类型
安全隐患
- 清除默认的数据库test并清空权限
# 删除默认创建的数据库
drop database test;
# 清空默认的权限
truncate table mysql.db
- 去掉mysql命令执行的日志
相关命令
创建用户
create user zj_test@'%' identified by 'Zj123!@#';
创建用户并给权限
grant select on my_test.* to zj_test identified by 'Zj123!@#';
设置库级别权限
grant select on my_test.* to zj_test2;
回收用户权限(清除不了一些特殊的权限 USAGE )
revoke select on my_test.* from zj_test2;
清空全局权限(注意清除不了基于库的权限,例如上面的语句赋予的权限就清除不了)
revoke select on *.* from zj_test2;
清空所有权限(注意是清空所有权限(不能清除 USAGE 权限))
revoke all privileges, grant option from zj_test;
设置密码
set password for zj_test@'%' = 'Zj123$%^';
查看用户权限
show grants for zj_test;
删除用户(不会终止已登录的用户)
drop user zj_test;
表级别权限存放表
select *
from mysql.tables_priv;
查看权限信息
desc mysql.tables_priv;
设置表级别的权限
grant all on my_test.user to zj_test identified by 'Zj123!@#';
grant select on my_test.* to zj_test;
回收表级别权限
revoke all on my_test.user from zj_test;
设置列级别权限
grant select(`name`) on my_test.user to zj_test;
列级别权限存放表
select *
from mysql.columns_priv;