一、访问控制
? MySQL服务器保证安全的基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。这样就可以防止用户对数据库的恶意操作和误操作。
二、管理用户
1. 创建用户账号
-- 创建了一个新用户账户。用户名为ben,密码为p@$$wOrd
create user ben identified by ‘p@$$wOrd‘;
-- 重命名一个用户账户。将ben重命名为bforta
rename user ben to bforta;
2. 删除用户账户
-- 删除用户账户以及该账号所拥有的权限
drop user bforta;
3. 设置访问权限
? 在创建用户账户后,必须接着分配访问权限。新创建的用户账户没有访问权限,它们能登录MySQL,但不能看到数据,也不能执行任何数据库操作。
? 为了设置权限,需要使用grant语句。grant要求你至少给出如下信息:
- 要授予的权限;
- 被授予访问权限的数据库或表;
- 用户名。
举例:
grant select on crashcourse.* to bforta;
-- 此grant语句允许用户bforta在crashcourse.*(crashcourse数据库的所有表)上使用select语句。
revoke select on crashcourse.* from bforta;
-- 这条revoke语句撤销刚刚赋予用户bforta的select访问权限。
? grant和revoke可在几个层次上控制访问权限:
- 整个服务器,使用grant all和revoke all;
- 整个数据库,使用on database.*;
- 特定的表,使用on database.table;
- 特定的列;
- 特定的存储过程。
-- 简化多次授权。可通过列出各权限并用逗号隔开,将多条grant语句串在一起。
grant select, insert on crashcourse.* to bforta;
4. 更改密码
set password for bforta = password(‘n3w p@$$wOrd‘);
-- 新密码必须传到password()函数进行加密。
set password = password(‘n3w p@$$wOrd‘);
-- 在不指定用户名时,set password更新当前登录用户的密码。