mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
d6e3d89c80
SUPER privilege used to allow various actions that were alternatively allowed by one of BINLOG ADMIN, BINLOG MONITOR, BINLOG REPLAY, CONNECTION ADMIN, FEDERATED ADMIN, REPL MASTER ADMIN, REPL SLAVE ADMIN, SET USER, SLAVE MONITOR. Now SUPER no longer does that, one has to grant one of the fine-grained privileges above to be to perform corresponding actions. On upgrade from MariaDB versions 10.11 and below all the privileges above are granted automatically if the user has SUPER. As a side-effect, such an upgrade will allow SUPER-user to run SHOW BINLOG EVENTS, SHOW RELAYLOG EVENTS, SHOW SLAVE HOSTS, even if he wasn't able to do it before the upgrade.
66 lines
1.7 KiB
Text
66 lines
1.7 KiB
Text
-- source include/not_embedded.inc
|
|
|
|
--echo #
|
|
--echo # Start of 10.5 tests
|
|
--echo #
|
|
|
|
--echo #
|
|
--echo # MDEV-21743 Split up SUPER privilege to smaller privileges
|
|
--echo #
|
|
--disable_service_connection
|
|
|
|
--let $count_sessions=1
|
|
|
|
--echo #
|
|
--echo # Test that KILL is not allowed without CONNECTION ADMIN
|
|
--echo #
|
|
|
|
CREATE USER foo@localhost;
|
|
GRANT SELECT ON *.* TO foo@localhost;
|
|
CREATE USER bar@localhost;
|
|
GRANT ALL PRIVILEGES ON *.* TO bar@localhost;
|
|
REVOKE CONNECTION ADMIN ON *.* FROM bar@localhost;
|
|
--connect (foo,localhost,foo,,)
|
|
let $id=`(SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE user='foo')`;
|
|
--connect (bar,localhost,bar,,)
|
|
SELECT user FROM information_schema.processlist ORDER BY user;
|
|
--replace_result $id ID
|
|
--error ER_KILL_DENIED_ERROR
|
|
--eval KILL $id
|
|
--disconnect foo
|
|
--disconnect bar
|
|
--connection default
|
|
--source include/wait_until_count_sessions.inc
|
|
DROP USER foo@localhost;
|
|
DROP USER bar@localhost;
|
|
|
|
--echo #
|
|
--echo # Test that KILL is allowed with CONNECTION ADMIN
|
|
--echo #
|
|
|
|
CREATE USER foo@localhost;
|
|
GRANT SELECT ON *.* TO foo@localhost;
|
|
CREATE USER bar@localhost;
|
|
GRANT PROCESS, CONNECTION ADMIN ON *.* TO bar@localhost;
|
|
--connect (foo,localhost,foo,,)
|
|
let $id=`(SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE user='foo')`;
|
|
--connect (bar,localhost,bar,,)
|
|
SELECT user FROM information_schema.processlist ORDER BY user;
|
|
--replace_result $id ID
|
|
--eval KILL $id
|
|
--connection default
|
|
let $wait_condition=
|
|
select count(*) = 0 from information_schema.processlist
|
|
where user = "foo";
|
|
--source include/wait_condition.inc
|
|
--disconnect foo
|
|
--disconnect bar
|
|
--source include/wait_until_count_sessions.inc
|
|
DROP USER foo@localhost;
|
|
DROP USER bar@localhost;
|
|
|
|
--enable_service_connection
|
|
|
|
--echo #
|
|
--echo # End of 10.5 tests
|
|
--echo #
|