mirror of
https://github.com/MariaDB/server.git
synced 2025-10-07 16:29:16 +02:00

Follow-up patch with adjustments of test files and updates of result files for tests. Some of tests were rewritten slighlty. Everywhere where common pattern used: ----- CREATE USER userA; --connect con1 ... userA ... <sql statements...> --disconnect con1 DROP USER userA; ----- the DROP USER statement has been eclosed into the directive --disable_warnings --enable_warnings This change is caused by the race conddition between --disconnect and DROP USER since a number of currently running sessions established on behalf the user being dropped is counted by holding the rw_lock THD_list_iterator::lock that is not acquired on execution the DROP USER statement but the lock is taken as the last step on handling disconnection (when the client is already sending the next statement). Therefore, for the cases where the command --disconnect precedes the DROP USER statement we hide the possible warnings about presence of active sessions for the user being deleted to make tests deterministic.
90 lines
2.6 KiB
Text
90 lines
2.6 KiB
Text
CREATE ROLE IF NOT EXISTS role1 WITH ADMIN user1;
|
|
Warnings:
|
|
Note 1446 The user specified as a definer ('user1'@'%') does not exist
|
|
SELECT * FROM mysql.roles_mapping;
|
|
Host User Role Admin_option
|
|
% user1 role1 Y
|
|
DROP ROLE role1;
|
|
CREATE OR REPLACE ROLE role1 WITH ADMIN user2;
|
|
Warnings:
|
|
Note 1446 The user specified as a definer ('user2'@'%') does not exist
|
|
SELECT * FROM mysql.roles_mapping WHERE Role='role1';
|
|
Host User Role Admin_option
|
|
% user2 role1 Y
|
|
CREATE OR REPLACE ROLE role1 WITH ADMIN user3;
|
|
Warnings:
|
|
Note 1446 The user specified as a definer ('user3'@'%') does not exist
|
|
SELECT * FROM mysql.roles_mapping WHERE Role='role1';
|
|
Host User Role Admin_option
|
|
% user3 role1 Y
|
|
CREATE ROLE IF NOT EXISTS role1 WITH ADMIN user4;
|
|
Warnings:
|
|
Note 1446 The user specified as a definer ('user4'@'%') does not exist
|
|
Note 1975 Can't create role 'role1'; it already exists
|
|
SELECT * FROM mysql.roles_mapping WHERE Role='role1';
|
|
Host User Role Admin_option
|
|
% user3 role1 Y
|
|
DROP ROLE IF EXISTS role1;
|
|
SELECT * FROM mysql.roles_mapping WHERE Role='role1';
|
|
Host User Role Admin_option
|
|
DROP ROLE IF EXISTS role1;
|
|
Warnings:
|
|
Note 1976 Can't drop role 'role1'; it doesn't exist
|
|
CREATE ROLE role_1;
|
|
CREATE ROLE IF NOT EXISTS role_1;
|
|
Warnings:
|
|
Note 1975 Can't create role 'role_1'; it already exists
|
|
CREATE OR REPLACE ROLE role_1;
|
|
CREATE OR REPLACE ROLE IF NOT EXISTS role_1;
|
|
ERROR HY000: Incorrect usage of OR REPLACE and IF NOT EXISTS
|
|
CREATE ROLE role_1;
|
|
ERROR HY000: Operation CREATE ROLE failed for 'role_1'
|
|
CREATE USER u1@localhost;
|
|
REVOKE SHOW DATABASES ON *.* FROM 'u1'@'localhost';
|
|
GRANT SHOW DATABASES ON *.* TO role_1;
|
|
GRANT role_1 TO u1@localhost;
|
|
connect user_a, localhost, u1,,;
|
|
connection user_a;
|
|
SELECT CURRENT_USER;
|
|
CURRENT_USER
|
|
u1@localhost
|
|
SHOW DATABASES;
|
|
Database
|
|
information_schema
|
|
SELECT CURRENT_ROLE;
|
|
CURRENT_ROLE
|
|
NULL
|
|
SET ROLE role_1;
|
|
SELECT CURRENT_ROLE;
|
|
CURRENT_ROLE
|
|
role_1
|
|
SHOW DATABASES;
|
|
Database
|
|
information_schema
|
|
mtr
|
|
mysql
|
|
performance_schema
|
|
sys
|
|
test
|
|
SET ROLE NONE;
|
|
connect user_b, localhost, root,,;
|
|
connection user_b;
|
|
# Clearing up
|
|
DROP ROLE role_1;
|
|
DROP ROLE IF EXISTS role_1;
|
|
Warnings:
|
|
Note 1976 Can't drop role 'role_1'; it doesn't exist
|
|
DROP ROLE role_1;
|
|
ERROR HY000: Operation DROP ROLE failed for 'role_1'
|
|
DROP USER u1@localhost;
|
|
Warnings:
|
|
Note 4226 Dropped users ['u1'@'localhost'] have active connections. Use KILL CONNECTION if they should not be used anymore.
|
|
CREATE ROLE r;
|
|
GRANT SHOW DATABASES ON *.* TO r;
|
|
CREATE USER foo;
|
|
CREATE USER bar;
|
|
GRANT r TO foo;
|
|
CREATE OR REPLACE USER foo IDENTIFIED WITH non_existing_plugin;
|
|
ERROR HY000: Plugin 'non_existing_plugin' is not loaded
|
|
DROP ROLE r;
|
|
DROP USER bar;
|