331 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			331 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | # This test is to check various cases of connections | ||
|  | # with right and wrong password, with and without database | ||
|  | # Unfortunately the check is incomplete as we can't connect without database | ||
|  | 
 | ||
|  | # This test makes no sense with the embedded server | ||
|  | --source include/not_embedded.inc | ||
|  | 
 | ||
|  | # check that CSV engine was compiled in, as the test relies on the presence | ||
|  | # of the log tables (which are CSV-based). By connect mysql; show tables; | ||
|  | --source include/have_csv.inc | ||
|  | 
 | ||
|  | # Save the initial number of concurrent sessions | ||
|  | --source include/count_sessions.inc | ||
|  | 
 | ||
|  | 
 | ||
|  | --disable_warnings | ||
|  | drop table if exists t1,t2; | ||
|  | --enable_warnings | ||
|  | 
 | ||
|  | #connect (con1,localhost,root,,""); | ||
|  | #show tables; | ||
|  | connect (con1,localhost,root,,mysql); | ||
|  | show tables; | ||
|  | connect (con2,localhost,root,,test); | ||
|  | show tables; | ||
|  | 
 | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,root,z,test2); | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,root,z,); | ||
|  | 
 | ||
|  | connection default; | ||
|  | disconnect con1; | ||
|  | disconnect con2; | ||
|  | 
 | ||
|  | grant ALL on *.* to test@localhost identified by "gambling"; | ||
|  | grant ALL on *.* to test@127.0.0.1 identified by "gambling"; | ||
|  | 
 | ||
|  | # Now check this user with different databases | ||
|  | #connect (con1,localhost,test,gambling,""); | ||
|  | #show tables; | ||
|  | connect (con3,localhost,test,gambling,mysql); | ||
|  | show tables; | ||
|  | connect (con4,localhost,test,gambling,test); | ||
|  | show tables; | ||
|  | 
 | ||
|  | connection default; | ||
|  | disconnect con3; | ||
|  | disconnect con4; | ||
|  | 
 | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,test,,test2); | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | # Need to protect "" within '' so it's interpreted literally | ||
|  | connect (fail_con,localhost,test,,'""'); | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,test,zorro,test2); | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,test,zorro,); | ||
|  | 
 | ||
|  | # check if old password version also works | ||
|  | update mysql.user set password=old_password("gambling2") where user=_binary"test"; | ||
|  | flush privileges; | ||
|  | 
 | ||
|  | connect (con10,localhost,test,gambling2,); | ||
|  | connect (con5,localhost,test,gambling2,mysql); | ||
|  | connection con5; | ||
|  | set password=""; | ||
|  | --error ER_PASSWD_LENGTH | ||
|  | set password='gambling3'; | ||
|  | set password=old_password('gambling3'); | ||
|  | show tables; | ||
|  | connect (con6,localhost,test,gambling3,test); | ||
|  | show tables; | ||
|  | 
 | ||
|  | connection default; | ||
|  | disconnect con10; | ||
|  | disconnect con5; | ||
|  | disconnect con6; | ||
|  | 
 | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,test,,test2); | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,test,,); | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,test,zorro,test2); | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | --error ER_ACCESS_DENIED_ERROR | ||
|  | connect (fail_con,localhost,test,zorro,); | ||
|  | 
 | ||
|  | 
 | ||
|  | # remove user 'test' so that other tests which may use 'test' | ||
|  | # do not depend on this test. | ||
|  | delete from mysql.user where user=_binary"test"; | ||
|  | flush privileges; | ||
|  | 
 | ||
|  | # | ||
|  | # Bug#12517 Clear user variables and replication events before | ||
|  | #           closing temp tables in thread cleanup. | ||
|  | connect (con7,localhost,root,,test); | ||
|  | connection con7; | ||
|  | let $connection_id= `select connection_id()`; | ||
|  | create table t1 (id integer not null auto_increment primary key); | ||
|  | create temporary table t2(id integer not null auto_increment primary key); | ||
|  | set @id := 1; | ||
|  | delete from t1 where id like @id; | ||
|  | connection default; | ||
|  | disconnect con7; | ||
|  | # Wait till the session con7 is disconnected | ||
|  | let $wait_condition = | ||
|  |   SELECT COUNT(*) = 0 | ||
|  |   FROM information_schema.processlist | ||
|  |   WHERE  id = '$connection_id'; | ||
|  | --source include/wait_condition.inc | ||
|  | drop table t1; | ||
|  | 
 | ||
|  | --echo # ------------------------------------------------------------------ | ||
|  | --echo # -- End of 4.1 tests | ||
|  | --echo # ------------------------------------------------------------------ | ||
|  | 
 | ||
|  | ########################################################################### | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Bug#33507: Event scheduler creates more threads than max_connections | ||
|  | --echo # -- which results in user lockout. | ||
|  | 
 | ||
|  | --echo | ||
|  | GRANT USAGE ON *.* TO mysqltest_u1@localhost; | ||
|  | 
 | ||
|  | # NOTE: if the test case fails sporadically due to spurious connections, | ||
|  | # consider disabling all users. | ||
|  | 
 | ||
