mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			259 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			259 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| create database mysqltest1;
 | |
| create database mysqltest2;
 | |
| create database mysqltest3;
 | |
| create user invoker@localhost;
 | |
| create user definer@localhost;
 | |
| grant select,show view on mysqltest1.* to invoker@localhost;
 | |
| grant select,show view on mysqltest1.* to definer@localhost;
 | |
| grant select,show view on mysqltest2.* to invoker@localhost;
 | |
| grant select,show view on mysqltest2.* to definer@localhost;
 | |
| grant select,show view on mysqltest3.* to invoker@localhost;
 | |
| grant select on performance_schema.* to definer@localhost;
 | |
| create table mysqltest1.t1 (a int);
 | |
| create definer=definer@localhost view mysqltest2.v2 as select * from mysqltest1.t1;
 | |
| create definer=definer@localhost view mysqltest3.v3 as select * from mysqltest2.v2;
 | |
| create definer=definer@localhost view mysqltest3.v3is as select schema_name from information_schema.schemata order by schema_name;
 | |
| create definer=definer@localhost view mysqltest3.v3ps as select user from performance_schema.users where current_connections>0 order by user;
 | |
| create definer=definer@localhost view mysqltest3.v3nt as select 1;
 | |
| create definer=definer@localhost sql security invoker view mysqltest3.v3i as select * from mysqltest1.t1;
 | |
| /*M!999999\- enable the sandbox mode */ 
 | |
| 
 | |
| CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest1` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */;
 | |
| 
 | |
| USE `mysqltest1`;
 | |
| /*!40101 SET @saved_cs_client     = @@character_set_client */;
 | |
| /*!40101 SET character_set_client = utf8mb4 */;
 | |
| CREATE TABLE `t1` (
 | |
|   `a` int(11) DEFAULT NULL
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
 | |
| /*!40101 SET character_set_client = @saved_cs_client */;
 | |
| 
 | |
| CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */;
 | |
| 
 | |
| USE `mysqltest2`;
 | |
| SET @saved_cs_client     = @@character_set_client;
 | |
| SET character_set_client = utf8mb4;
 | |
| /*!50001 CREATE VIEW `v2` AS SELECT
 | |
|  1 AS `a` */;
 | |
| SET character_set_client = @saved_cs_client;
 | |
| 
 | |
| CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqltest3` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */;
 | |
| 
 | |
| USE `mysqltest3`;
 | |
| SET @saved_cs_client     = @@character_set_client;
 | |
| SET character_set_client = utf8mb4;
 | |
| /*!50001 CREATE VIEW `v3` AS SELECT
 | |
|  1 AS `a` */;
 | |
| SET character_set_client = @saved_cs_client;
 | |
| SET @saved_cs_client     = @@character_set_client;
 | |
| SET character_set_client = utf8mb4;
 | |
| /*!50001 CREATE VIEW `v3i` AS SELECT
 | |
|  1 AS `a` */;
 | |
| SET character_set_client = @saved_cs_client;
 | |
| SET @saved_cs_client     = @@character_set_client;
 | |
| SET character_set_client = utf8mb4;
 | |
| /*!50001 CREATE VIEW `v3is` AS SELECT
 | |
|  1 AS `schema_name` */;
 | |
| SET character_set_client = @saved_cs_client;
 | |
| SET @saved_cs_client     = @@character_set_client;
 | |
| SET character_set_client = utf8mb4;
 | |
| /*!50001 CREATE VIEW `v3nt` AS SELECT
 | |
|  1 AS `1` */;
 | |
| SET character_set_client = @saved_cs_client;
 | |
| SET @saved_cs_client     = @@character_set_client;
 | |
| SET character_set_client = utf8mb4;
 | |
| /*!50001 CREATE VIEW `v3ps` AS SELECT
 | |
|  1 AS `user` */;
 | |
| SET character_set_client = @saved_cs_client;
 | |
| 
 | |
| USE `mysqltest1`;
 | |
| 
 | |
| USE `mysqltest2`;
 | |
| /*!50001 DROP VIEW IF EXISTS `v2`*/;
 | |
| /*!50001 SET @saved_cs_client          = @@character_set_client */;
 | |
| /*!50001 SET @saved_cs_results         = @@character_set_results */;
 | |
| /*!50001 SET @saved_col_connection     = @@collation_connection */;
 | |
| /*!50001 SET character_set_client      = latin1 */;
 | |
| /*!50001 SET character_set_results     = latin1 */;
 | |
| /*!50001 SET collation_connection      = latin1_swedish_ci */;
 | |
| /*!50001 CREATE ALGORITHM=UNDEFINED */
 | |
| /*!50013 DEFINER=`definer`@`localhost` SQL SECURITY DEFINER */
 | |
| /*!50001 VIEW `v2` AS select `mysqltest1`.`t1`.`a` AS `a` from `mysqltest1`.`t1` */;
 | |
| /*!50001 SET character_set_client      = @saved_cs_client */;
 | |
| /*!50001 SET character_set_results     = @saved_cs_results */;
 | |
| /*!50001 SET collation_connection      = @saved_col_connection */;
 | |
| 
 | |
| USE `mysqltest3`;
 | |
| /*!50001 DROP VIEW IF EXISTS `v3`*/;
 | |
| /*!50001 SET @saved_cs_client          = @@character_set_client */;
 | |
| /*!50001 SET @saved_cs_results         = @@character_set_results */;
 | |
| /*!50001 SET @saved_col_connection     = @@collation_connection */;
 | |
| /*!50001 SET character_set_client      = latin1 */;
 | |
| /*!50001 SET character_set_results     = latin1 */;
 | |
| /*!50001 SET collation_connection      = latin1_swedish_ci */;
 | |
| /*!50001 CREATE ALGORITHM=UNDEFINED */
 | |
| /*!50013 DEFINER=`definer`@`localhost` SQL SECURITY DEFINER */
 | |
| /*!50001 VIEW `v3` AS select `v2`.`a` AS `a` from `mysqltest2`.`v2` */;
 | |
| /*!50001 SET character_set_client      = @saved_cs_client */;
 | |
| /*!50001 SET character_set_results     = @saved_cs_results */;
 | |
| /*!50001 SET collation_connection      = @saved_col_connection */;
 | |
| /*!50001 DROP VIEW IF EXISTS `v3i`*/;
 | |
| /*!50001 SET @saved_cs_client          = @@character_set_client */;
 | |
| /*!50001 SET @saved_cs_results         = @@character_set_results */;
 | |
| /*!50001 SET @saved_col_connection     = @@collation_connection */;
 | |
| /*!50001 SET character_set_client      = latin1 */;
 | |
| /*!50001 SET character_set_results     = latin1 */;
 | |
| /*!50001 SET collation_connection      = latin1_swedish_ci */;
 | |
| /*!50001 CREATE ALGORITHM=UNDEFINED */
 | |
| /*!50013 DEFINER=`definer`@`localhost` SQL SECURITY INVOKER */
 | |
| /*!50001 VIEW `v3i` AS select `mysqltest1`.`t1`.`a` AS `a` from `mysqltest1`.`t1` */;
 | |
| /*!50001 SET character_set_client      = @saved_cs_client */;
 | |
| /*!50001 SET character_set_results     = @saved_cs_results */;
 | |
| /*!50001 SET collation_connection      = @saved_col_connection */;
 | |
| /*!50001 DROP VIEW IF EXISTS `v3is`*/;
 | |
| /*!50001 SET @saved_cs_client          = @@character_set_client */;
 | |
| /*!50001 SET @saved_cs_results         = @@character_set_results */;
 | |
| /*!50001 SET @saved_col_connection     = @@collation_connection */;
 | |
| /*!50001 SET character_set_client      = latin1 */;
 | |
| /*!50001 SET character_set_results     = latin1 */;
 | |
| /*!50001 SET collation_connection      = latin1_swedish_ci */;
 | |
| /*!50001 CREATE ALGORITHM=UNDEFINED */
 | |
| /*!50013 DEFINER=`definer`@`localhost` SQL SECURITY DEFINER */
 | |
| /*!50001 VIEW `v3is` AS select `information_schema`.`schemata`.`SCHEMA_NAME` AS `schema_name` from `information_schema`.`schemata` order by `information_schema`.`schemata`.`SCHEMA_NAME` */;
 | |
| /*!50001 SET character_set_client      = @saved_cs_client */;
 | |
| /*!50001 SET character_set_results     = @saved_cs_results */;
 | |
| /*!50001 SET collation_connection      = @saved_col_connection */;
 | |
| /*!50001 DROP VIEW IF EXISTS `v3nt`*/;
 | |
