MySQL的安全设置

MySQL通过两个模块实现数据库资源的安全访问控制,即身份认证模块和权限验证模块。

用户管理

创建用户登录

创建用户tempuser,其口令为temp

mysql> create USER tempuser@localhost IDENTIFIED BY 'temp';
use mysql;
select * from user;

在这里插入图片描述

mysql -utempuser -p
Enter password: ****
Welcome to the MySQL monitor.

修改用户密码

mysql> set password for tempuser@localhost='root';

修改用户名

mysql> rename user tempuser@localhost to temp_u@localhost;

删除用户

mysql> drop user temp_u@localhost;
mysql> select * from mysql.user where user='temp_u' and host='localhost';
Empty set (0.04 sec)

权限管理

权限管理主要包括两个内容:授予权限和撤销权限

授予权限

授予MySQL字段级别权限

mysql> create user column_user@localhost identified by 'password';
Query OK, 0 rows affected (0.08 sec)

mysql> grant select(ename,sal,empno),update(sal)
    -> on table company.emp
    -> to column_user@localhost
    -> with grant option;
Query OK, 0 rows affected (0.05 sec)

在这里插入图片描述
重新以column_user登录

select ename,sal from company.emp;

在这里插入图片描述

mysql> select job,comm from company.emp;
ERROR 1143 (42000): SELECT command denied to user 'column_user'@'localhost' for column 'job' in table 'emp'

授予MySQL表级别权限

退出重新以root登录
权限授予与撤销需root用户操作

mysql> rename user column_user@localhost to test_user@localhost;
Query OK, 0 rows affected (0.06 sec)
mysql> grant alter,select,insert(empno,ename)
    -> on table company.emp
    -> to test_user@localhost;

在这里插入图片描述
在这里插入图片描述

授予MySQL存储程序级别权限

在这里插入图片描述

mysql> use company;
Database changed
mysql> grant execute on procedure emp_p to test_user@localhost;
mysql> call emp_p;
+---------+---------+
| v_ename | v_job   |
+---------+---------+
| SCOTT   | ANALYST |
+---------+---------+
mysql> grant alter routine,execute on function sum_fn to test_user@localhost;
mysql> select sum_fn(3);
+-----------+
| sum_fn(3) |
+-----------+
|         6 |
+-----------+

授予MySQL数据库级别权限

mysql -uroot -p
mysql> grant create,select,drop on company.* to test_user@localhost;

在这里插入图片描述

授予MySQL服务器管理员级别权限

在这里插入图片描述

mysql> grant all privileges on *.* to test_user@localhost;

在这里插入图片描述

撤销权限

撤销指定权限

revoke execute on procedure emp_p from test_user@localhost;

撤销所有权限

revoke all privileges,grant option from test_user@localhost;

查看权限

mysql> show grants for test_user@localhost;
+-----------------------------------------------+
| Grants for test_user@localhost                |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO `test_user`@`localhost` |
+-----------------------------------------------+

角色管理

创建角色

create role 
'app'@localhost,
'ops'@localhost,
'dev_read'@localhost,
'dev_write'@localhost
use mysql;
select * from user
where host='localhost' and user in ('app','ops','dev_read','dev_write');

在这里插入图片描述

授予角色权限

grant select,insert,update,delete on company.* to 'app'@localhost;
grant all privileges on company.* to 'ops'@localhost;
grant select on company.* to 'dev_read'@localhost;
grant insert,update,delete on company.* to 'dev_write'@localhost;
use mysql;
select * from db
where host='localhost' and user in ('app','ops','dev_read','dev_write');

在这里插入图片描述

授予用户角色

grant 'app'@localhost to 'test_user'@localhost;

查看角色是否分配正确

show grants for test_user@localhost;

在这里插入图片描述
用户在使用角色权限前必须先激活角色

set global activate_all_roles_on_login=on;

撤销用户角色

revoke 'app'@localhost from 'test_user'@localhost;

删除角色

drop role 
'app'@localhost,
'ops'@localhost,
'dev_read'@localhost,
'dev_write'@localhost
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据攻城小狮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值