28.1访问控制
用户不能对过多的数据具有过多的访问权。
在现实世界的日常工作中,决不能使用root。应该创建一系列的账号,有的用于管理,有的供用户使用,有的供开发人员使用,等等。
28.2管理用户
MySQL用户账号和信息存储在名为mysql的MySQL数据库中。
28.2.1创建用户账号
创建一个新用户账号
CREATE USER ben IDENTIFIED BY '123456' ;
重新命名用户账号
RENAME USER ben TO bforta;
28.2.2删除用户账号
DROP USER bforta
28.2.3设置访问权限
查看赋予用户账号的权限
SHOW GRANTS FOR bforta;
注意:
用户定义为user@host,MySQL的权限用用户名和主机名结合定义。如果不指定主机名,则使用默认的主机名%(授予用户访问权限而不管主机名)
设置权限
GRANT SELECT ON crashcourse.* TO bforta;
为设置权限,GRANT要求你至少给出以下信息:1.要授予的权限;2.被授予访问权限的数据库或表;3.用户名。
撤销权限(撤销的权限必须存在,否则出错)
REVOKE SELECT ON crashcourse.* FROM bforta;
GRANT和REVOKE可在几个层次上控制访问权限:
- 整个服务器,使用GRANT ALL和REVOKE ALL;
- 整个数据库,使用0N database. *;
- 特定的表,使用ON database. table;
- 特定的列;
- 特定的存储过程。
可以授予或撤销的权限列表。
注意:
-
在使用GRANT和REVOKE时,用户账号必须存在,但对所涉及的对象没有这个要求。
-
可以一条语句多个授权,使用“,”隔开:
GRANT SELECT, INSERT ON crashcourse.* TO bforta;
28.2.4更改口令
修改指定用户的密码
SET PASSWORD FOR bforta = Password('n3w p@$$w0rd');
修改当前用户自己的密码
SET PASSWORD = Password('n3w p@$$w0rd');
28.3小结
本章学习了通过赋予用户特殊的权限进行访问控制和保护MySQL服 务器。