mirror of
https://github.com/MariaDB/server.git
synced 2025-08-12 21:41:33 +02: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.
69 lines
2.1 KiB
Text
69 lines
2.1 KiB
Text
--source include/have_udf.inc
|
|
# Grant tests not performed with embedded server
|
|
-- source include/not_embedded.inc
|
|
|
|
set local sql_mode="";
|
|
set global sql_mode="";
|
|
--echo #
|
|
--echo # Tests for checking permission denied on CREATE OR REPLACE if DROP
|
|
--echo # access is revoked
|
|
--echo #
|
|
|
|
--echo # These statements do not need special tests for CREATE OR REPLACE,
|
|
--echo # because they do not have separate permissions for create and drop:
|
|
--echo # CREATE OR REPLACE EVENT (uses EVENT_ACL for both CREATE and DROP)
|
|
--echo # CREATE OR DROP SERVER (uses SUPER_ALC for both CREATE and DROP)
|
|
--echo # CREATE OR DROP TRIGGER (uses TRIGGER_ACL for both CREATE and DROP)
|
|
|
|
SELECT CURRENT_USER;
|
|
CREATE DATABASE db1;
|
|
GRANT ALL ON db1.* TO mysqltest_1@localhost;
|
|
REVOKE DROP ON db1.* FROM mysqltest_1@localhost;
|
|
REVOKE ALTER ROUTINE ON db1.* FROM mysqltest_1@localhost;
|
|
GRANT DELETE ON mysql.* TO mysqltest_1@localhost;
|
|
REVOKE DELETE ON mysql.* FROM mysqltest_1@localhost;
|
|
FLUSH PRIVILEGES;
|
|
|
|
connect (user_a, localhost, mysqltest_1,,);
|
|
connection user_a;
|
|
SELECT CURRENT_USER;
|
|
|
|
# mysqltest_1 has CREATE privilege on db1
|
|
--error ER_DB_CREATE_EXISTS
|
|
CREATE DATABASE db1;
|
|
|
|
# mysqltest_1 has no DROP privilege on db1
|
|
--error ER_DBACCESS_DENIED_ERROR
|
|
CREATE OR REPLACE DATABASE db1;
|
|
|
|
# mysqltest_1 has no any privileges on db2
|
|
--error ER_DBACCESS_DENIED_ERROR
|
|
CREATE OR REPLACE DATABASE db2;
|
|
|
|
USE db1;
|
|
--error ER_TABLEACCESS_DENIED_ERROR
|
|
CREATE OR REPLACE TABLE t1(id INT);
|
|
|
|
--error ER_PROCACCESS_DENIED_ERROR
|
|
CREATE OR REPLACE PROCEDURE proc1 (OUT cnt INT) BEGIN END;
|
|
|
|
--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
|
|
--error ER_DBACCESS_DENIED_ERROR
|
|
eval CREATE OR REPLACE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
|
|
|
|
--error ER_PROCACCESS_DENIED_ERROR
|
|
CREATE OR REPLACE FUNCTION hello(str char(20)) RETURNS TEXT RETURN CONCAT('Hello, ', str, '!');
|
|
|
|
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
|
CREATE OR REPLACE USER u1@localhost;
|
|
|
|
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
|
CREATE OR REPLACE ROLE developer;
|
|
|
|
connection default;
|
|
disconnect user_a;
|
|
SELECT CURRENT_USER;
|
|
DROP DATABASE db1;
|
|
DROP USER mysqltest_1@localhost;
|
|
|
|
set global sql_mode=default;
|