菜鸟课堂:MySQL权限的详细解答

时间:2009-09-03 11:43:00 

一.权限表

mysql数据库中的3个权限表:user 、db、 host

权限表的存取过程是:

1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证;

2) 通过权限验证,进行权限分配时,按照user?db?tables_priv?columns_priv的顺序进行分配。即先检查全局权限表 user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检 查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

二.MySQL各种权限(共27个)

(以下操作都是以root身份登陆进行grant授权,以p1@localhost身份登陆执行各种命令。)


1. usage

连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。

mysql> grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′;

该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。

2. select

必须有select的权限,才可以使用select table

mysql> grant select on pyt.* to ‘p1′@’localhost’;

mysql> select * from shop;

3. create

必须有create的权限,才可以使用create table

mysql> grant create on pyt.* to ‘p1′@’localhost’;

4. create routine

必须具有create routine的权限,才可以使用{create |alter|drop} {procedure|function}

mysql> grant create routine on pyt.* to ‘p1′@’localhost’;

当授予create routine时,自动授予EXECUTE, ALTER ROUTINE权限给它的创建者:

mysql> show grants for ‘p1′@’localhost’;

+—————————————————————————+

Grants for p1@localhost

+————————————————————————–+

| GRANT USAGE ON *.* TO ‘p1′@’localhost’ IDENTIFIED BY PASSWORD ‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′ |

| GRANT SELECT, CREATE, CREATE ROUTINE ON `pyt`.* TO ‘p1′@’localhost’|

| GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `pyt`.`pro_shop1` TO ‘p1′@’localhost’ |

+————————————————————————————-+

5. create temporary tables(注意这里是tables,不是table)

必须有create temporary tables的权限,才可以使用create temporary tables.

mysql> grant create temporary tables on pyt.* to ‘p1′@’localhost’;

[mysql@mydev ~]$ mysql -h localhost -u p1 -p pyt

mysql> create temporary table tt1(id int);

6. create view

必须有create view的权限,才可以使用create view

mysql> grant create view on pyt.* to ‘p1′@’localhost’;

mysql> create view v_shop as select price from shop;

7. create user

要使用CREATE USER,必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。

mysql> grant create user on *.* to ‘p1′@’localhost’;

或:mysql> grant insert on *.* to p1@localhost;

8. insert

必须有insert的权限,才可以使用insert into ….. values….

9. alter

必须有alter的权限,才可以使用alter table

alter table shop modify dealer char(15);

10. alter routine

必须具有alter routine的权限,才可以使用{alter |drop} {procedure|function}

mysql>grant alter routine on pyt.* to ‘p1′@’ localhost ‘;

mysql> drop procedure pro_shop;

Query OK, 0 rows affected (0.00 sec)


mysql> revoke alter routine on pyt.* from ‘p1′@’localhost’;

[mysql@mydev ~]$ mysql -h localhost -u p1 -p pyt

mysql> drop procedure pro_shop;

ERROR 1370 (42000): alter routine command denied to user ‘p1′@’localhost’ for routine ‘pyt.pro_shop’

标签:MySQL,权限
0
投稿

猜你喜欢

  • asp无组件备份与还原数据库

    2007-09-24 13:19:00
  • XML入门精解之文件格式定义

    2008-02-25 13:57:00
  • Response.Flush的使用心得

    2010-04-08 12:57:00
  • 详解ASP中断开记录集的使用方法

    2008-02-13 08:35:00
  • mysql 5.5.8的几个注意事项

    2011-01-04 19:34:00
  • 驯服不听话的网页表格

    2007-12-03 11:36:00
  • JavaScript十二月新标准ECMA262v5快速浏览

    2009-12-27 12:56:00
  • 比较SQL Server与Oracle、DB2三种数据库

    2008-09-12 17:24:00
  • IE7下 filter:Alpha(opacity=xx) 的小问题

    2008-12-02 16:24:00
  • 模拟兼容性的 addDOMLoadEvent 事件

    2009-07-31 12:37:00
  • 5个有效改进网页UI设计的技巧

    2008-12-19 12:04:00
  • MYSQL初学者使用指南[适用自己安装mysql者]

    2007-08-06 14:53:00
  • SEM之医疗网站跳出率 逼迫访客跳出网站的六宗罪

    2012-03-05 20:13:36
  • Access数据库安全问答

    2007-08-23 15:28:00
  • div、section、article 的区别

    2011-02-26 15:39:00
  • ASP短日期格式为长日期

    2009-06-11 12:53:00
  • 三种SQL分页查询的存储过程代码

    2012-01-05 19:31:32
  • 如何上传一个.SQL文件到远程主机并且执行它来部署一个SQL数据库

    2007-09-23 13:03:00
  • SQL Server用触发器强制执行业务规则

    2009-01-20 16:05:00
  • 初窥交互设计

    2009-10-10 10:52:00
  • asp之家 网络编程 m.aspxhome.com