01. 用户与权限介绍

1.1 多用户与root

  • MySQL、Oracle等这些数据库软件本质上是一个DBMS数据库管理系统。
  • 而数据库管理系统与Windows、Linux这些操作系统十分类似,都是多用户的系统。
  • DBMS在安装完成之后,系统会自带一个超级管理员用户root,这个root用户具有操作一切的权限。

    1.2 项目与用户

  • 在实际的企业级项目中,一般一个项目就对应着一个数据库。

  • DBA(Database Administrator,数据库管理员)会为相应项目的开发者创建对应的用户。
  • 这些用户一般只能操作对应项目的数据库,不能操作其他,因此就要求管理这个项目的用户不能是root用户。
  • 数据库的DCL语句实际上就是学习如何创建、管理、删除用户。

    02. 用户的相关操作

    2.1 CREATE创建用户

  • 创建用户的语法格式:CREATE USER 用户名@'IP地址' IDENTIFIED BY '用户密码';

    • IP地址表示用户只能在这个IP地址上登录连接数据库系统,并操作数据库。
    • 一般情况下不限制IP地址,除非是内网操作的项目才需要去指定IP地址。
    • 如果想要外网也能访问数据库,则IP地址可以设置为%,用于表示任意地址。
  • 示例:创建python用户,IP为任意地址,密码为123456;并创建python_test数据库。

    1. CREATE USER python@'%' IDENTIFIED BY '123456';
    2. CREATE DATABASE IF NOT EXISTS python_test CHARSET = 'utf8mb4';

    2.2 GRANT分配用户权限

  • 分配权限的语法格式:GRANT 操作名1, 操作名2, …, 操作名n ON 数据库.数据表 TO 用户名@'IP地址';

    • 操作名常见的有:SELECTCREATEDELETEUPDATEINSERT等等。
      • 注意:这里的CREATE仅表示创建表的权限,非root用户的普通用户没有创建库的权限。
    • 若要把所有的操作都给到用户的话,不需要一条一条全部列出来,可以使用ALL代替所有的操作名。
    • 若要把数据库中所有的表都给到用户的话,可以使用数据库.*的方式进行设置。
  • 示例:将python_test数据库的创建与查询权限分配给python用户。

    1. GRANT CREATE, SELECT ON python_test.* TO python@'%';

    2.3 REVOKE撤销用户权限

  • 撤销权限的语法格式:REVOKE 操作名1, 操作名2, …, 操作名n ON 数据库.数据表 FROM 用户名@'IP地址';

    2.4 删除用户

  • 删除用户的语法格式:DROP USER 用户名@'IP地址';

    2.5 修改用户可操作的IP地址

  • 修改可操作IP的语法格式:RENAME USER 用户名@'IP地址' TO 用户名@'新的IP地址';