MySQL如何在给定场景下为一个用户授权?

如何定义 MySQL 数据库账号?

  • 用户名的组成:用户名@可访问控制列表

    • 用户名:5.7版本以前,用户名最大只有16个字节;之后的版本为 32 个字节

    • 可访问控制列表:用户可以从哪些服务器上对数据库进行访问

      1. %:代表可以从所有外部主机进行访问
      2. 192.168.1.%:可以从 192.168.1 网段进行访问
      3. localhost:DB 服务器本地访问
  • 使用 CREATE USER 命令建立用户

MySQL 常用的用户权限

常用的权限如下表所示:

类别 语句 说明
Admin Create User 建立新的用户
Grant option 为其他用户授予权限
Super 管理服务器的权限
DDL Create 新建数据库、表
Alter 修改表结构
Drop 删除数据库和表
Index 建立和删除索引
DML Select 查询表中数据
Insert 插入数据
Update 更新数据
Delete 删除数据
Execute 执行存储过程

通常开发人员只具有 DML 类的权限,如果想查看详细的权限列表,可执行命令:

1
show privileges;

何如为用户授权?

  • 遵循最小权限原则,如:一个用户只具有只读权限,就不能授予除 select 之外的权限。

  • 使用 Grant 命令对用户授权

    1
    2
    3
    grant 权限 on 数据库.表 to 用户(user@ip);
    # 回收权限
    revoke 权限 on 数据库.表 from 用户(user@ip);

最后,若要查看 MySQL 命令的具体用法,如该命令有哪些参数等,可通过 \h 命令 来查看。