82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | -- source include/have_partition.inc | ||
|  | # Grant tests not performed with embedded server | ||
|  | -- source include/not_embedded.inc | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | drop schema if exists mysqltest_1; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #17139: ALTER TABLE ... DROP PARTITION should require DROP privilege | ||
|  | # | ||
|  | 
 | ||
|  | create schema mysqltest_1; | ||
|  | use mysqltest_1; | ||
|  | 
 | ||
|  | create table t1 (a int) partition by list (a) (partition p1 values in (1), partition p2 values in (2), partition p3 values in (3)); | ||
|  | insert into t1 values (1),(2); | ||
|  | 
 | ||
|  | # We don't have DROP USER IF EXISTS. Use this workaround to | ||
|  | # cleanup possible grants for mysqltest_1 left by previous tests | ||
|  | # and ensure consistent results of SHOW GRANTS command below. | ||
|  | --disable_warnings | ||
|  | grant usage on *.* to mysqltest_1@localhost; | ||
|  | revoke all privileges on *.* from mysqltest_1@localhost; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | grant select,alter on mysqltest_1.* to mysqltest_1@localhost; | ||
|  | 
 | ||
|  | connect (conn1,localhost,mysqltest_1,,mysqltest_1); | ||
|  | show grants for current_user; | ||
|  | alter table t1 add b int; | ||
|  | --error ER_TABLEACCESS_DENIED_ERROR | ||
|  | alter table t1 drop partition p2; | ||
|  | disconnect conn1; | ||
|  | 
 | ||
|  | connection default; | ||
|  | grant drop on mysqltest_1.* to mysqltest_1@localhost; | ||
|  | 
 | ||
|  | connect (conn2,localhost,mysqltest_1,,mysqltest_1); | ||
|  | alter table t1 drop partition p2; | ||
|  | disconnect conn2; | ||
|  | 
 | ||
|  | connection default; | ||
|  | revoke alter on mysqltest_1.* from mysqltest_1@localhost; | ||
|  | 
 | ||
|  | connect (conn3,localhost,mysqltest_1,,mysqltest_1); | ||
|  | --error ER_TABLEACCESS_DENIED_ERROR | ||
|  | alter table t1 drop partition p3; | ||
|  | disconnect conn3; | ||
|  | 
 | ||
|  | connection default; | ||
|  | 
 | ||
|  | revoke select,alter,drop on mysqltest_1.* from mysqltest_1@localhost; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #23675 Partitions: possible security breach via alter  | ||
|  | # | ||
|  | 
 | ||
|  | create table t1 (s1 int); | ||
|  | insert into t1 values (1); | ||
|  | grant alter on mysqltest_1.* to mysqltest_1@localhost; | ||
|  | connect (conn4,localhost,mysqltest_1,,mysqltest_1); | ||
|  | connection conn4; | ||
|  | --error ER_NO_PARTITION_FOR_GIVEN_VALUE | ||
|  | alter table t1 partition by list (s1) (partition p1 values in (2)); | ||
|  | connection default; | ||
|  | grant select, alter on mysqltest_1.* to mysqltest_1@localhost; | ||
|  | disconnect conn4; | ||
|  | connect (conn5,localhost,mysqltest_1,,mysqltest_1); | ||
|  | --error ER_NO_PARTITION_FOR_GIVEN_VALUE | ||
|  | alter table t1 partition by list (s1) (partition p1 values in (2)); | ||
|  | disconnect conn5; | ||
|  | connection default; | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | drop user mysqltest_1@localhost; | ||
|  | drop schema mysqltest_1; | ||
|  | 
 | ||
|  | --echo End of 5.1 tests |