mariadb/mysql-test/suite/roles/set_role-9614.result
Sergei Golubchik e3d9369774 cleanup: disconnect before DROP USER
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.
2025-07-16 09:14:33 +07:00

98 lines
2.2 KiB
Text

#
# MDEV-9614 Roles and Users Longer than 6 characters
#
# This test case checks the edge case presented in the MDEV. The
# real issue is actually apparent when the username is longer than the
# rolename.
#
# We need a separate database not including test or test_% names. Due to
# default privileges given on these databases.
#
DROP DATABASE IF EXISTS `bug_db`;
Warnings:
Note 1008 Can't drop database 'bug_db'; database doesn't exist
#
# The first user did not show the bug as john's length is smaller
# than client. The bug is apparent most of the time for usertestjohn.
#
CREATE USER `john`@`%`;
CREATE USER `usertestjohn`@`%`;
CREATE ROLE `client`;
#
# Setup the required tables.
#
CREATE DATABASE `bug_db`;
CREATE TABLE `bug_db`.`t0`(`c0` INT);
#
# Setup select privileges only on the role. Setting the role should give
# select access to bug_db.t0.
#
GRANT SELECT ON `bug_db`.`t0` TO `client`;
GRANT `client` TO `john`@`%`;
GRANT `client` TO `usertestjohn`@`%`;
#
# Check to see grants are set.
#
SHOW GRANTS FOR `john`@`%`;
Grants for john@%
GRANT `client` TO `john`@`%`
GRANT USAGE ON *.* TO `john`@`%`
SHOW GRANTS FOR `usertestjohn`@`%`;
Grants for usertestjohn@%
GRANT `client` TO `usertestjohn`@`%`
GRANT USAGE ON *.* TO `usertestjohn`@`%`
SHOW GRANTS FOR `client`;
Grants for client
GRANT USAGE ON *.* TO `client`
GRANT SELECT ON `bug_db`.`t0` TO `client`
show databases;
Database
bug_db
information_schema
mtr
mysql
performance_schema
sys
test
#
# Try using the database as john.
#
connect john, localhost, john,,information_schema;
show databases;
Database
information_schema
set role client;
show databases;
Database
bug_db
information_schema
use bug_db;
#
# Try using the database as usertestjohn.
#
connect usertestjohn, localhost, usertestjohn,,information_schema;
show databases;
Database
information_schema
set role client;
show databases;
Database
bug_db
information_schema
show grants;
Grants for usertestjohn@%
GRANT `client` TO `usertestjohn`@`%`
GRANT USAGE ON *.* TO `usertestjohn`@`%`
GRANT USAGE ON *.* TO `client`
GRANT SELECT ON `bug_db`.`t0` TO `client`
use bug_db;
#
# Cleanup
#
connection default;
disconnect john;
disconnect usertestjohn;
drop user john;
drop user usertestjohn;
drop role client;
drop database bug_db;