确保数据的安全和完整需要利用访问控制

访问控制

用户需要对其数据具有适当的访问权,既不能过多,也不能过少,例如

  • 多数用户需要对表进行读写,少数用户需要创建和删除
  • 某些用户需要读表,但不需要更新表
  • 允许用户添加数据,但不能删除数据
  • 管理员用户需要处理用户账号权限
  • 允许通过访问存储过程访问数据,但不允许直接访问数据
  • 根据用户登陆地点限制对某些功能的访问

需要给用户提供其所需的访问权限,且仅提供其所需的访问权限

root账户

MySQL创建一个名为root的用户账户,其对整个MySQL服务器具有完整的控制。

不要使用root

在日常工作中,绝不能使用root。应该严肃对待root登录的使用。仅在绝对需要时使用它。不应该在日常的MySQL操作中使用root

管理用户

MySQL用户账号和信息存储在名为mysql的MySQL数据库中
image.png

	USE mysql;
	SELECT USER FROM user;

image.png

创建用户账号

简单创建一个新用户账号

CREATE USER ben IDENTIFIED BY "p@$$wOrd";

image.png
image.png
其中,IDENTIFIED BY指定的口令为纯文本,MySQL将在保存到user表之前对其进行加密

使用GRANT或INSERT创建

  • 可使用GRANT语句创建用户账号,但CREATER USER时最清楚和最简单的句子
  • 可使用直接插入到user表来增加用户,为安全起见不要这么做。因为可能会损坏MySQL服务器。

重命名用户账号

  • 使用RENAME USER语句
RENAME USER ben TO beforta;

image.png

  • 直接UPDATE更新user表

删除用户账号

使用FROP USER,MySQL5之后支持删除用户账号和所有相关权限

DROP USER beforta;

image.png

设置访问权限

新创建的用户账号没有访问权限,只能登录MySQL,但看不到数据,无法执行任何数据库操作
创建用户,并使用SHOW GRANTS FOR查询用户权限

CREATE USER bforta IDENTIFIED BY "p@$$wOrd";
SHOW GRANTS FOR bforta;

image.png
图中的结果表示在任意数据库和任意表上对任意数据没有权限

将用户定义为user@host

如果不指定主机host,则使用默认的主机名%,授予用户访问权限而不管主机名

为设置权限,使用GRANT语句,需要有

  • 要授予的权限
  • 被授予访问权限的数据库或表
  • 用户名

例如

GRANT SELECT ON
	crashcourse.* TO bforta;

表示允许bforta用户在crashcourse数据库的所有表上使用SELECT,具有只读访问权限
image.png


这个家伙很懒,啥也没有留下😋