mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
a3099a3b4a
Also increase user name up to 128. The work was started by Rucha Deodhar <rucha.deodhar@mariadb.com>, contains audit plugin fixes by Alexey Botchkov <holyfoot@askmonty.org>.
446 lines
13 KiB
Text
446 lines
13 KiB
Text
SET global secure_auth=0;
|
|
connect con1,localhost,root,,mysql;
|
|
show tables;
|
|
Tables_in_mysql
|
|
column_stats
|
|
columns_priv
|
|
db
|
|
event
|
|
func
|
|
general_log
|
|
global_priv
|
|
gtid_slave_pos
|
|
help_category
|
|
help_keyword
|
|
help_relation
|
|
help_topic
|
|
index_stats
|
|
innodb_index_stats
|
|
innodb_table_stats
|
|
plugin
|
|
proc
|
|
procs_priv
|
|
proxies_priv
|
|
roles_mapping
|
|
servers
|
|
slow_log
|
|
table_stats
|
|
tables_priv
|
|
time_zone
|
|
time_zone_leap_second
|
|
time_zone_name
|
|
time_zone_transition
|
|
time_zone_transition_type
|
|
transaction_registry
|
|
user
|
|
connect con2,localhost,root,,test;
|
|
show tables;
|
|
Tables_in_test
|
|
connect(localhost,root,z,test2,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,root,z,test2;
|
|
ERROR 28000: Access denied for user 'root'@'localhost' (using password: YES)
|
|
connect(localhost,root,z,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,root,z,;
|
|
ERROR 28000: Access denied for user 'root'@'localhost' (using password: YES)
|
|
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";
|
|
connect con3,localhost,test,gambling,mysql;
|
|
show tables;
|
|
Tables_in_mysql
|
|
column_stats
|
|
columns_priv
|
|
db
|
|
event
|
|
func
|
|
general_log
|
|
global_priv
|
|
gtid_slave_pos
|
|
help_category
|
|
help_keyword
|
|
help_relation
|
|
help_topic
|
|
index_stats
|
|
innodb_index_stats
|
|
innodb_table_stats
|
|
plugin
|
|
proc
|
|
procs_priv
|
|
proxies_priv
|
|
roles_mapping
|
|
servers
|
|
slow_log
|
|
table_stats
|
|
tables_priv
|
|
time_zone
|
|
time_zone_leap_second
|
|
time_zone_name
|
|
time_zone_transition
|
|
time_zone_transition_type
|
|
transaction_registry
|
|
user
|
|
connect con4,localhost,test,gambling,test;
|
|
show tables;
|
|
Tables_in_test
|
|
connection default;
|
|
disconnect con3;
|
|
disconnect con4;
|
|
connect(localhost,test,,test2,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,,test2;
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
|
connect(localhost,test,,"",MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,,'""';
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
|
connect(localhost,test,zorro,test2,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,zorro,test2;
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
|
connect(localhost,test,zorro,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,zorro,;
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
|
# switching from mysql.global_priv to mysql.user
|
|
update mysql.user set plugin="", authentication_string="", password=old_password("gambling2") where user=_binary"test";
|
|
flush privileges;
|
|
show grants for test@localhost;
|
|
Grants for test@localhost
|
|
GRANT ALL PRIVILEGES ON *.* TO `test`@`localhost` IDENTIFIED BY PASSWORD '2f27438961437573'
|
|
update mysql.user set plugin='mysql_old_password' where user='test';
|
|
flush privileges;
|
|
show grants for test@localhost;
|
|
Grants for test@localhost
|
|
GRANT ALL PRIVILEGES ON *.* TO `test`@`localhost` IDENTIFIED BY PASSWORD '2f27438961437573'
|
|
connect con10,localhost,test,gambling2,;
|
|
connect con5,localhost,test,gambling2,mysql;
|
|
set password="";
|
|
set password='gambling3';
|
|
ERROR HY000: Password hash should be a 41-digit hexadecimal number
|
|
set password=old_password('gambling3');
|
|
show tables;
|
|
Tables_in_mysql
|
|
column_stats
|
|
columns_priv
|
|
db
|
|
event
|
|
func
|
|
general_log
|
|
global_priv_bak
|
|
gtid_slave_pos
|
|
help_category
|
|
help_keyword
|
|
help_relation
|
|
help_topic
|
|
index_stats
|
|
innodb_index_stats
|
|
innodb_table_stats
|
|
plugin
|
|
proc
|
|
procs_priv
|
|
proxies_priv
|
|
roles_mapping
|
|
servers
|
|
slow_log
|
|
table_stats
|
|
tables_priv
|
|
time_zone
|
|
time_zone_leap_second
|
|
time_zone_name
|
|
time_zone_transition
|
|
time_zone_transition_type
|
|
transaction_registry
|
|
user
|
|
user_bak
|
|
connect con6,localhost,test,gambling3,test;
|
|
show tables;
|
|
Tables_in_test
|
|
connection default;
|
|
disconnect con10;
|
|
disconnect con5;
|
|
disconnect con6;
|
|
connect(localhost,test,,test2,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,,test2;
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
|
connect(localhost,test,,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,,;
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
|
connect(localhost,test,zorro,test2,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,zorro,test2;
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
|
connect(localhost,test,zorro,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect fail_con,localhost,test,zorro,;
|
|
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
|
# switching back from mysql.user to mysql.global_priv
|
|
delete from mysql.user where user=_binary"test";
|
|
connect con7,localhost,root,,test;
|
|
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;
|
|
drop table t1;
|
|
# ------------------------------------------------------------------
|
|
# -- End of 4.1 tests
|
|
# ------------------------------------------------------------------
|
|
|
|
# -- Bug#33507: Event scheduler creates more threads than max_connections
|
|
# -- which results in user lockout.
|
|
|
|
CREATE USER mysqltest_u1@localhost;
|
|
GRANT USAGE ON *.* TO mysqltest_u1@localhost;
|
|
|
|
SET GLOBAL max_connections = 10;
|
|
SET GLOBAL event_scheduler = ON;
|
|
connect tmp_con1,localhost,mysqltest_u1,,;
|
|
connect tmp_con2,localhost,mysqltest_u1,,;
|
|
connect tmp_con3,localhost,mysqltest_u1,,;
|
|
connect tmp_con4,localhost,mysqltest_u1,,;
|
|
connect tmp_con5,localhost,mysqltest_u1,,;
|
|
connect tmp_con6,localhost,mysqltest_u1,,;
|
|
connect tmp_con7,localhost,mysqltest_u1,,;
|
|
connection default;
|
|
|
|
# -- Waiting for Event Scheduler to start...
|
|
|
|
# -- Disconnecting default connection...
|
|
disconnect default;
|
|
|
|
# -- Check that we allow exactly three user connections, no matter how
|
|
# -- many threads are running.
|
|
|
|
# -- Connecting (1)...
|
|
# -- Establishing connection 'con_1' (user: mysqltest_u1)...
|
|
# -- Connection 'con_1' has been established.
|
|
|
|
# -- Connecting (2)...
|
|
# -- Establishing connection 'con_2' (user: mysqltest_u1)...
|
|
# -- Connection 'con_2' has been established.
|
|
|
|
# -- Connecting (3)...
|
|
# -- Establishing connection 'con_3' (user: mysqltest_u1)...
|
|
# -- Connection 'con_3' has been established.
|
|
|
|
# -- Connecting (4) [should fail]...
|
|
# -- Establishing connection 'con_4' (user: mysqltest_u1)...
|
|
# -- Error: can not establish connection 'con_4'.
|
|
|
|
# -- Check that we allow one extra SUPER-user connection.
|
|
|
|
# -- Connecting super (1)...
|
|
# -- Establishing connection 'con_super_1' (user: root)...
|
|
# -- Connection 'con_super_1' has been established.
|
|
|
|
# -- Connecting super (2) [should fail]...
|
|
# -- Establishing connection 'con_super_2' (user: root)...
|
|
# -- Error: can not establish connection 'con_super_2'.
|
|
|
|
# -- Ensure that we have Event Scheduler thread, 3 ordinary user
|
|
# -- connections and one extra super-user connection.
|
|
SELECT user FROM information_schema.processlist ORDER BY id;
|
|
user
|
|
event_scheduler
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
mysqltest_u1
|
|
root
|
|
|
|
# -- Resetting variables...
|
|
SET GLOBAL max_connections = #max_connections#;
|
|
|
|
# -- Stopping Event Scheduler...
|
|
SET GLOBAL event_scheduler = OFF;
|
|
|
|
# -- Waiting for Event Scheduler to stop...
|
|
|
|
# -- That's it. Closing connections...
|
|
disconnect con_1;
|
|
disconnect con_2;
|
|
disconnect con_3;
|
|
disconnect con_super_1;
|
|
disconnect tmp_con1;
|
|
disconnect tmp_con2;
|
|
disconnect tmp_con3;
|
|
disconnect tmp_con4;
|
|
disconnect tmp_con5;
|
|
disconnect tmp_con6;
|
|
disconnect tmp_con7;
|
|
|
|
# -- Restoring default connection...
|
|
connect default,localhost,root,,test;
|
|
|
|
# -- Waiting for connections to close...
|
|
|
|
DROP USER mysqltest_u1@localhost;
|
|
|
|
# -- End of Bug#33507.
|
|
|
|
# -- Bug#35074: max_used_connections is not correct.
|
|
|
|
FLUSH STATUS;
|
|
|
|
SHOW STATUS LIKE 'max_used_connections';
|
|
Variable_name Value
|
|
Max_used_connections 1
|
|
|
|
# -- Starting Event Scheduler...
|
|
SET GLOBAL event_scheduler = ON;
|
|
# -- Waiting for Event Scheduler to start...
|
|
|
|
# -- Opening a new connection to check max_used_connections...
|
|
connect con_1,localhost,root;
|
|
|
|
# -- Check that max_used_connections hasn't changed.
|
|
SHOW STATUS LIKE 'max_used_connections';
|
|
Variable_name Value
|
|
Max_used_connections 2
|
|
|
|
# -- Closing new connection...
|
|
disconnect con_1;
|
|
connection default;
|
|
|
|
# -- Stopping Event Scheduler...
|
|
SET GLOBAL event_scheduler = OFF;
|
|
# -- Waiting for Event Scheduler to stop...
|
|
|
|
# -- End of Bug#35074.
|
|
|
|
connect extracon,127.0.0.1,root,,test,$MASTER_EXTRA_PORT,;
|
|
SELECT 'Connection on extra port ok';
|
|
Connection on extra port ok
|
|
Connection on extra port ok
|
|
connect extracon2,127.0.0.1,root,,test,$MASTER_EXTRA_PORT,;
|
|
SELECT 'Connection on extra port 2 ok';
|
|
Connection on extra port 2 ok
|
|
Connection on extra port 2 ok
|
|
# -- Success: more than --extra-max-connections + 1 normal connections not possible
|
|
#
|
|
# -- Bug#49752: 2469.126.2 unintentionally breaks authentication
|
|
# against MySQL 5.1 server
|
|
#
|
|
GRANT ALL ON test.* TO 'O1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567'@'localhost' IDENTIFIED BY 'test123';
|
|
FLUSH PRIVILEGES;
|
|
connect con1,localhost, O1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567x,test123,test;
|
|
disconnect con1;
|
|
connection default;
|
|
DROP USER 'O1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
#
|
|
# -- End of Bug#49752
|
|
#
|
|
# ------------------------------------------------------------------
|
|
# -- End of 5.1 tests
|
|
# ------------------------------------------------------------------
|
|
disconnect extracon;
|
|
disconnect extracon2;
|
|
connection default;
|
|
CREATE USER mysqltest_up1 IDENTIFIED VIA mysql_native_password using '*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB';
|
|
CREATE USER mysqltest_up2 IDENTIFIED VIA mysql_old_password using '09301740536db389';
|
|
connect(localhost,mysqltest_up1,foo,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect pcon1,localhost,mysqltest_up1,foo,,$MASTER_MYPORT,;
|
|
ERROR 28000: Access denied for user 'mysqltest_up1'@'localhost' (using password: YES)
|
|
connect pcon2,localhost,mysqltest_up1,bar,,$MASTER_MYPORT,;
|
|
select user(), current_user();
|
|
user() current_user()
|
|
mysqltest_up1@localhost mysqltest_up1@%
|
|
disconnect pcon2;
|
|
connect(localhost,mysqltest_up2,newpw,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect pcon3,localhost,mysqltest_up2,newpw,,$MASTER_MYPORT,;
|
|
ERROR 28000: Access denied for user 'mysqltest_up2'@'localhost' (using password: YES)
|
|
connect pcon4,localhost,mysqltest_up2,oldpw,,$MASTER_MYPORT,;
|
|
select user(), current_user();
|
|
user() current_user()
|
|
mysqltest_up2@localhost mysqltest_up2@%
|
|
disconnect pcon4;
|
|
connect(localhost,mysqltest_nouser,newpw,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect pcon5,localhost,mysqltest_nouser,newpw,,$MASTER_MYPORT,;
|
|
ERROR 28000: Access denied for user 'mysqltest_nouser'@'localhost' (using password: YES)
|
|
connect(localhost,mysqltest_nouser,,test,MASTER_PORT,MASTER_SOCKET);
|
|
connect pcon5,localhost,mysqltest_nouser,,,$MASTER_MYPORT,;
|
|
ERROR 28000: Access denied for user 'mysqltest_nouser'@'localhost' (using password: NO)
|
|
connection default;
|
|
# switching from mysql.global_priv to mysql.user
|
|
update mysql.user set plugin='mysql_native_password' where user = 'mysqltest_up1';
|
|
update mysql.user set plugin='mysql_old_password' where user = 'mysqltest_up2';
|
|
select user, password, plugin, authentication_string from mysql.user
|
|
where user like 'mysqltest_up_';
|
|
user password plugin authentication_string
|
|
mysqltest_up1 *E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB mysql_native_password *E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB
|
|
mysqltest_up2 09301740536db389 mysql_old_password 09301740536db389
|
|
flush privileges;
|
|
connect pcon6,localhost,mysqltest_up1,bar,,$MASTER_MYPORT,;
|
|
select user(), current_user();
|
|
user() current_user()
|
|
mysqltest_up1@localhost mysqltest_up1@%
|
|
disconnect pcon6;
|
|
connect pcon7,localhost,mysqltest_up2,oldpw,,$MASTER_MYPORT,;
|
|
select user(), current_user();
|
|
user() current_user()
|
|
mysqltest_up2@localhost mysqltest_up2@%
|
|
disconnect pcon7;
|
|
connection default;
|
|
# switching back from mysql.user to mysql.global_priv
|
|
DROP USER mysqltest_up1@'%';
|
|
DROP USER mysqltest_up2@'%';
|
|
#
|
|
# BUG#1010351: New "via" keyword in 5.2+ can't be used as identifier anymore
|
|
#
|
|
create table t1 (via int);
|
|
alter table t1 add key(via);
|
|
drop table t1;
|
|
create table t1 (col1 int);
|
|
alter table t1 add via int not null;
|
|
drop table t1;
|
|
create procedure p1(x int)
|
|
foo: loop
|
|
if x = 0 then
|
|
leave foo;
|
|
end if;
|
|
select 'test';
|
|
set x = x-1;
|
|
end loop foo|
|
|
call p1(2);
|
|
test
|
|
test
|
|
test
|
|
test
|
|
drop procedure p1;
|
|
SET global secure_auth=default;
|
|
#
|
|
# MDEV-19282: Log more specific warning with log_warnings=2 if
|
|
# connection is aborted prior to authentication
|
|
# MDEV-19277: Add status variable that gets incremented if
|
|
# connection is aborted prior to authentication
|
|
#
|
|
flush status;
|
|
SHOW GLOBAL STATUS LIKE 'Aborted_connects%';
|
|
Variable_name Value
|
|
Aborted_connects 0
|
|
Aborted_connects_preauth 0
|
|
SET GLOBAL log_warnings=2;
|
|
NOT FOUND /This connection closed normally without authentication/ in mysqld.1.err
|
|
# let tcp to detect disconnect
|
|
select sleep(1);
|
|
sleep(1)
|
|
0
|
|
SHOW GLOBAL STATUS LIKE 'Aborted_connects%';
|
|
Variable_name Value
|
|
Aborted_connects 1
|
|
Aborted_connects_preauth 1
|
|
FOUND 1 /This connection closed normally without authentication/ in mysqld.1.err
|
|
SET @save_connect_timeout= @@connect_timeout;
|
|
SET GLOBAL connect_timeout=2;
|
|
SHOW GLOBAL STATUS LIKE 'Aborted_connects%';
|
|
Variable_name Value
|
|
Aborted_connects 2
|
|
Aborted_connects_preauth 2
|
|
FOUND 2 /This connection closed normally without authentication/ in mysqld.1.err
|
|
SET GLOBAL log_warnings=default;
|
|
SET GLOBAL connect_timeout= @save_connect_timeout;
|
|
# End of 10.4 tests
|