mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-29668 SUPER should not allow actions that have fine-grained dedicated privileges
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.
This commit is contained in:
@ -12,14 +12,14 @@
|
||||
--let $count_sessions=1
|
||||
|
||||
--echo #
|
||||
--echo # Test that KILL is not allowed without CONNECTION ADMIN or SUPER
|
||||
--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, SUPER ON *.* FROM 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,,)
|
||||
@ -59,31 +59,6 @@ let $wait_condition=
|
||||
DROP USER foo@localhost;
|
||||
DROP USER bar@localhost;
|
||||
|
||||
--echo #
|
||||
--echo # Test that KILL is allowed with SUPER
|
||||
--echo #
|
||||
|
||||
CREATE USER foo@localhost;
|
||||
GRANT SELECT ON *.* TO foo@localhost;
|
||||
CREATE USER bar@localhost;
|
||||
GRANT PROCESS, SUPER 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 #
|
||||
|
Reference in New Issue
Block a user