⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 view_grant.test

📁 开启mysql的远程连接的方法 mysql-noinstall-5.1.6-alpha-win32.zip
💻 TEST
📖 第 1 页 / 共 2 页
字号:
grant create view, update, insert on mysqltest.v3 to mysqltest_1@localhost;drop view mysqltest.v3;connection user1;-- error 1143create view mysqltest.v3 as select b from mysqltest.t2;# If we would get more privileges on VIEW then we have on# underlying tables => creation prohibitedconnection root;create table mysqltest.v3 (b int);grant select(b) on mysqltest.v3 to mysqltest_1@localhost;drop table mysqltest.v3;connection user1;-- error 1143create view mysqltest.v3 as select b from mysqltest.t2;# Expression need select privileges-- error 1143create view v4 as select b+1 from mysqltest.t2;connection root;grant create view,update,select on test.* to mysqltest_1@localhost;connection user1;-- error 1143create view v4 as select b+1 from mysqltest.t2;connection root;grant update,select(b) on mysqltest.t2 to mysqltest_1@localhost;connection user1;create view v4 as select b+1 from mysqltest.t2;connection root;REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;drop database mysqltest;drop view v1,v2,v4;## user with global DB privileges#connection root;--disable_warningscreate database mysqltest;--enable_warningscreate table mysqltest.t1 (a int);grant all privileges on mysqltest.* to mysqltest_1@localhost;connection user1;use mysqltest;create view v1 as select * from t1;use test;connection root;revoke all privileges on mysqltest.* from mysqltest_1@localhost;drop database mysqltest;## view definer grants revoking#connection root;--disable_warningscreate database mysqltest;--enable_warningscreate table mysqltest.t1 (a int, b int);grant select on mysqltest.t1 to mysqltest_1@localhost;grant create view,select on test.* to mysqltest_1@localhost;connection user1;create view v1 as select * from mysqltest.t1;connection root;# check view definer informationshow create view v1;revoke select on mysqltest.t1 from mysqltest_1@localhost;-- error ER_VIEW_INVALIDselect * from v1;grant select on mysqltest.t1 to mysqltest_1@localhost;select * from v1;REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;drop view v1;drop database mysqltest;## rights on execution of view underlying functiond (BUG#9505)#connection root;--disable_warningscreate database mysqltest;--enable_warningsuse mysqltest;create table t1 (a int);insert into t1 values (1);create table t2 (s1 int);--disable_warningsdrop function if exists f2;--enable_warningsdelimiter //;create function f2 () returns int begin declare v int; select s1 from t2into v; return v; end//delimiter ;//create algorithm=TEMPTABLE view v1 as select f2() from t1;create algorithm=MERGE view v2 as select f2() from t1;create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select f2() from t1;create algorithm=MERGE SQL SECURITY INVOKER view v4 as select f2() from t1;create SQL SECURITY INVOKER view v5 as select * from v4;grant select on v1 to mysqltest_1@localhost;grant select on v2 to mysqltest_1@localhost;grant select on v3 to mysqltest_1@localhost;grant select on v4 to mysqltest_1@localhost;grant select on v5 to mysqltest_1@localhost;connection user1;use mysqltest;select * from v1;select * from v2;-- error ER_VIEW_INVALIDselect * from v3;-- error ER_VIEW_INVALIDselect * from v4;-- error ER_VIEW_INVALIDselect * from v5;use test;connection root;drop view v1, v2, v3, v4, v5;drop function f2;drop table t1, t2;use test;REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;drop database mysqltest;## revertion of previous test, definer of view lost his/her rights to execute# function#connection root;--disable_warningscreate database mysqltest;--enable_warningsuse mysqltest;create table t1 (a int);insert into t1 values (1);create table t2 (s1 int);--disable_warningsdrop function if exists f2;--enable_warningsdelimiter //;create function f2 () returns int begin declare v int; select s1 from t2into v; return v; end//delimiter ;//grant select on t1 to mysqltest_1@localhost;grant execute on function f2 to mysqltest_1@localhost;grant create view on mysqltest.* to mysqltest_1@localhost;connection user1;use mysqltest;create algorithm=TEMPTABLE view v1 as select f2() from t1;create algorithm=MERGE view v2 as select f2() from t1;create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select f2() from t1;create algorithm=MERGE SQL SECURITY INVOKER view v4 as select f2() from t1;use test;connection root;create view v5 as select * from v1;revoke execute on function f2 from mysqltest_1@localhost;-- error ER_VIEW_INVALIDselect * from v1;-- error ER_VIEW_INVALIDselect * from v2;select * from v3;select * from v4;-- error ER_VIEW_INVALIDselect * from v5;drop view v1, v2, v3, v4, v5;drop function f2;drop table t1, t2;use test;REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;drop database mysqltest;## definer/invoker rights for columns#connection root;--disable_warningscreate database mysqltest;--enable_warningsuse mysqltest;create table t1 (a int);create table v1 (a int);insert into t1 values (1);grant select on t1 to mysqltest_1@localhost;grant select on v1 to mysqltest_1@localhost;grant create view on mysqltest.* to mysqltest_1@localhost;drop table v1;connection user1;use mysqltest;create algorithm=TEMPTABLE view v1 as select *, a as b from t1;create algorithm=MERGE view v2 as select *, a as b from t1;create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select *, a as b from t1;create algorithm=MERGE SQL SECURITY INVOKER view v4 as select *, a as b from t1;create view v5 as select * from v1;use test;connection root;revoke select on t1 from mysqltest_1@localhost;-- error ER_VIEW_INVALIDselect * from v1;-- error ER_VIEW_INVALIDselect * from v2;select * from v3;select * from v4;-- error ER_VIEW_INVALIDselect * from v5;#drop view v1, v2, v3, v4, v5;drop table t1;use test;REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;drop database mysqltest;connection root;--disable_warningscreate database mysqltest;--enable_warningsuse mysqltest;create table t1 (a int);insert into t1 values (1);create algorithm=TEMPTABLE view v1 as select *, a as b from t1;create algorithm=MERGE view v2 as select *, a as b from t1;create algorithm=TEMPTABLE SQL SECURITY INVOKER view v3 as select *, a as b from t1;create algorithm=MERGE SQL SECURITY INVOKER view v4 as select *, a as b from t1;create SQL SECURITY INVOKER view v5 as select * from v4;grant select on v1 to mysqltest_1@localhost;grant select on v2 to mysqltest_1@localhost;grant select on v3 to mysqltest_1@localhost;grant select on v4 to mysqltest_1@localhost;grant select on v5 to mysqltest_1@localhost;connection user1;use mysqltest;select * from v1;select * from v2;-- error ER_VIEW_INVALIDselect * from v3;-- error ER_VIEW_INVALIDselect * from v4;-- error ER_VIEW_INVALIDselect * from v5;use test;connection root;drop view v1, v2, v3, v4, v5;drop table t1;use test;REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;drop database mysqltest;## BUG#14256: definer in view definition is not fully qualified#--disable_warningsdrop view if exists v1;--enable_warnings# Backup anonymous users and remove them. (They get in the way of# the one we test with here otherwise.)create table t1 as select * from mysql.user where user='';delete from mysql.user where user='';flush privileges;# Create the test usergrant all on test.* to 'test14256'@'%';connect (test14256,localhost,test14256,,test);connection test14256;use test;create view v1 as select 42;show create view v1;select definer into @v1def1 from information_schema.views  where table_schema = 'test' and table_name='v1';drop view v1;create definer=`test14256`@`%` view v1 as select 42;show create view v1;select definer into @v1def2 from information_schema.views  where table_schema = 'test' and table_name='v1';drop view v1;select @v1def1, @v1def2, @v1def1=@v1def2;connection root;drop user test14256;# Restore the anonymous users.insert into mysql.user select * from t1;flush privileges;drop table t1;## BUG#14726: freeing stack variable in case of an error of opening# a view when we have locked tables with LOCK TABLES statement.#connection root;--disable_warningscreate database mysqltest;--enable_warningsuse mysqltest;CREATE TABLE t1 (i INT);CREATE VIEW  v1 AS SELECT * FROM t1;SHOW CREATE VIEW v1;GRANT SELECT, LOCK TABLES ON mysqltest.* TO mysqltest_1@localhost;connection user1;use mysqltest;LOCK TABLES v1 READ;-- error ER_TABLEACCESS_DENIED_ERRORSHOW CREATE TABLE v1;UNLOCK TABLES;use test;connection root;use test;drop user mysqltest_1@localhost;drop database mysqltest;## switch to default connaction#disconnect user1;disconnect root;connection default;## DEFINER information check#-- error ER_MALFORMED_DEFINERcreate definer=some_user@`` sql security invoker view v1 as select 1;create definer=some_user@localhost sql security invoker view v1 as select 1;show create view v1;drop view v1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -