polardbxengine/mysql-test/r/transactional_acl_tables.re...

1928 lines
83 KiB
Plaintext

CALL mtr.add_suppression("Storage engine '.*' does not support system tables. \\[mysql.*\\]");
CALL mtr.add_suppression("Column count of mysql.* is wrong. "
"Expected .*, found .*. "
"The table is probably corrupted");
CALL mtr.add_suppression("Cannot load from mysql.*. The table is probably corrupted");
#
# WL7158: Move privilege system tables from MyISAM to InnoDB
#
SET autocommit= 0;
SET innodb_lock_wait_timeout= 1;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
# Connection: con1
SET autocommit= 0;
SET innodb_lock_wait_timeout= 1;
# Connection: default
########################################################################
# A.1. Checking lock-wait-timeout with CREATE USER.
########################################################################
START TRANSACTION;
INSERT INTO mysql.user(user, host, ssl_cipher, x509_issuer, x509_subject)
VALUES ('u2', 'h', '', '', '');
# Connection: con1
CREATE USER u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.2. Checking lock-wait-timeout with ALTER USER.
########################################################################
CREATE USER u1@h, u2@h, u3@h;
SELECT user, host, password_lifetime FROM mysql.user WHERE host = 'h';
user host password_lifetime
u1 h NULL
u2 h NULL
u3 h NULL
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
ALTER USER u1@h, u2@h, u3@h PASSWORD EXPIRE INTERVAL 250 DAY;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, host, password_lifetime FROM mysql.user WHERE host = 'h';
user host password_lifetime
u1 h 250
u2 h 250
u3 h 250
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.3. Checking lock-wait-timeout with RENAME USER.
########################################################################
CREATE USER u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
RENAME USER u1@h TO u1a@h, u2@h TO u2a@h, u3@h TO u3a@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1a h
u2a h
u3a h
DROP USER u1a@h, u2a@h, u3a@h;
########################################################################
# A.4. Checking lock-wait-timeout with SET PASSWORD.
########################################################################
CREATE USER u1@h IDENTIFIED WITH 'mysql_native_password';
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u1' AND host = 'h' FOR UPDATE;
user host
u1 h
# Connection: con1
SET PASSWORD FOR u1@h = 'xxx';
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, host, authentication_string = '*3D56A309CD04FA2EEF181462E59011F075C89548' FROM mysql.user WHERE host = 'h';
user host authentication_string = '*3D56A309CD04FA2EEF181462E59011F075C89548'
u1 h 1
DROP USER u1@h;
########################################################################
# A.5. Checking lock-wait-timeout with DROP USER.
########################################################################
CREATE USER u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
DROP USER u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
########################################################################
# A.6.1. Checking lock-wait-timeout with GRANT (global level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
GRANT SELECT ON *.* TO u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, select_priv FROM mysql.user WHERE host = 'h';
user select_priv
u1 Y
u2 Y
u3 Y
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.6.2. Checking lock-wait-timeout with GRANT (database level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
GRANT SELECT ON test.* TO u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT * FROM mysql.db WHERE host = 'h';
Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
h test u1 Y N N N N N N N N N N N N N N N N N N
h test u2 Y N N N N N N N N N N N N N N N N N N
h test u3 Y N N N N N N N N N N N N N N N N N N
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.6.3. Checking lock-wait-timeout with GRANT (table level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
CREATE TABLE t1(a INT);
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
GRANT SELECT ON t1 TO u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, table_name, table_priv FROM mysql.tables_priv WHERE host = 'h';
user table_name table_priv
u1 t1 Select
u2 t1 Select
u3 t1 Select
DROP USER u1@h, u2@h, u3@h;
DROP TABLE t1;
########################################################################
# A.6.4. Checking lock-wait-timeout with GRANT (column level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
CREATE TABLE t1(a INT);
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
GRANT SELECT(a) ON t1 TO u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, column_name, column_priv FROM mysql.columns_priv WHERE host = 'h';
user column_name column_priv
u1 a Select
u2 a Select
u3 a Select
DROP USER u1@h, u2@h, u3@h;
DROP TABLE t1;
########################################################################
# A.6.5. Checking lock-wait-timeout with GRANT (stored routine level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
CREATE PROCEDURE p1() SELECT 1;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
GRANT EXECUTE ON PROCEDURE p1 TO u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, routine_name, proc_priv FROM mysql.procs_priv WHERE host = 'h';
user routine_name proc_priv
u1 p1 Execute
u2 p1 Execute
u3 p1 Execute
DROP USER u1@h, u2@h, u3@h;
DROP PROCEDURE p1;
########################################################################
# A.7.1. Checking lock-wait-timeout with REVOKE (global level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT ON *.* TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE SELECT ON *.* FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, select_priv FROM mysql.user WHERE host = 'h';
user select_priv
u1 N
u2 N
u3 N
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.7.2. Checking lock-wait-timeout with REVOKE (database level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT ON test.* TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE SELECT ON test.* FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT * FROM mysql.db WHERE host = 'h';
Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.7.3. Checking lock-wait-timeout with REVOKE (table level).
########################################################################
CREATE TABLE t1(a INT);
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT ON t1 TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE SELECT ON t1 FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT user, table_name, table_priv FROM mysql.tables_priv WHERE host = 'h';
user table_name table_priv
DROP USER u1@h, u2@h, u3@h;
DROP TABLE t1;
########################################################################
# A.7.4. Checking lock-wait-timeout with REVOKE (column level).
########################################################################
CREATE TABLE t1(a INT);
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT(a) ON t1 TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE SELECT(a) ON t1 FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT user, column_name, column_priv FROM mysql.columns_priv WHERE host = 'h';
user column_name column_priv
DROP USER u1@h, u2@h, u3@h;
DROP TABLE t1;
########################################################################
# A.7.5. Checking lock-wait-timeout with REVOKE (stored routine level).
########################################################################
CREATE PROCEDURE p1() SELECT 1;
CREATE USER u1@h, u2@h, u3@h;
GRANT EXECUTE ON PROCEDURE p1 TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE EXECUTE ON PROCEDURE p1 FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT user, routine_name, proc_priv FROM mysql.procs_priv WHERE host = 'h';
user routine_name proc_priv
DROP USER u1@h, u2@h, u3@h;
DROP PROCEDURE p1;
########################################################################
# A.8.1. Checking lock-wait-timeout with REVOKE ALL (global level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT ON *.* TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user, select_priv FROM mysql.user WHERE host = 'h';
user select_priv
u1 N
u2 N
u3 N
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.8.2. Checking lock-wait-timeout with REVOKE ALL (database level).
########################################################################
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT ON test.* TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT * FROM mysql.db WHERE host = 'h';
Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
DROP USER u1@h, u2@h, u3@h;
########################################################################
# A.8.3. Checking lock-wait-timeout with REVOKE ALL (table level).
########################################################################
CREATE TABLE t1(a INT);
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT ON t1 TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT user, table_name, table_priv FROM mysql.tables_priv WHERE host = 'h';
user table_name table_priv
DROP USER u1@h, u2@h, u3@h;
DROP TABLE t1;
########################################################################
# A.8.4. Checking lock-wait-timeout with REVOKE ALL (column level).
########################################################################
CREATE TABLE t1(a INT);
CREATE USER u1@h, u2@h, u3@h;
GRANT SELECT(a) ON t1 TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT user, column_name, column_priv FROM mysql.columns_priv WHERE host = 'h';
user column_name column_priv
DROP USER u1@h, u2@h, u3@h;
DROP TABLE t1;
########################################################################
# A.8.5. Checking lock-wait-timeout with REVOKE ALL (stored routine level).
########################################################################
CREATE PROCEDURE p1() SELECT 1;
CREATE USER u1@h, u2@h, u3@h;
GRANT EXECUTE ON PROCEDURE p1 TO u1@h, u2@h, u3@h;
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u1 h
u2 h
u3 h
START TRANSACTION;
SELECT user, host FROM mysql.user WHERE user = 'u2' AND host = 'h' FOR UPDATE;
user host
u2 h
# Connection: con1
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h, u2@h, u3@h;
# Connection: default
ROLLBACK;
# Connection: con1
# Connection: default
SELECT user FROM mysql.user WHERE host = 'h';
user
u1
u2
u3
SELECT user, routine_name, proc_priv FROM mysql.procs_priv WHERE host = 'h';
user routine_name proc_priv
DROP USER u1@h, u2@h, u3@h;
DROP PROCEDURE p1;
########################################################################
# A.9. Checking lock-wait-timeout with FLUSH PRIVILEGES.
########################################################################
START TRANSACTION;
INSERT INTO mysql.user(user, host, ssl_cipher, x509_issuer, x509_subject)
VALUES ('u2', 'h', '', '', '');
# Connection: con1
FLUSH PRIVILEGES;;
# Connection: default
COMMIT;
# Connection: con1
# Connection: default
SELECT user, host FROM mysql.user WHERE host = 'h';
user host
u2 h
DROP USER u2@h;
########################################################################
# B.1 Check that SET PASSWORD commits a transaction.
########################################################################
CREATE TABLE t1(a INT);
CREATE USER u1@h;
START TRANSACTION;
INSERT INTO t1 VALUES (1), (2), (3);
# Connection: con1
SELECT * FROM t1;
a
ROLLBACK;
# Connection: default
SET PASSWORD FOR u1@h = '';
# Connection: con1
SELECT * FROM t1;
a
1
2
3
ROLLBACK;
# Connection: default
DROP TABLE t1;
########################################################################
# B.2 Check that SET PASSWORD can't be called from a stored function
# directly or indirectly..
########################################################################
CREATE PROCEDURE p1() SET PASSWORD FOR u1@h = '12345';
CREATE FUNCTION f1() RETURNS INT
BEGIN
SET PASSWORD FOR u1@h = '12345';
RETURN 0;
END;
$
ERROR HY000: Not allowed to set autocommit from a stored function or trigger
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p1();
RETURN 0;
END;
$
SELECT f2();
ERROR HY000: Not allowed to set autocommit from a stored function or trigger
DROP FUNCTION f2;
DROP PROCEDURE p1;
DROP USER u1@h;
####################################################################
# C.1. Tests for 'DROP USER' statement
####################################################################
SELECT user, host FROM mysql.user where user like 'user%';
user host
CREATE USER user2@localhost;
SELECT user, host FROM mysql.user where user like 'user%';
user host
user2 localhost
DROP USER user2@localhost;
SELECT user, host FROM mysql.user where user like 'user%';
user host
DROP USER no_user@localhost;
ERROR HY000: Operation DROP USER failed for 'no_user'@'localhost'
SHOW WARNINGS;
Level Code Message
Error 1396 Operation DROP USER failed for 'no_user'@'localhost'
CREATE USER user2@localhost, user3@localhost;
DROP USER no_user@localhost, user3@localhost,
no_user1@localhost, user2@localhost,
no_user2@localhost;
ERROR HY000: Operation DROP USER failed for 'no_user'@'localhost','no_user1'@'localhost','no_user2'@'localhost'
DROP USER user2@localhost, user3@localhost;
SELECT user, host FROM mysql.user where user like 'user%';
user host
####################################################################
# C.2. Tests for 'RENAME USER' statement
####################################################################
SELECT user, host FROM mysql.user where user like 'user%';
user host
CREATE USER user2@localhost;
SELECT user, host FROM mysql.user where user like 'user%';
user host
user2 localhost
RENAME USER user2@localhost TO user3@localhost;
SELECT user, host FROM mysql.user where user like 'user%';
user host
user3 localhost
RENAME USER no_user@localhost to user6@localhost;
ERROR HY000: Operation RENAME USER failed for 'no_user'@'localhost'
SHOW WARNINGS;
Level Code Message
Error 1396 Operation RENAME USER failed for 'no_user'@'localhost'
RENAME USER user3@localhost TO user6@localhost,
no_user@localhost TO user3@localhost;
ERROR HY000: Operation RENAME USER failed for 'no_user'@'localhost'
SHOW WARNINGS;
Level Code Message
Error 1396 Operation RENAME USER failed for 'no_user'@'localhost'
SELECT user, host FROM mysql.user where user like 'user%';
user host
user3 localhost
CREATE user user7@localhost;
RENAME USER user6@localhost TO temp_user@localhost,
user7@localhost TO user4@localhost,
no_user@localhost TO no_user1@localhost,
temp_user@localhost to user7@localhost;
ERROR HY000: Operation RENAME USER failed for 'user6'@'localhost','no_user'@'localhost','temp_user'@'localhost'
SHOW WARNINGS;
Level Code Message
Error 1396 Operation RENAME USER failed for 'user6'@'localhost','no_user'@'localhost','temp_user'@'localhost'
SELECT user, host FROM mysql.user where user like 'user%';
user host
user3 localhost
user7 localhost
RENAME USER no_user@localhost TO user7@localhost,
user7@localhost TO user8@localhost,
no_user1@localhost TO user11@localhost,
user4@localhost TO user7@localhost,
no_user2@localhost TO user12@localhost;
ERROR HY000: Operation RENAME USER failed for 'no_user'@'localhost','no_user1'@'localhost','user4'@'localhost','no_user2'@'localhost'
SHOW WARNINGS;
Level Code Message
Error 1396 Operation RENAME USER failed for 'no_user'@'localhost','no_user1'@'localhost','user4'@'localhost','no_user2'@'localhost'
SELECT user, host FROM mysql.user where user like 'user%';
user host
user3 localhost
user7 localhost
SET debug="+d,wl7158_handle_grant_table_1";
RENAME USER user7@localhost TO user7_1@localhost;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_handle_grant_table_1";
DROP USER user7@localhost;
####################################################################
# C.3. Tests for 'CREATE USER' statement
####################################################################
CREATE USER user2@localhost;
CREATE USER user2@localhost;
ERROR HY000: Operation CREATE USER failed for 'user2'@'localhost'
CREATE USER user3@localhost, user2@localhost, user4@localhost;
ERROR HY000: Operation CREATE USER failed for 'user3'@'localhost','user2'@'localhost'
SHOW WARNINGS;
Level Code Message
Error 1396 Operation CREATE USER failed for 'user3'@'localhost','user2'@'localhost'
SELECT user, host FROM mysql.user where user like 'user%';
user host
user2 localhost
user3 localhost
DROP USER user2@localhost, user3@localhost;
####################################################################
# C.4. Tests for 'ALTER USER' statement
####################################################################
CREATE USER u2@l;
ALTER USER u2@l PASSWORD EXPIRE INTERVAL 5 day;
SELECT user, password_lifetime FROM mysql.user where USER like 'u_';
user password_lifetime
u2 5
ALTER USER u3@l PASSWORD EXPIRE INTERVAL 5 DAY;
ERROR HY000: Operation ALTER USER failed for 'u3'@'l'
ALTER USER u3@l, u2@l, u4@l PASSWORD EXPIRE INTERVAL 7 DAY;
ERROR HY000: Operation ALTER USER failed for 'u3'@'l','u4'@'l'
SHOW WARNINGS;
Level Code Message
Error 1396 Operation ALTER USER failed for 'u3'@'l','u4'@'l'
SELECT user, password_lifetime FROM mysql.user WHERE user LIKE 'u_';
user password_lifetime
u2 5
DROP USER u2@l;
####################################################################
# C.5. Tests for 'GRANT' and 'REVOKE' statement
####################################################################
call mtr.add_suppression("Did not write failed .*");
call mtr.add_suppression("REVOKE/GRANT failed .* An incident event has been written to the binary log which will stop the slaves.");
CREATE TABLE t1(a INT, b INT);
CREATE USER u1@h, u3@h;
GRANT SELECT(a) ON t1 TO u1@h, u3@h;
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
# GRANT on non existing column for non existing user
# (the whole statement fails, no change will be made).
GRANT SELECT(b), SELECT(c), INSERT(b) ON t1 TO u1@h, u2@h, u3@h;
ERROR 42S22: Unknown column 'c' in 't1'
SHOW WARNINGS;
Level Code Message
Error 1054 Unknown column 'c' in 't1'
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
# GRANT for non existing user.
# (only non-existing user components fail).
GRANT SELECT(b) ON t1 TO u1@h, u2@h, u3@h;
ERROR 42000: You are not allowed to create a user with GRANT
SHOW WARNINGS;
Level Code Message
Error 1410 You are not allowed to create a user with GRANT
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
# GRANT on non existing column for u1@h;
GRANT SELECT(b), SELECT(c), INSERT(b) ON t1 TO u1@h;
ERROR 42S22: Unknown column 'c' in 't1'
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
# REVOKE with existing and non existing user (REVOKE removed privileges
# for existing accounts despite an error).
REVOKE SELECT(a) ON t1 FROM u0@h, u1@h, u2@h, u3@h;
ERROR 42000: There is no such grant defined for user 'u0' on host 'h' on table 't1'
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
GRANT SELECT(a) ON t1 TO u1@h;
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
# REVOKE with existing and non existing column
REVOKE SELECT(a), SELECT(b) ON t1 FROM u1@h;
ERROR 42000: There is no such grant defined for user 'u1' on host 'h' on table 't1'
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
GRANT SELECT(a) ON t1 TO u1@h;
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
# REVOKE with existing, non existing column / user.
REVOKE SELECT(a),SELECT(c) ON t1 FROM u1@h;
ERROR 42000: There is no such grant defined for user 'u1' on host 'h' on table 't1'
SELECT user, column_name, column_priv FROM mysql.columns_priv;
user column_name column_priv
u1 a Select
u3 a Select
DROP USER u1@h, u3@h;
DROP TABLE t1;
# Check that the statement REVOKE handles correctly in the case
# when some of a user in the list for REVOKE is deleted manually
# before REVOKE has been run
CREATE USER u1@h;
CREATE USER u2@h;
CREATE SCHEMA test1;
CREATE TABLE test1.t1 (a INT);
GRANT SELECT ON test1.* TO u1@h;
GRANT SELECT ON test1.* TO u2@h;
DELETE FROM mysql.db WHERE host = 'h' AND user = 'u1';
COMMIT;
REVOKE SELECT ON test1.* FROM u1@h, u2@h;
ERROR 42000: There is no such grant defined for user 'u1' on host 'h'
DROP SCHEMA test1;
DROP USER u1@h, u2@h;
# Check that DROP PROCEDURE handles correctly in the case
# when grant information for some user was manually deleted
# from the mysql.procs_priv
CREATE USER u1@h;
CREATE USER u2@h;
CREATE PROCEDURE p1() SET @a :=1;
GRANT EXECUTE ON PROCEDURE p1 TO u1@h;
GRANT EXECUTE ON PROCEDURE p1 TO u2@h;
DELETE FROM mysql.procs_priv WHERE routine_name='p1';
COMMIT;
DROP PROCEDURE p1;
DROP USER u1@h, u2@h;
####################################################################
# D. Simulate the SE failure and check the ACL statement behavior.
####################################################################
CREATE TABLE t1(a INT);
CREATE USER user1@;
GRANT UPDATE (a) ON t1 TO user1@;
SET debug='+d,wl7158_grant_table_1';
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug='-d,wl7158_grant_table_1';
SET debug='+d,wl7158_grant_table_2';
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug='-d,wl7158_grant_table_2';
SET debug='+d,wl7158_grant_table_3';
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug='-d,wl7158_grant_table_3';
DROP USER user1@;
DROP TABLE t1;
CREATE USER u1@h;
CREATE PROCEDURE p() SET @x = 1;
CREATE PROCEDURE p1() SET @y = 1;
GRANT EXECUTE ON PROCEDURE p TO u1@h;
GRANT EXECUTE ON PROCEDURE p1 TO u1@h;
SET debug='+d,wl7158_grant_load_1';
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
Error 1105 Unknown error
SET debug='-d,wl7158_grant_load_1';
SET debug='+d,wl7158_grant_load_proc_1';
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
Error 1105 Unknown error
SET debug='-d,wl7158_grant_load_proc_1';
SET debug='+d,wl7158_grant_load_2';
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
Error 1105 Unknown error
SET debug='-d,wl7158_grant_load_2';
SET debug="+d,wl7158_grant_load_proc_2";
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
Error 1105 Unknown error
SET debug="-d,wl7158_grant_load_proc_2";
FLUSH PRIVILEGES;
GRANT EXECUTE on PROCEDURE p to u1@h;
SET debug="+d,wl7158_grant_load_proc_3";
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
Error 1105 Unknown error
SET debug="-d,wl7158_grant_load_proc_3";
FLUSH PRIVILEGES;
CREATE TABLE t1(a INT);
GRANT SELECT ON t1 TO u1@h;
SET debug='+d,wl7158_grant_load_3';
FLUSH PRIVILEGES;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
Error 1105 Unknown error
SET debug='-d,wl7158_grant_load_3';
DROP TABLE t1;
DROP USER u1@h;
DROP PROCEDURE p;
DROP PROCEDURE p1;
SET debug="+d,wl7158_replace_user_table_1";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
ERROR 42000: There is no such grant defined for user 'u1' on host 'h'
SET debug="-d,wl7158_replace_user_table_1";
CREATE USER u1@h;
SET debug="+d,wl7158_replace_user_table_1";
SET PASSWORD FOR u1@h = 'systpass';
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_replace_user_table_1";
SET debug="+d,wl7158_replace_user_table_2";
SET PASSWORD FOR u1@h = 'systpass';
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_replace_user_table_2";
DROP USER u1@h;
CREATE USER u1@h;
SET debug="+d,wl7158_replace_user_table_1";
ALTER USER u1@h REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA";
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_replace_user_table_1";
ALTER USER u1@h REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA";
GRANT SELECT ON mysqltest.* TO u1@h;
SET debug="+d,wl7158_replace_user_table_2";
ALTER USER u1@h REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA"
AND SUBJECT "testsubject" ISSUER "MySQL";
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT ON `mysqltest`.* TO `u1`@`h`
SET debug="-d,wl7158_replace_user_table_2";
DROP USER u1@h;
SET debug="+d,wl7158_replace_user_table_1";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_replace_user_table_1";
CREATE USER u1@h;
CREATE TABLE t1(a INT);
SET debug="+d,mysql_table_grant_out_of_memory";
CALL mtr.add_suppression(".*Out of memory *");
GRANT SELECT ON t1 TO u1@h;
Got one of the listed errors
SET debug="-d,mysql_table_grant_out_of_memory";
DROP TABLE t1;
DROP USER u1@h;
SET debug="+d,wl7158_replace_user_table_3";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_replace_user_table_3";
CREATE USER u1@h;
SET debug="+d,wl7158_replace_db_table_1";
GRANT SELECT ON mysqltest.* TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_replace_db_table_1";
GRANT SELECT ON mysqltest.* TO u1@h;
SET debug="+d,wl7158_replace_db_table_2";
GRANT SELECT ON mysqltest.* TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT ON `mysqltest`.* TO `u1`@`h`
SET debug="-d,wl7158_replace_db_table_2";
SET debug="+d,wl7158_replace_db_table_3";
REVOKE ALL PRIVILEGES ON mysqltest.* FROM u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT ON `mysqltest`.* TO `u1`@`h`
SET debug="-d,wl7158_replace_db_table_3";
DROP USER u1@h;
CREATE USER u1@h;
SET debug="+d,wl7158_replace_db_table_4";
GRANT SELECT ON mysqltest.* TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_replace_db_table_4";
DROP USER u1@h;
SET debug="+d,mysql_handle_grant_data_fail_on_routine_table";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,mysql_handle_grant_data_fail_on_routine_table";
SET debug="+d,mysql_handle_grant_data_fail_on_tables_table";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,mysql_handle_grant_data_fail_on_tables_table";
SET debug="+d,mysql_handle_grant_data_fail_on_columns_table";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,mysql_handle_grant_data_fail_on_columns_table";
SET debug="+d,mysql_handle_grant_data_fail_on_proxies_priv_table";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,mysql_handle_grant_data_fail_on_proxies_priv_table";
SET debug="+d,wl7158_handle_grant_table_1";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
ERROR 42000: There is no such grant defined for user 'u1' on host 'h'
SET debug="-d,wl7158_handle_grant_table_1";
SET debug="+d,wl7158_handle_grant_table_2";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
ERROR 42000: There is no such grant defined for user 'u1' on host 'h'
SET debug="-d,wl7158_handle_grant_table_2";
SET debug="+d,wl7158_handle_grant_table_3";
CREATE USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
ERROR 42000: There is no such grant defined for user 'u1' on host 'h'
SET debug="-d,wl7158_handle_grant_table_3";
CREATE USER u1@h;
SET debug="+d,wl7158_modify_grant_table_1";
rename user u1@h to u2@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u2@h;
ERROR 42000: There is no such grant defined for user 'u2' on host 'h'
SHOW WARNINGS;
Level Code Message
Error 1141 There is no such grant defined for user 'u2' on host 'h'
SET debug="-d,wl7158_modify_grant_table_1";
DROP USER u1@h;
CREATE USER u1@h;
SET debug="+d,wl7158_modify_grant_table_2";
DROP USER u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SET debug="-d,wl7158_modify_grant_table_2";
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
DROP USER u1@h;
CREATE USER u1@h;
SET debug="+d,wl7158_replace_proxies_priv_table_1";
GRANT PROXY ON plug_dest TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_proxies_priv_table_1";
SET debug="+d,wl7158_replace_proxies_priv_table_2";
GRANT PROXY ON plug_dest TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_proxies_priv_table_2";
SET debug="+d,wl7158_replace_proxies_priv_table_5";
GRANT PROXY ON plug_dest TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_proxies_priv_table_5";
GRANT PROXY ON plug_dest TO u1@h;
SET debug="+d,wl7158_replace_proxies_priv_table_3";
GRANT PROXY ON plug_dest TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT PROXY ON 'plug_dest'@'%' TO 'u1'@'h'
SET debug="-d,wl7158_replace_proxies_priv_table_3";
SET debug="+d,wl7158_replace_proxies_priv_table_4";
REVOKE PROXY ON plug_dest FROM u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT PROXY ON 'plug_dest'@'%' TO 'u1'@'h'
SET debug="-d,wl7158_replace_proxies_priv_table_4";
DROP USER u1@h;
CREATE TABLE t1 (a INT);
CREATE USER u1@h;
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="+d,wl7158_replace_column_table_1";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_1";
SET debug="+d,wl7158_replace_column_table_2";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_2";
SET debug="+d,wl7158_replace_column_table_5";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_5";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
SET debug="+d,wl7158_replace_column_table_3";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT (`a`), INSERT (`a`), UPDATE (`a`), REFERENCES (`a`) ON `test`.`t1` TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_3";
SET debug="+d,wl7158_replace_column_table_4";
REVOKE SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 FROM u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT (`a`), INSERT (`a`), UPDATE (`a`), REFERENCES (`a`) ON `test`.`t1` TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_4";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
SET debug="+d,wl7158_replace_column_table_6";
REVOKE SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 FROM u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT (`a`), INSERT (`a`), UPDATE (`a`), REFERENCES (`a`) ON `test`.`t1` TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_6";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
SET debug="+d,wl7158_replace_column_table_7";
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT (`a`), INSERT (`a`), UPDATE (`a`), REFERENCES (`a`) ON `test`.`t1` TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_7";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
SET debug="+d,wl7158_replace_column_table_8";
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT SELECT (`a`), INSERT (`a`), UPDATE (`a`), REFERENCES (`a`) ON `test`.`t1` TO `u1`@`h`
SET debug="-d,wl7158_replace_column_table_8";
CREATE TABLE t2 (a INT);
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
GRANT INSERT(a) ON t2 TO u1@h;
SELECT host, db, user, table_name, column_name, column_priv FROM mysql.columns_priv;
host db user table_name column_name column_priv
h test u1 t1 a Select,Insert,Update,References
h test u1 t2 a Insert
SELECT host, db, user, table_name, grantor, table_priv, column_priv FROM mysql.tables_priv;
host db user table_name grantor table_priv column_priv
h test u1 t1 root@localhost Select,Insert,Update,References
h test u1 t2 root@localhost Insert
localhost mysql mysql.session user root@localhost Select
localhost sys mysql.sys sys_config root@localhost Select
DELETE FROM mysql.columns_priv WHERE host = 'h' AND user = 'u1'
AND table_name = 't1';
COMMIT;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h;
SELECT host, db, user, table_name, column_name, column_priv FROM mysql.columns_priv;
host db user table_name column_name column_priv
SELECT host, db, user, table_name, grantor, table_priv, column_priv FROM mysql.tables_priv;
host db user table_name grantor table_priv column_priv
localhost mysql mysql.session user root@localhost Select
localhost sys mysql.sys sys_config root@localhost Select
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT UPDATE (a) ON t1 TO u1@h;
SET debug='+d,mysql_grant_table_init_out_of_memory';
FLUSH PRIVILEGES;
Got one of the listed errors
SET debug='-d,mysql_grant_table_init_out_of_memory';
DROP TABLE t1;
DROP TABLE t2;
DROP USER u1@h;
# Test case that checks the whole transaction was rolled back
# in the case of system error and that in-memory cache was reloaded after that
CREATE USER u1@h;
CREATE TABLE t1 (a INT);
SET debug="+d,wl7158_replace_column_table_5";
GRANT SELECT(a), UPDATE(a), INSERT(a), REFERENCES(a) ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
# Check that changes of the whole statement have been rolled back.
SELECT * FROM mysql.columns_priv WHERE host = 'h' AND user = 'u1';
Host Db User Table_name Column_name Timestamp Column_priv
SELECT * FROM mysql.tables_priv WHERE host = 'h' AND user = 'u1';
Host Db User Table_name Grantor Timestamp Table_priv Column_priv
SET debug="-d,wl7158_replace_column_table_5";
DROP TABLE t1;
DROP USER u1@h;
CREATE TABLE t1 (a INT);
CREATE USER u1@h;
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="+d,wl7158_replace_table_table_1";
GRANT UPDATE ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_table_table_1";
SET debug="+d,wl7158_replace_table_table_3";
GRANT UPDATE ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_table_table_3";
GRANT UPDATE ON t1 TO u1@h;
SET debug="+d,wl7158_replace_table_table_2";
GRANT UPDATE ON t1 TO u1@h;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT UPDATE ON `test`.`t1` TO `u1`@`h`
SET debug="-d,wl7158_replace_table_table_2";
DROP TABLE t1;
DROP USER u1@h;
CREATE TABLE t1 (a INT);
CREATE USER u1@h;
CREATE PROCEDURE p() SET @x = 1;
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="+d,wl7158_replace_routine_table_1";
GRANT USAGE ON PROCEDURE p TO u1@h WITH GRANT OPTION;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_routine_table_1";
SET debug="+d,wl7158_replace_routine_table_4";
GRANT USAGE ON PROCEDURE p TO u1@h WITH GRANT OPTION;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
SET debug="-d,wl7158_replace_routine_table_4";
GRANT USAGE ON PROCEDURE p TO u1@h WITH GRANT OPTION;
SET debug="+d,wl7158_replace_routine_table_2";
GRANT USAGE ON PROCEDURE p TO u1@h WITH GRANT OPTION;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT USAGE ON PROCEDURE `test`.`p` TO `u1`@`h` WITH GRANT OPTION
SET debug="-d,wl7158_replace_routine_table_2";
SET debug="+d,wl7158_replace_routine_table_3";
DROP PROCEDURE p;
ERROR HY000: The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
SHOW WARNINGS;
Level Code Message
Error 3501 The ACL operation failed due to the following error from SE: errcode 149 - Lock deadlock; Retry transaction
Warning 1405 Failed to revoke all privileges to dropped routine
SHOW GRANTS FOR u1@h;
Grants for u1@h
GRANT USAGE ON *.* TO `u1`@`h`
GRANT USAGE ON PROCEDURE `test`.`p` TO `u1`@`h` WITH GRANT OPTION
SET debug="-d,wl7158_replace_routine_table_3";
DROP TABLE t1;
DROP USER u1@h;
########################################################################
# E. Check that it is possible to ALTER storage engine for privilege
# tables to MyISAM.
# This is necessary for mysql_system_tables_fix_for_downgrade.sql
# to work.
########################################################################
ALTER TABLE mysql.user ENGINE = MyISAM;
ALTER TABLE mysql.db ENGINE = MyISAM;
ALTER TABLE mysql.columns_priv ENGINE = MyISAM;
ALTER TABLE mysql.procs_priv ENGINE = MyISAM;
ALTER TABLE mysql.proxies_priv ENGINE = MyISAM;
ALTER TABLE mysql.tables_priv ENGINE = MyISAM;
SELECT table_name, engine FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'mysql' AND
table_name IN ('user', 'db', 'columns_priv', 'procs_priv',
'proxies_priv', 'tables_priv')
ORDER BY table_name;
TABLE_NAME ENGINE
columns_priv MyISAM
db MyISAM
procs_priv MyISAM
proxies_priv MyISAM
tables_priv MyISAM
user MyISAM
ALTER TABLE mysql.user ENGINE = InnoDB;
ALTER TABLE mysql.db ENGINE = InnoDB;
ALTER TABLE mysql.columns_priv ENGINE = InnoDB;
ALTER TABLE mysql.procs_priv ENGINE = InnoDB;
ALTER TABLE mysql.proxies_priv ENGINE = InnoDB;
ALTER TABLE mysql.tables_priv ENGINE = InnoDB;
########################################################################
# Checking that it is possible to CREATE privilege tables in MyISAM.
# This is necessary for upgrade via mysqldump to work.
########################################################################
RENAME TABLE mysql.user TO mysql.user_bak;
RENAME TABLE mysql.db TO mysql.db_bak;
RENAME TABLE mysql.columns_priv TO mysql.columns_priv_bak;
RENAME TABLE mysql.procs_priv TO mysql.procs_priv_bak;
RENAME TABLE mysql.proxies_priv TO mysql.proxies_priv_bak;
RENAME TABLE mysql.tables_priv TO mysql.tables_priv_bak;
CREATE TABLE mysql.db ENGINE=MyISAM SELECT * FROM mysql.db_bak;
CREATE TABLE mysql.user ENGINE=MyISAM SELECT * FROM mysql.user_bak;
CREATE TABLE mysql.columns_priv ENGINE=MyISAM SELECT * FROM mysql.columns_priv_bak;
CREATE TABLE mysql.procs_priv ENGINE=MyISAM SELECT * FROM mysql.procs_priv_bak;
CREATE TABLE mysql.proxies_priv ENGINE=MyISAM SELECT * FROM mysql.proxies_priv_bak;
CREATE TABLE mysql.tables_priv ENGINE=MyISAM SELECT * FROM mysql.tables_priv_bak;
DROP TABLE mysql.user, mysql.db, mysql.columns_priv,
mysql.procs_priv, mysql.proxies_priv, mysql.tables_priv;
RENAME TABLE mysql.user_bak TO mysql.user;
RENAME TABLE mysql.db_bak TO mysql.db;
RENAME TABLE mysql.columns_priv_bak TO mysql.columns_priv;
RENAME TABLE mysql.procs_priv_bak TO mysql.procs_priv;
RENAME TABLE mysql.proxies_priv_bak TO mysql.proxies_priv;
RENAME TABLE mysql.tables_priv_bak TO mysql.tables_priv;
########################################################################
# F. Upgrade/downgrade tests.
########################################################################
# Disconnect con1
# Connection: default
CREATE USER u1@h;
# Remove the session user
DELETE FROM mysql.tables_priv WHERE user='mysql.session';
DELETE FROM mysql.user WHERE user='mysql.session';
DELETE FROM mysql.db WHERE user='mysql.session';
# Backup privilege tables and drop original ones
RENAME TABLE mysql.user TO mysql.user_bak;
RENAME TABLE mysql.db TO mysql.db_bak;
RENAME TABLE mysql.columns_priv TO mysql.columns_priv_bak;
RENAME TABLE mysql.procs_priv TO mysql.procs_priv_bak;
RENAME TABLE mysql.proxies_priv TO mysql.proxies_priv_bak;
RENAME TABLE mysql.tables_priv TO mysql.tables_priv_bak;
# Create exact structure of privilege tables as it is in 5.6
CREATE TABLE IF NOT EXISTS mysql.db ( Host char(60) binary DEFAULT '' NOT NULL,
Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL,
Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM
CHARACTER SET utf8 COLLATE utf8_bin comment='Database privileges';
Warnings:
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
CREATE TABLE IF NOT EXISTS mysql.user ( Host char(60) binary DEFAULT '' NOT NULL,
User char(16) binary DEFAULT '' NOT NULL, Password char(41) character set latin1
collate latin1_bin DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci
DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
Create_tablespace_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL,
ssl_cipher BLOB NOT NULL, x509_issuer BLOB NOT NULL, x509_subject BLOB NOT NULL,
max_questions int(11) unsigned DEFAULT 0 NOT NULL,
max_updates int(11) unsigned DEFAULT 0 NOT NULL,
max_connections int(11) unsigned DEFAULT 0 NOT NULL,
max_user_connections int(11) unsigned DEFAULT 0 NOT NULL,
plugin char(64) DEFAULT 'caching_sha2_password', authentication_string TEXT,
password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
PRIMARY KEY Host (Host,User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin
comment='Users and global privileges';
Warnings:
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
CREATE TABLE IF NOT EXISTS mysql.tables_priv ( Host char(60) binary DEFAULT '' NOT NULL,
Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL,
Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL,
Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References',
'Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL,
Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT ''
NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) )
engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
Warnings:
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
CREATE TABLE IF NOT EXISTS mysql.columns_priv ( Host char(60) binary DEFAULT '' NOT NULL,
Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL,
Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL,
Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci
DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) )
engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
Warnings:
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
CREATE TABLE IF NOT EXISTS mysql.procs_priv ( Host char(60) binary DEFAULT '' NOT NULL,
Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL,
Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL,
Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL,
Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL,
Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) )
engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
Warnings:
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
CREATE TABLE IF NOT EXISTS mysql.proxies_priv (Host char(60) binary DEFAULT '' NOT NULL,
User char(16) binary DEFAULT '' NOT NULL, Proxied_host char(60) binary DEFAULT '' NOT NULL,
Proxied_user char(16) binary DEFAULT '' NOT NULL, With_grant BOOL DEFAULT 0 NOT NULL,
Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY Host (Host,User,Proxied_host,Proxied_user),
KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin
comment='User proxy privileges';
Warnings:
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
# Restore original content of privilege tables
INSERT INTO mysql.user(Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv,
References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv,
Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv,
Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv,
Trigger_priv, Create_tablespace_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject,
max_questions, max_updates, max_connections, max_user_connections, plugin,
authentication_string, password_expired) SELECT Host, User, Select_priv, Insert_priv,
Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv,
Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv,
Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv,
Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, ssl_cipher, x509_issuer,
x509_subject, max_questions, max_updates, max_connections, max_user_connections, plugin,
authentication_string, password_expired FROM mysql.user_bak;
INSERT INTO mysql.db(Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Create_tmp_table_priv, Lock_tables_priv, Create_view_priv, Show_view_priv, Create_routine_priv,
Alter_routine_priv, Execute_priv, Event_priv, Trigger_priv) SELECT Host, Db, User, Select_priv,
Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv,
Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv, Create_view_priv,
Show_view_priv, Create_routine_priv, Alter_routine_priv, Execute_priv, Event_priv,
Trigger_priv FROM mysql.db_bak;
INSERT INTO mysql.columns_priv(Host, Db, User, Table_name, Column_name, Timestamp, Column_priv)
SELECT Host, Db, User, Table_name, Column_name, Timestamp, Column_priv
FROM mysql.columns_priv_bak;
INSERT INTO mysql.procs_priv(Host, Db, User, Routine_name, Routine_type, Grantor, Proc_priv,
Timestamp) SELECT Host, Db, User, Routine_name, Routine_type, Grantor, Proc_priv, Timestamp
FROM mysql.procs_priv_bak;
INSERT INTO mysql.proxies_priv(Host, User, Proxied_host, Proxied_user, With_grant, Grantor,
Timestamp) SELECT Host, User, Proxied_host, Proxied_user, With_grant, Grantor, Timestamp
FROM mysql.proxies_priv_bak;
INSERT INTO mysql.tables_priv(Host, Db, User, Table_name, Grantor, Timestamp, Table_priv,
Column_priv) SELECT Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv
FROM mysql.tables_priv_bak;
COMMIT;
CREATE TABLE t1 (a INT);
call mtr.add_suppression("mysql.user has no `Event_priv` column at position 28");
# Shutting down mysqld...
# Starting mysqld in the regular mode...
# restart
# Check that any ACL statement is failed when privilege tables
# have engine type MyISAM
CREATE USER u2@h;
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
ALTER USER u1@h PASSWORD EXPIRE;
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
GRANT SELECT ON t1 TO u1@h;
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
REVOKE SELECT ON t1 FROM u1@h;
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u1@h;
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
SET PASSWORD FOR u1@h = '123';
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
RENAME USER u1@h TO u1_1@h;
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
DROP USER u1@h;
ERROR HY000: Storage engine 'MyISAM' does not support system tables. [mysql.user]
SELECT table_name, engine FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'mysql' AND
table_name IN ('user', 'db', 'columns_priv', 'procs_priv',
'proxies_priv', 'tables_priv')
ORDER BY table_name;
TABLE_NAME ENGINE
columns_priv MyISAM
db MyISAM
procs_priv MyISAM
proxies_priv MyISAM
tables_priv MyISAM
user MyISAM
# mysql_upgrade...
# restart:--upgrade=FORCE
# The ACL tables must have been upgraded.
SELECT table_name, engine FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'mysql' AND
table_name IN ('user', 'db', 'columns_priv', 'procs_priv',
'proxies_priv', 'tables_priv')
ORDER BY table_name;
TABLE_NAME ENGINE
columns_priv InnoDB
db InnoDB
procs_priv InnoDB
proxies_priv InnoDB
tables_priv InnoDB
user InnoDB
# Downgrading
# Alter the storage engine to MyISAM (downgrade).
ALTER TABLE mysql.user ENGINE = MyISAM;
ALTER TABLE mysql.db ENGINE = MyISAM;
ALTER TABLE mysql.columns_priv ENGINE = MyISAM;
ALTER TABLE mysql.procs_priv ENGINE = MyISAM;
ALTER TABLE mysql.proxies_priv ENGINE = MyISAM;
ALTER TABLE mysql.tables_priv ENGINE = MyISAM;
SELECT table_name, engine FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'mysql' AND
table_name IN ('user', 'db', 'columns_priv', 'procs_priv',
'proxies_priv', 'tables_priv')
ORDER BY table_name;
TABLE_NAME ENGINE
columns_priv MyISAM
db MyISAM
procs_priv MyISAM
proxies_priv MyISAM
tables_priv MyISAM
user MyISAM
#
# Clean-up. Restore original state of privilege tables.
DROP TABLES mysql.user, mysql.db, mysql.columns_priv, mysql.procs_priv,
mysql.proxies_priv, mysql.tables_priv;
RENAME TABLE mysql.user_bak TO mysql.user;
RENAME TABLE mysql.db_bak TO mysql.db;
RENAME TABLE mysql.columns_priv_bak TO mysql.columns_priv;
RENAME TABLE mysql.procs_priv_bak TO mysql.procs_priv;
RENAME TABLE mysql.proxies_priv_bak TO mysql.proxies_priv;
RENAME TABLE mysql.tables_priv_bak TO mysql.tables_priv;
INSERT IGNORE INTO mysql.user VALUES ('localhost','mysql.session',
'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','Y','N','N','N',
'N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0,
'caching_sha2_password','$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED',
'N',CURRENT_TIMESTAMP,NULL,'Y', 'N', 'N', NULL, NULL, NULL, NULL);
INSERT IGNORE INTO mysql.tables_priv VALUES ('localhost', 'mysql',
'mysql.session', 'user', 'root\@localhost',
CURRENT_TIMESTAMP, 'Select', '');
INSERT IGNORE INTO mysql.db VALUES ('localhost', 'performance\_schema',
'mysql.session','Y','N','N','N','N','N','N','N','N','N','N','N',
'N','N','N','N','N','N','N');
FLUSH PRIVILEGES;
DROP USER u1@h;
DROP TABLE t1;
#
# Bug #21749169 -- ASSERTS 'ERROR != 146' PROVIDED BY WL#7158 AT VARIOUS PLACES ARE HIT
#
CREATE TABLE t1 (a INT);
CREATE USER u1;
GRANT ALL ON test.t1 TO 'u1' ;
SET autocommit = 0;
connection con1
SET autocommit = 0;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
SAVEPOINT A;
DELETE FROM mysql . tables_priv WHERE user = 'u1' LIMIT 1;
ROLLBACK WORK TO SAVEPOINT A;
connection default
SET innodb_lock_wait_timeout= 1;
GRANT ALL ON t1 TO 'u1';
DROP USER u1;
DROP TABLE t1;