确保数据的安全和完整需要利用访问控制
访问控制
用户需要对其数据具有适当的访问权,既不能过多,也不能过少,例如
- 多数用户需要对表进行读写,少数用户需要创建和删除
- 某些用户需要读表,但不需要更新表
- 允许用户添加数据,但不能删除数据
- 管理员用户需要处理用户账号权限
- 允许通过访问存储过程访问数据,但不允许直接访问数据
- 根据用户登陆地点限制对某些功能的访问
需要给用户提供其所需的访问权限,且仅提供其所需的访问权限
root账户
MySQL创建一个名为root的用户账户,其对整个MySQL服务器具有完整的控制。
不要使用root
在日常工作中,绝不能使用root。应该严肃对待root登录的使用。仅在绝对需要时使用它。不应该在日常的MySQL操作中使用root
管理用户
MySQL用户账号和信息存储在名为mysql的MySQL数据库中
USE mysql;
SELECT USER FROM user;
创建用户账号
简单创建一个新用户账号
CREATE USER ben IDENTIFIED BY "p@$$wOrd";
其中,IDENTIFIED BY指定的口令为纯文本,MySQL将在保存到user表之前对其进行加密
使用GRANT或INSERT创建
- 可使用GRANT语句创建用户账号,但CREATER USER时最清楚和最简单的句子
- 可使用直接插入到user表来增加用户,为安全起见不要这么做。因为可能会损坏MySQL服务器。
重命名用户账号
- 使用RENAME USER语句
RENAME USER ben TO beforta;
- 直接UPDATE更新user表
删除用户账号
使用FROP USER,MySQL5之后支持删除用户账号和所有相关权限
DROP USER beforta;
设置访问权限
新创建的用户账号没有访问权限,只能登录MySQL,但看不到数据,无法执行任何数据库操作
创建用户,并使用SHOW GRANTS FOR查询用户权限
CREATE USER bforta IDENTIFIED BY "p@$$wOrd";
SHOW GRANTS FOR bforta;
图中的结果表示在任意数据库和任意表上对任意数据没有权限
将用户定义为user@host
如果不指定主机host,则使用默认的主机名%,授予用户访问权限而不管主机名
为设置权限,使用GRANT语句,需要有
- 要授予的权限
- 被授予访问权限的数据库或表
- 用户名
例如
GRANT SELECT ON
crashcourse.* TO bforta;
表示允许bforta用户在crashcourse数据库的所有表上使用SELECT,具有只读访问权限
Comments | 0 条评论