• DCL 介绍: DCL是数据控制语言,用来管理数据库用户,控制数据库的访问权限
  • 用户和数据库不一样噢:因为本身服务器的数据库为用户的登录设置各种权限。VIP。。。。
  • 开发人员不用重点掌握

DCL-管理用户

  1. 查询用户

    use mysql;

    select * from user;

    DataGrip的mysql数据库中有user表,里面可以直接检查到


  2. 创建用户

    create user ‘用户名‘@‘主机名’ identified by ‘密码’;

    创建完后 可以用cmd输入:

    mysql -u ‘用户名’ -p

    enter password: 。。。。

    就可以了

    1
    2
    3
    4
    5
    -- 创建用户itcast , 只能够在当前主机localhost访问,密码123456
    create user 'itcast'@'localhost' identified by '123456' ; # 再查询用户表
    # 该用户只是创建但是并没有任何权限,访问不了其他的数据库
    -- 创建用户heima, 在任意主机上访问该数据库, 密码123456
    create user 'heima' @'%' identified by '123456';
  3. 修改用户密码

    alter user ‘用户名‘@‘主机名’ identified with mysql_native_password by ‘新密码’;

  4. 删除用户

    drop user ‘用户名‘@‘主机名’;

    1
    drop user 'itcast'@'localhost';

    注意:

    1. 主机名可以用 % 通配
    2. 这类SQL开发人员操作很少,主要是数据库管理员使用

DCL- 权限控制

权限 说明
all,all privileges 所有权限
select 查询数据
insert 插入数据
update 修改数据
delete 删除数据
alter 修改表
drop 删除数据库/表/字段
create 创建数据库/表
  1. 查询权限

    show grants for ‘用户名‘@’主机名’;

    1
    2
    3
    -- 查询某个用户的权限
    show grants for 'heima' @'%';
    -- 输出 GRANT USAGE ON *.* TO `heima`@`%`
  2. 授予权限

    grant 权限列表 on 数据库名.表名 to ‘用户名‘@’主机名’;

    1
    2
    3
    -- 授予权限->把root用户的权限给了heima用户
    grant all on root.* to 'heima' @'%' ;
    -- 输出 GRANT ALL PRIVILEGES ON `root`.* TO `heima`@`%`
  3. 撤销权限

    revoke 权限列表 on 数据库名.表名 from ‘用户名‘@’主机名’;

    1
    2
    3
    -- 撤销权限 -> 把heima用户中的root权限全部撤销 ()
    revoke all on root.* from 'heima' @'%';
    -- GRANT USAGE ON *.* TO `heima`@`%`

注意:

  • 多个权限之间,使用逗号分隔
  • 授权时,数据库和表名可以使用 * 通配,代表所有 -> * . * 代表超级管理员哈哈哈哈~~
  • ‘heima’ 一开始权限设置是 %