用户管理

创建用户

  • 语法
    1
    2
    3
    CREATE USER [IF NOT EXISTS] 
    账户名 [用户身份验证选项][账户名,[用户身份验证选项]]...
    [WITH 资源控制选项] [密码管理选项|账户锁定选项]
  • 示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 创建简单用户java22
    CREATE user `java22`;

    # 创建含有密码的用户
    CREATE USER '用户名' IDENTIFIED BY '密码

    # 创建多个用户
    CREATE USER
    '用户名1' IDENTIFIED BY '密码1,
    '用户名2' IDENTIFIED BY '密码2,
    ...

设置密码

  • 方式1
    利用mysqladmin,我们不需要先登录,但是需要知道原来的密码;我们可以直接修改,修改密码格式为:
    mysqladmin -u用户名 -p旧密码 password 新密码
  • 方式2
    set password for 用户名@localhost = password('新密码'); 一定不要忘记最后面的分号,例如:我们把密码改成成123:
    1
    set password for root@localhost = password('123');
    出现以下界面说明修改成功
  • 更新中…

修改用户

  • 更新中…

删除用户

  • 命令:DROP USER [用户名]

权限管理

  • 在实际项目开发中,为了保证数据的安全,数据库管理员需要为不同层级的操作人员分配不同的权限,限制登录MySQL服务器的用户只能在其权限范围内操作。同时管理员还可以根据不同的情况为用户增加权限或回收权限,从而控制数据操作人员的权限。

查看权限

  • 语法
  • SHOW GRANTS [FOR 账户]

  • 示例 查看java22权限
    1
    SHOW GRANTS FOR `java22`; 
    提示:若在客户端使用的是root用户登录的MYSQL服务器,则在此处查看root用户权限时,可以直接使用SHOW GRANTS命令。
    img.png
    查询结果中USAGE表示没有任何权限,如下所示:
    img.png
  • ALL PRIVILEGES表示除GRANT OPTION(授权权限)和PROXY(代理权限)外的所有权限。
  • ''@''表示任何主机中的匿名用户

授予权限

权限分类

  • 数据权限:增删改查(select/update/delete/insert)
  • 结构权限:结构操作(create/drop)
  • 管理权限(通常只有管理员有管理权限):用户操作权限(create user/grant/revoke)
    img.png

权限级别

权限级别指的就是权限可以被应用在哪些数据库的内容中。
级别分类:

  • 全权权限(ON *.*)
  • 数据库级权限(ON 数据库名.*)
  • 表级权限(ON 数据库名.表名)
  • 列级权限(权限类型(字段列表)ON 数据库名.表名)
  • 存储过程权限
  • 代理权限(PROXY ON 账户名)

授权语法

1
GRANT 权限列表 ON 权限级别 TO 账户名
  • 示例
    1
    2
    3
    4
    5
    6
    7
    8
    # 授权java22用户全局的select权限
    GRANT SELECT ON *.* TO `java22`;
    # 给mybookshop数据库的所有表授予select,insert权限
    GRANT SELECT,INSERT ON mybookshop.* TO `java22`;
    # 授予book表的删除权限
    GRANT DELETE ON mybookshop.books TO `java22`;
    # 授予java22用户mybookshop的books表的UnitPrice更新权限
    GRANT UPDATE(UnitPrice) ON mybookshop.books TO `java22`;

回收权限

  • 关键词REVOKE

  • 语法
    1
    2
    REVOKE 权限类型 [(字段列表)] [,权限类型(字段列表)]...
    ON [目标类型] 权限级别 FROM 账户名 [,账户名]...
  • 示例1 回收指定用户java22全局的select权限
    1
    REVOKE SELECT ON *.* FROM `java22`@`%`;
  • 示例2 回收指定用户java22的所有权限
    1
    REVOKE ALL ON *.* FROM `java22`@`%`;

刷新权限

  • 使用这个命令使权限生效,对权限表user、db、host等做了update或者delete更新的时候务必执行权限刷新。
    1
    flush privileges; //刷新权限
  • 另外也可以用msyqladmin命令完成权限刷新
    1
    2
    3
    4
    # 方式1
    msyqladmin -uroot -p reload
    # 方式二
    msyqladmin -uroot -p flush-privileges