01. 用户与权限介绍
1.1 多用户与root
- MySQL、Oracle等这些数据库软件本质上是一个DBMS数据库管理系统。
- 而数据库管理系统与Windows、Linux这些操作系统十分类似,都是多用户的系统。
DBMS在安装完成之后,系统会自带一个超级管理员用户
root
,这个root
用户具有操作一切的权限。1.2 项目与用户
在实际的企业级项目中,一般一个项目就对应着一个数据库。
- DBA(Database Administrator,数据库管理员)会为相应项目的开发者创建对应的用户。
- 这些用户一般只能操作对应项目的数据库,不能操作其他,因此就要求管理这个项目的用户不能是
root
用户。 -
02. 用户的相关操作
2.1 CREATE创建用户
创建用户的语法格式:
CREATE USER 用户名@'IP地址' IDENTIFIED BY '用户密码';
- IP地址表示用户只能在这个IP地址上登录连接数据库系统,并操作数据库。
- 一般情况下不限制IP地址,除非是内网操作的项目才需要去指定IP地址。
- 如果想要外网也能访问数据库,则IP地址可以设置为
%
,用于表示任意地址。
示例:创建python用户,IP为任意地址,密码为123456;并创建python_test数据库。
CREATE USER python@'%' IDENTIFIED BY '123456';
CREATE DATABASE IF NOT EXISTS python_test CHARSET = 'utf8mb4';
2.2 GRANT分配用户权限
分配权限的语法格式:
GRANT 操作名1, 操作名2, …, 操作名n ON 数据库.数据表 TO 用户名@'IP地址';
。- 操作名常见的有:
SELECT
、CREATE
、DELETE
、UPDATE
、INSERT
等等。- 注意:这里的
CREATE
仅表示创建表的权限,非root
用户的普通用户没有创建库的权限。
- 注意:这里的
- 若要把所有的操作都给到用户的话,不需要一条一条全部列出来,可以使用
ALL
代替所有的操作名。 - 若要把数据库中所有的表都给到用户的话,可以使用
数据库.*
的方式进行设置。
- 操作名常见的有:
示例:将python_test数据库的创建与查询权限分配给python用户。
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地址';