|  | --echo | ||
|  | let $saved_max_connections = `SELECT @@global.max_connections`; | ||
|  | SET GLOBAL max_connections = 3; | ||
|  | SET GLOBAL event_scheduler = ON; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Waiting for Event Scheduler to start... | ||
|  | let $wait_condition = | ||
|  |   SELECT COUNT(*) = 1 | ||
|  |   FROM information_schema.processlist | ||
|  |   WHERE user = 'event_scheduler'; | ||
|  | --source include/wait_condition.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Disconnecting default connection... | ||
|  | --disconnect default | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Check that we allow exactly three user connections, no matter how | ||
|  | --echo # -- many threads are running. | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Connecting (1)... | ||
|  | let $con_name = con_1; | ||
|  | let $con_user_name = mysqltest_u1; | ||
|  | --source include/connect2.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Connecting (2)... | ||
|  | let $con_name = con_2; | ||
|  | let $con_user_name = mysqltest_u1; | ||
|  | --source include/connect2.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Connecting (3)... | ||
|  | let $con_name = con_3; | ||
|  | let $con_user_name = mysqltest_u1; | ||
|  | --source include/connect2.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Connecting (4) [should fail]... | ||
|  | let $con_name = con_4; | ||
|  | let $con_user_name = mysqltest_u1; | ||
|  | let $wait_timeout = 5; | ||
|  | --source include/connect2.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Check that we allow one extra SUPER-user connection. | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Connecting super (1)... | ||
|  | let $con_name = con_super_1; | ||
|  | let $con_user_name = root; | ||
|  | --source include/connect2.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Connecting super (2) [should fail]... | ||
|  | let $con_name = con_super_2; | ||
|  | let $con_user_name = root; | ||
|  | let $wait_timeout = 5; | ||
|  | --source include/connect2.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Ensure that we have Event Scheduler thread, 3 ordinary user | ||
|  | --echo # -- connections and one extra super-user connection. | ||
|  | SELECT user FROM information_schema.processlist ORDER BY id; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Resetting variables... | ||
|  | --eval SET GLOBAL max_connections = $saved_max_connections | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Stopping Event Scheduler... | ||
|  | SET GLOBAL event_scheduler = OFF; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Waiting for Event Scheduler to stop... | ||
|  | let $wait_condition = | ||
|  |   SELECT COUNT(*) = 0 | ||
|  |   FROM information_schema.processlist | ||
|  |   WHERE user = 'event_scheduler'; | ||
|  | --source include/wait_condition.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- That's it. Closing connections... | ||
|  | --disconnect con_1 | ||
|  | --disconnect con_2 | ||
|  | --disconnect con_3 | ||
|  | --disconnect con_super_1 | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Restoring default connection... | ||
|  | --connect (default,localhost,root,,test) | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Waiting for connections to close... | ||
|  | let $wait_condition = | ||
|  |   SELECT COUNT(*) = 1 | ||
|  |   FROM information_schema.processlist | ||
|  |   WHERE db = 'test'; | ||
|  | --source include/wait_condition.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | DROP USER mysqltest_u1@localhost; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- End of Bug#33507. | ||
|  | --echo | ||
|  | 
 | ||
|  | ########################################################################### | ||
|  | 
 | ||
|  | --echo # -- Bug#35074: max_used_connections is not correct. | ||
|  | --echo | ||
|  | 
 | ||
|  | FLUSH STATUS; | ||
|  | 
 | ||
|  | --echo | ||
|  | SHOW STATUS LIKE 'max_used_connections'; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Starting Event Scheduler... | ||
|  | SET GLOBAL event_scheduler = ON; | ||
|  | 
 | ||
|  | --echo # -- Waiting for Event Scheduler to start... | ||
|  | --source include/running_event_scheduler.inc | ||
|  | 
 | ||
|  | # NOTE: We should use a new connection here instead of reconnect in order to | ||
|  | # avoid races (we can not for sure when the connection being disconnected is | ||
|  | # actually disconnected on the server). | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Opening a new connection to check max_used_connections... | ||
|  | --connect (con_1,localhost,root) | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Check that max_used_connections hasn't changed. | ||
|  | SHOW STATUS LIKE 'max_used_connections'; | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Closing new connection... | ||
|  | --disconnect con_1 | ||
|  | --connection default | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- Stopping Event Scheduler... | ||
|  | SET GLOBAL event_scheduler = OFF; | ||
|  | 
 | ||
|  | --echo # -- Waiting for Event Scheduler to stop... | ||
|  | --source include/no_running_events.inc | ||
|  | 
 | ||
|  | --echo | ||
|  | --echo # -- End of Bug#35074. | ||
|  | --echo | ||
|  | 
 | ||
|  | 
 | ||
|  | ########################################################################### | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # -- Bug#49752: 2469.126.2 unintentionally breaks authentication | ||
|  | --echo #               against MySQL 5.1 server | ||
|  | --echo # | ||
|  | 
 | ||
|  | GRANT ALL ON test.* TO 'Azundris12345678'@'localhost' IDENTIFIED BY 'test123'; | ||
|  | 
 | ||
|  | FLUSH PRIVILEGES; | ||
|  | 
 | ||
|  | --replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT | ||
|  | connect (con1,localhost,Azundris123456789,test123,test); | ||
|  | disconnect con1; | ||
|  | 
 | ||
|  | connection default; | ||
|  | 
 | ||
|  | DROP USER 'Azundris12345678'@'localhost'; | ||
|  | 
 | ||
|  | FLUSH PRIVILEGES; | ||
|  | 
 | ||
|  | --echo # | ||
|  | --echo # -- End of Bug#49752 | ||
|  | --echo # | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | --echo # ------------------------------------------------------------------ | ||
|  | --echo # -- End of 5.1 tests | ||
|  | --echo # ------------------------------------------------------------------ | ||
|  | 
 | ||
|  | # Wait till all disconnects are completed | ||
|  | --source include/wait_until_count_sessions.inc | ||
|  | 
 |