mariadb/mysql-test/suite/galera/t/rename.test
Nirbhay Choubey e998dffde7 MDEV-8598 : Failed MySQL DDL commands and Galera replication
RENAME TABLE, unlike other DDLs, was getting replicated before
the access check was performed. As a result, the command could
get get replicated and thus executed on other nodes, even if it
fails on the originating node due to permission issues. Fixed by
moving the logic to check user privileges before replicating the
command.
2015-08-12 17:47:25 -04:00

52 lines
1 KiB
Text

--source include/galera_cluster.inc
--source include/have_innodb.inc
--echo #
--echo # MDEV-8598 : Failed MySQL DDL commands and Galera replication
--echo #
--echo # On node 1
--connection node_1
USE test;
--disable_warnings
DROP TABLE IF EXISTS t1, t2;
--enable_warnings
CREATE TABLE t1(i INT) ENGINE=INNODB;
INSERT INTO t1 VALUE(1);
SELECT * FROM t1;
--echo # Create a new user 'foo' with limited privileges
GRANT SELECT on test.* TO foo@localhost;
--echo # Open connection to the 1st node using 'test_user1' user.
--let $port_1= \$NODE_MYPORT_1
--connect(foo_node_1,localhost,foo,,test,$port_1,)
--connection foo_node_1
SELECT * FROM t1;
--echo # Following RENAME should not replicate to other node.
--error ER_TABLEACCESS_DENIED_ERROR
RENAME TABLE t1 TO t2;
--echo # On node 2
--connection node_2
USE test;
SELECT * FROM t1;
--echo # On node_1
--connection node_1
RENAME TABLE t1 TO t2;
SHOW TABLES;
--echo # On node 2
--connection node_2
USE test;
SELECT * FROM t2;
# Cleanup
--connection node_1
DROP USER foo@localhost;
DROP TABLE t2;
--echo # End of tests