您当前的位置: 首页 > 数据库教程 > MySQL教程 > MySQL权限的详细解答

MySQL权限的详细解答

作者:不详 来源:网络 发布时间: 2014-07-26 22:09 点击:
- 一.权限表 mysql数据库中的3个权限表:user 、db、 host 权限表的存取过程是: 1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证; 2) 通过权限验证,进行权限分配时,按照user?db?tables_priv?colum

MySQL权限的详细解答

  -

  一.权限表

  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 alterdrop} {procedurefunction}

  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} {procedurefunction}

  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’

  11. update

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

  mysql> update shop set price=3.5 where article=0001 and dealer=’A’;

  12. delete

  必须有delete的权限,才可以使用delete from ….where….(删除表中的记录)

  13. drop

  必须有drop的权限,才可以使用drop database db_name; drop table tab_name;

  drop view vi_name; drop index in_name;

  14. show database

  通过show database只能看到你拥有的某些权限的数据库,除非你拥有全局SHOW DATABASES权限。

  对于p1@localhost用户来说,没有对mysql数据库的权限,所以以此身份登陆查询时,无法看到mysql数据库:

  mysql> show databases;

  +——————–+

  Database

  +——————–+

  information_schema

  pyt

  test

  +——————–+

  15. show view

  必须拥有show view权限,才能执行show create view。

  mysql> grant show view on pyt.* to p1@localho
分享到:
本文"MySQL权限的详细解答"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4