mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
let's always disconnect a user connection before dropping the said user. MariaDB is traditionally very tolerant to active connections of the dropped user, which isn't the case for most other databases. Let's avoid unintentionally spreading incompatible behavior and disconnect before drop. Except in cases when the test specifically tests such a behavior.
85 lines
2.8 KiB
Plaintext
85 lines
2.8 KiB
Plaintext
create database db;
|
|
create role auto_create;
|
|
create user auto_create;
|
|
grant all on db.* to auto_create;
|
|
create user foo@localhost;
|
|
grant auto_create to foo@localhost;
|
|
create user bar@localhost identified by 'baz';
|
|
grant auto_create to bar@localhost;
|
|
connect con1,localhost,foo,,;
|
|
set role 'auto_create';
|
|
use db;
|
|
create table t1 (i int);
|
|
disconnect con1;
|
|
connect con1,localhost,bar,baz,;
|
|
set role auto_create;
|
|
use db;
|
|
insert into t1 values (1);
|
|
disconnect con1;
|
|
connection default;
|
|
drop user foo@localhost, bar@localhost;
|
|
set sql_mode = 'no_auto_create_user';
|
|
grant auto_create to foo@localhost;
|
|
ERROR 28000: Can't find any matching row in the user table
|
|
grant auto_create to bar@localhost identified by 'baz';
|
|
select user, host from mysql.user where user = 'bar';
|
|
User Host
|
|
bar localhost
|
|
set sql_mode = '';
|
|
connect con1,localhost,bar,baz,;
|
|
set role auto_create;
|
|
use db;
|
|
drop table t1;
|
|
disconnect con1;
|
|
connection default;
|
|
create user foo@localhost;
|
|
connect con1, localhost, foo,,;
|
|
set sql_mode = '';
|
|
grant auto_create to bar2@localhost;
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
grant auto_create to foo2@localhost;
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
set sql_mode = 'no_auto_create_user';
|
|
grant auto_create to bar2@localhost;
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
grant auto_create to foo2@localhost identified by 'pass';
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
disconnect con1;
|
|
connection default;
|
|
grant auto_create to foo@localhost;
|
|
connect con1, localhost, foo,,;
|
|
set sql_mode = '';
|
|
grant auto_create to bar@localhost;
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
grant auto_create to bar2@localhost;
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
grant auto_create to foo2@localhost identified by 'pass';
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
set sql_mode = 'no_auto_create_user';
|
|
grant auto_create to bar2@localhost;
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
grant auto_create to foo2@localhost identified by 'pass';
|
|
ERROR 28000: Access denied for user 'foo'@'localhost'
|
|
connection default;
|
|
grant auto_create to foo@localhost with admin option;
|
|
disconnect con1;
|
|
connect con1, localhost, foo,,;
|
|
set sql_mode = '';
|
|
grant auto_create to bar@localhost;
|
|
grant auto_create to bar2@localhost;
|
|
ERROR 42000: You are not allowed to create a user with GRANT
|
|
grant auto_create to foo2@localhost identified by 'pass';
|
|
ERROR 42000: You are not allowed to create a user with GRANT
|
|
set sql_mode = 'no_auto_create_user';
|
|
grant auto_create to bar2@localhost;
|
|
ERROR 28000: Can't find any matching row in the user table
|
|
grant auto_create to foo2@localhost identified by 'pass';
|
|
ERROR 42000: You are not allowed to create a user with GRANT
|
|
connection default;
|
|
disconnect con1;
|
|
drop user foo@localhost;
|
|
drop user bar@localhost;
|
|
drop role auto_create;
|
|
drop user auto_create;
|
|
drop database db;
|