确保数据的安全和完整需要利用访问控制, 给用户设置不同的访问权限
管理用户
MySQL用户账户信息在一个名为mysql的数据库中
查询账户列表
use mysql; -- 选择数据库
select user from user; -- 查询用户账号
创建用户账号
create user ben identified by 'p@$$wOrd'; -- 创建一个新账号 ben
create user 创建一个新账号,创建账号时不一定需要口令 identified by,但这条语句使用了。
dentified by ‘p@$$wOrd’ 是指定散列口令,口令为存文本,ben保存到user表之前会被加密。
命名账号
rename user 旧名 to 新名;
删除账号
drop user 账号名;
使用旧版的mysql,需要先用revoke删除与账号相关的权限,然后再用 drop user 删除账号。
设置访问权限
show grants for 账号名; -- 查看用户账号权限
输出的结果如果是 usage on*.* ,usage表示没有任何权限。
用 grant语句设置权限
grant select,insert on *.* to 账号名; -- 给账号设置select和insert权限, *.*是通配符,第一个*代表数据库,第二个*代表表,*.*代表所有数据库和表,也可以写成: 数据库1.表1
撤销权限,revoke
revoke select on *.* from 账号名; -- 撤销账号的select权限
被撤销的访问权限必须存在,否则会出错。
grant 和 revoke,可以在几个层次上授权和撤销:
整个服务器,使用 grant all 和 revoke all
整个数据库,使用 on database.*
特定的表, 使用 on database.表名
特定的列
特定的存储过程
授予或撤销的权限表
更改用户密码
ALTER USER '用户账号'@'%'IDENTIFIED BY '999' ; -- %代表所有数据库,密码修改为999