| /*!50001 SET @saved_cs_client          = @@character_set_client */;
 | |
| /*!50001 SET @saved_cs_results         = @@character_set_results */;
 | |
| /*!50001 SET @saved_col_connection     = @@collation_connection */;
 | |
| /*!50001 SET character_set_client      = latin1 */;
 | |
| /*!50001 SET character_set_results     = latin1 */;
 | |
| /*!50001 SET collation_connection      = latin1_swedish_ci */;
 | |
| /*!50001 CREATE ALGORITHM=UNDEFINED */
 | |
| /*!50013 DEFINER=`definer`@`localhost` SQL SECURITY DEFINER */
 | |
| /*!50001 VIEW `v3nt` AS select 1 AS `1` */;
 | |
| /*!50001 SET character_set_client      = @saved_cs_client */;
 | |
| /*!50001 SET character_set_results     = @saved_cs_results */;
 | |
| /*!50001 SET collation_connection      = @saved_col_connection */;
 | |
| /*!50001 DROP VIEW IF EXISTS `v3ps`*/;
 | |
| /*!50001 SET @saved_cs_client          = @@character_set_client */;
 | |
| /*!50001 SET @saved_cs_results         = @@character_set_results */;
 | |
| /*!50001 SET @saved_col_connection     = @@collation_connection */;
 | |
| /*!50001 SET character_set_client      = latin1 */;
 | |
| /*!50001 SET character_set_results     = latin1 */;
 | |
| /*!50001 SET collation_connection      = latin1_swedish_ci */;
 | |
| /*!50001 CREATE ALGORITHM=UNDEFINED */
 | |
| /*!50013 DEFINER=`definer`@`localhost` SQL SECURITY DEFINER */
 | |
| /*!50001 VIEW `v3ps` AS select `performance_schema`.`users`.`USER` AS `user` from `performance_schema`.`users` where `performance_schema`.`users`.`CURRENT_CONNECTIONS` > 0 order by `performance_schema`.`users`.`USER` */;
 | |
| /*!50001 SET character_set_client      = @saved_cs_client */;
 | |
| /*!50001 SET character_set_results     = @saved_cs_results */;
 | |
| /*!50001 SET collation_connection      = @saved_col_connection */;
 | |
| connect inv,localhost,invoker;
 | |
| lock table mysqltest3.v3 write;
 | |
| ERROR 42000: Access denied for user 'invoker'@'localhost' to database 'mysqltest3'
 | |
| disconnect inv;
 | |
| connection default;
 | |
| grant lock tables on mysqltest3.* to invoker@localhost;
 | |
| connect inv,localhost,invoker;
 | |
| show create view mysqltest3.v3;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v3	CREATE ALGORITHM=UNDEFINED DEFINER=`definer`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest3`.`v3` AS select `v2`.`a` AS `a` from `mysqltest2`.`v2`	latin1	latin1_swedish_ci
 | |
| show create view mysqltest3.v3is;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v3is	CREATE ALGORITHM=UNDEFINED DEFINER=`definer`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest3`.`v3is` AS select `information_schema`.`schemata`.`SCHEMA_NAME` AS `schema_name` from `information_schema`.`schemata` order by `information_schema`.`schemata`.`SCHEMA_NAME`	latin1	latin1_swedish_ci
 | |
| show create view mysqltest3.v3ps;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v3ps	CREATE ALGORITHM=UNDEFINED DEFINER=`definer`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest3`.`v3ps` AS select `performance_schema`.`users`.`USER` AS `user` from `performance_schema`.`users` where `performance_schema`.`users`.`CURRENT_CONNECTIONS` > 0 order by `performance_schema`.`users`.`USER`	latin1	latin1_swedish_ci
 | |
| show create view mysqltest3.v3nt;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v3nt	CREATE ALGORITHM=UNDEFINED DEFINER=`definer`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest3`.`v3nt` AS select 1 AS `1`	latin1	latin1_swedish_ci
 | |
| show create view mysqltest3.v3i;
 | |
| View	Create View	character_set_client	collation_connection
 | |
| v3i	CREATE ALGORITHM=UNDEFINED DEFINER=`definer`@`localhost` SQL SECURITY INVOKER VIEW `mysqltest3`.`v3i` AS select `mysqltest1`.`t1`.`a` AS `a` from `mysqltest1`.`t1`	latin1	latin1_swedish_ci
 | |
