设置访问权限
在创建用户账号后,必须接着分配访问权限。新创建的用户账号没有访问权限。它们能登录MySQL,但不能看到数据,不能执行任何数据库操作。
为看到赋予用户账号的权限,使用 SHOW GRANTS FOR ,如下所示:
输入:
SHOW GRANTS FOR bforta;
输入:
分析:输出结果显示用户 bforta 有一个权限 USAGE ON *.* 。 USAGE 表示根本没有权限(我知道,这不很直观),所以,此结果表示在任意数据库和任意表上对任何东西没有权限。
用户定义为 user@host MySQL的权限用用户名和主机名结合定义。如果不指定主机名,则使用默认的主机名 % (授予用户访问权限而不管主机名)。
为设置权限,使用 GRANT 语句。 GRANT 要求你至少给出以下信息:
1.要授予的权限;
2.被授予访问权限的数据库或表;
3.用户名。
以下例子给出 GRANT 的用法:
输入:
GRANT SELECT ON crashcourse.*TO bforta;
分析:此 GRANT 允许用户在 crashcourse.* ( crashcourse 数据库的所有表)上使用 SELECT 。通过只授予 SELECT 访问权限,用户 bforta对 crashcourse 数据库中的所有数据具有只读访问权限。
SHOW GRANTS 反映这个更改:
输入:
SHOW GRANTS FOR bforta;
输出:
分析:每个 GRANT 添加(或更新)用户的一个权限。MySQL读取所有授权,并根据它们确定权限。
GRANT 的反操作为 REVOKE ,用它来撤销特定的权限。下面举一个例子:
输入:
REVOKE SELECT ON crashcourse.* FROM bforta;
分析:这条 REVOKE 语句取消刚赋予用户 bforta 的 SELECT 访问权限。被撤销的访问权限必须存在,否则会出错。
GRANT 和 REVOKE 可在几个层次上控制访问权限:
1.整个服务器,使用 GRANT ALL 和 REVOKE ALL;
2.整个数据库,使用 ON database.*;
3.特定的表,使用 ON database.table;
4.特定的列;
5.特定的存储过程。
下表列出可以授予或撤销的每个权限。
使用 GRANT 和 REVOKE ,再结合表中列出的权限,你能对用户可以就你的宝贵数据做什么事情和不能做什么事情具有完全的控制。
未来的授权 在使用 GRANT 和 REVOKE 时,用户账号必须存在,但对所涉及的对象没有这个要求。这允许管理员在创建数据库和表之前设计和实现安全措施。
这样做的副作用是,当某个数据库或表被删除时(用 DROP 语句),相关的访问权限仍然存在。而且,如果将来重新创建该数据库或表,这些权限仍然起作用。
简化多次授权 可通过列出各权限并用逗号分隔,将多条GRANT 语句串在一起,如下所示:
GRANT SELECT,INSERT ON crashcourse.* TO bforta;
【相关推荐】
以上是MySQL设置访问权限实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!