SQL基础5—DCL数据控制语言

本文介绍了SQL的数据控制语言DCL,包括用户管理和权限管理。在用户管理方面,详细阐述了如何创建、删除和修改用户密码。在权限管理部分,讨论了如何授予权限、收回权限以及查看权限的方法,强调了权限的分类和应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别

  • GRANT、REVOKE、COMMIT、ROLLBACK

1.用户管理

用户数据表:mysql.user

  • mysql中的所有用户,都存储在系统数据库(mysql)中的user 表中

通过:mysql.user表查询当前用户的相关信息

select host,user,password,select_priv,insert_priv,drop_priv from mysql.user;

在这里插入图片描述
表中:

1)host : 表示连接类型

  • % :表示所有远程通过 TCP方式的连接
  • IP 地址: 如 (192.168.1.2,127.0.0.1) 通过制定ip地址进行的TCP方式的连接
  • 机器名 通过制定i网络中的机器名进行的TCP方式的连接
  • ::1 IPv6的本地ip地址 等同于IPv4的 127.0.0.1
  • localhost 本地方式通过命令行方式的连接 ,比如mysql -u xxx -p 123xxx 方式的连接。

2)User:表示用户名

  • 同一用户通过不同方式链接的权限是不一样的。

3)password : 密码

  • 所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为MYSQLSHA1 ,不可逆 。
  • mysql 5.7 的密码保存到 authentication_string 字段中不再使用password 字段。

4)select_priv , insert_priv等

  • 为该用户所拥有的权限。

1)创建用户

create user '用户名'@'允许登录的地址/服务器' identified by '密码';

2)删除用户

drop user '用户名'@'允许登录的地址或服务器名';

1

3)修改用户密码

①修改自己的密码:

set password = password('密码')

②修改他人的密码(前提是有权限):

set password for '用户名'@'允许登录的地址' = password('密码');
#或
update mysql.user set password=password('123456') where user='li4';
flush privileges;   #所有通过user表的修改,必须用该命令才能生效。

2.权限管理

权限:mysql数据库,将其中所能做的所有事情,都分门别类分配到大约30多个权限中去了,其中每个权限,都由一个“单词”来表示

权限如下所示:

在这里插入图片描述

1)授予权限:

grant 权限列表 on 数据库.to  '用户名'@'允许登录的位置'  [identified by '密码'];

注意:

  • *.* 代表所有数据库中的所有下级单位;
  • 数据库.* 代表指定的该库中的所有下级单位;

identified by ‘密码’

  • 是可省略部分,如果不省略,就表示赋权的同时,也去修改它的密码;
  • 如果该用户未存在,此时其实就是创建一个新用户,并设置其密码

2)收回权限

收回权限命令:

revoke 权限1,权限2,…权限n on 数据库名称.表名称 from 用户名@用户地址;

案例:

REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost;
#收回全库全表的所有权限

REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost;
#收回mysql库下的所有表的插删改查权限

注意:必须用户重新登录后才能生效

3)查看权限

1.查看当前用户权限

show grants;

2.查看某用户的全局权限

select * from user ;

3.查看某用户的某个表的权限

select * from tables_priv;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值