| lock table mysqltest3.v3 write;
 | |
| ERROR HY000: View 'mysqltest3.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
 | |
| lock table mysqltest3.v3i write;
 | |
| ERROR HY000: View 'mysqltest3.v3i' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
 | |
| lock table mysqltest3.v3is write;
 | |
| select * from mysqltest3.v3is;
 | |
| schema_name
 | |
| information_schema
 | |
| mysqltest1
 | |
| mysqltest2
 | |
| performance_schema
 | |
| lock table mysqltest3.v3ps write;
 | |
| select * from mysqltest3.v3ps;
 | |
| user
 | |
| NULL
 | |
| invoker
 | |
| root
 | |
| lock table mysqltest3.v3nt write;
 | |
| select * from mysqltest3.v3nt;
 | |
| 1
 | |
| 1
 | |
| disconnect inv;
 | |
| connection default;
 | |
| grant lock tables on mysqltest2.* to invoker@localhost;
 | |
| connect inv,localhost,invoker;
 | |
| lock table mysqltest3.v3 write;
 | |
| ERROR HY000: View 'mysqltest3.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
 | |
| lock table mysqltest3.v3i write;
 | |
| ERROR HY000: View 'mysqltest3.v3i' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
 | |
| disconnect inv;
 | |
| connection default;
 | |
| grant lock tables on mysqltest1.* to definer@localhost;
 | |
| connect inv,localhost,invoker;
 | |
| lock table mysqltest3.v3 write;
 | |
| select * from mysqltest3.v3;
 | |
| a
 | |
| lock table mysqltest3.v3i write;
 | |
| ERROR HY000: View 'mysqltest3.v3i' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
 | |
| disconnect inv;
 | |
| connection default;
 | |
| grant lock tables on mysqltest1.* to invoker@localhost;
 | |
| connect inv,localhost,invoker;
 | |
| lock table mysqltest3.v3i write;
 | |
| select * from mysqltest3.v3i;
 | |
| a
 | |
| disconnect inv;
 | |
| connection default;
 | |
| drop user invoker@localhost;
 | |
| drop user definer@localhost;
 | |
| drop database mysqltest1;
 | |
| drop database mysqltest2;
 | |
| drop database mysqltest3;
 | |
| #
 | |
| # MDEV-24331 mysqldump fails with "Got error: 1356" if the database contains a view with a subquery
 | |
| #
 | |
| create user u1@localhost;
 | |
| grant all privileges on test.* to u1@localhost;
 | |
| connect con1,localhost,u1;
 | |
| use test;
 | |
| create table t1 (id int not null);
 | |
| create view v1 as select * from (select * from t1) dt;
 | |
| lock table v1 read;
 | |
| disconnect con1;
 | |
| connection default;
 | |
| /*M!999999\- enable the sandbox mode */ 
 | |
| SET @saved_cs_client     = @@character_set_client;
 | |
| SET character_set_client = utf8mb4;
 | |
| /*!50001 CREATE VIEW `v1` AS SELECT
 | |
|  1 AS `id` */;
 | |
| SET character_set_client = @saved_cs_client;
 | |
| /*!50001 DROP VIEW IF EXISTS `v1`*/;
 | |
| /*!50001 SET @saved_cs_client          = @@character_set_client */;
 | |
| /*!50001 SET @saved_cs_results         = @@character_set_results */;
 | |
| /*!50001 SET @saved_col_connection     = @@collation_connection */;
 | |
| /*!50001 SET character_set_client      = latin1 */;
 | |
| /*!50001 SET character_set_results     = latin1 */;
 | |
| /*!50001 SET collation_connection      = latin1_swedish_ci */;
 | |
| /*!50001 CREATE ALGORITHM=UNDEFINED */
 | |
| /*!50013 DEFINER=`u1`@`localhost` SQL SECURITY DEFINER */
 | |
| /*!50001 VIEW `v1` AS select `dt`.`id` AS `id` from (select `t1`.`id` AS `id` from `t1`) `dt` */;
 | |
| /*!50001 SET character_set_client      = @saved_cs_client */;
 | |
| /*!50001 SET character_set_results     = @saved_cs_results */;
 | |
| /*!50001 SET collation_connection      = @saved_col_connection */;
 | |
| drop view v1;
 | |
| drop table t1;
 | |
| drop user u1@localhost;
 | 
