mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 19:11:46 +01:00
0253ea7f22
Also fixes: MDEV-21487: Implement option for mysql_upgrade that allows root@localhost to be replaced MDEV-21486: Implement option for mysql_install_db that allows root@localhost to be replaced Add user mariadb.sys to be definer of user view (and has right on underlying table global_priv for required operation over global_priv (SELECT,UPDATE,DELETE)) Also changed definer of gis functions in case of creation, but they work with any definer so upgrade script do not try to push this change.
157 lines
6.5 KiB
Text
157 lines
6.5 KiB
Text
include/master-slave.inc
|
||
[connection master]
|
||
call mtr.add_suppression("Can't find record in 't.'");
|
||
call mtr.add_suppression("Can't find record in 'global_priv'");
|
||
call mtr.add_suppression("Can't find record in 'tables_priv'");
|
||
**** Test case for BUG#16487 ****
|
||
connection master;
|
||
CREATE TABLE test.t4 (a int);
|
||
CREATE TABLE test.t1 (a int);
|
||
UPDATE test.t4 NATURAL JOIN test.t1 SET t1.a=5;
|
||
connection slave;
|
||
SELECT * FROM t4;
|
||
a
|
||
connection master;
|
||
DROP TABLE t1;
|
||
DROP TABLE t4;
|
||
connection slave;
|
||
**** Test case for BUG#25482 ****
|
||
**** Adding GRANTS on master ****
|
||
connection master;
|
||
create table test.t1(a int);
|
||
create table test.t4(a int);
|
||
set sql_mode="";
|
||
GRANT SELECT ON test.t1 TO mysqltest1@localhost;
|
||
GRANT INSERT ON test.t4 TO mysqltest2@localhost;
|
||
GRANT select, update, insert, references on t1
|
||
to mysqltest2@localhost;
|
||
GRANT SELECT ON test.* TO mysqltest3@localhost;
|
||
GRANT INSERT ON test.t4 TO mysqltest3@localhost;
|
||
GRANT select(a), update(a), insert(a), references(a) on t4
|
||
to mysqltest3@localhost;
|
||
create database mysqltest2;
|
||
create table mysqltest2.t2 (id int);
|
||
GRANT SELECT ON mysqltest2.t2 TO mysqltest4@localhost IDENTIFIED BY 'pass';
|
||
insert into mysql.global_priv (user, host) values ("mysqltest5", "somehost");
|
||
GRANT SELECT ON *.* TO mysqltest6@localhost;
|
||
GRANT INSERT ON *.* TO mysqltest6@localhost;
|
||
GRANT INSERT ON test.* TO mysqltest6@localhost;
|
||
GRANT INSERT ON test.t1 TO mysqltest6@localhost;
|
||
show grants for mysqltest1@localhost;
|
||
Grants for mysqltest1@localhost
|
||
GRANT SELECT ON `test`.`t1` TO `mysqltest1`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest1`@`localhost`
|
||
show grants for mysqltest2@localhost;
|
||
Grants for mysqltest2@localhost
|
||
GRANT INSERT ON `test`.`t4` TO `mysqltest2`@`localhost`
|
||
GRANT SELECT, INSERT, UPDATE, REFERENCES ON `test`.`t1` TO `mysqltest2`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest2`@`localhost`
|
||
show grants for mysqltest3@localhost;
|
||
Grants for mysqltest3@localhost
|
||
GRANT SELECT (a), INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO `mysqltest3`@`localhost`
|
||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||
show grants for mysqltest4@localhost;
|
||
Grants for mysqltest4@localhost
|
||
GRANT SELECT ON `mysqltest2`.`t2` TO `mysqltest4`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||
show grants for mysqltest6@localhost;
|
||
Grants for mysqltest6@localhost
|
||
GRANT INSERT ON `test`.* TO `mysqltest6`@`localhost`
|
||
GRANT INSERT ON `test`.`t1` TO `mysqltest6`@`localhost`
|
||
GRANT SELECT, INSERT ON *.* TO `mysqltest6`@`localhost`
|
||
flush privileges;
|
||
show grants for mysqltest5@somehost;
|
||
Grants for mysqltest5@somehost
|
||
GRANT USAGE ON *.* TO `mysqltest5`@`somehost`
|
||
set sql_mode="";
|
||
connection slave;
|
||
**** Checking grants on slave ****
|
||
show grants for mysqltest2@localhost;
|
||
Grants for mysqltest2@localhost
|
||
GRANT INSERT ON `test`.`t4` TO `mysqltest2`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest2`@`localhost`
|
||
show grants for mysqltest3@localhost;
|
||
Grants for mysqltest3@localhost
|
||
GRANT SELECT (a), INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO `mysqltest3`@`localhost`
|
||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||
show grants for mysqltest4@localhost;
|
||
Grants for mysqltest4@localhost
|
||
GRANT SELECT ON `mysqltest2`.`t2` TO `mysqltest4`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||
show grants for mysqltest5@somehost;
|
||
Grants for mysqltest5@somehost
|
||
GRANT USAGE ON *.* TO `mysqltest5`@`somehost`
|
||
show grants for mysqltest6@localhost;
|
||
Grants for mysqltest6@localhost
|
||
GRANT INSERT ON `test`.* TO `mysqltest6`@`localhost`
|
||
GRANT SELECT, INSERT ON *.* TO `mysqltest6`@`localhost`
|
||
show grants for mysqltest1@localhost;
|
||
ERROR 42000: There is no such grant defined for user 'mysqltest1' on host 'localhost'
|
||
**** Revoking grants on master ****
|
||
connection master;
|
||
REVOKE SELECT ON test.t1 FROM mysqltest1@localhost;
|
||
REVOKE SELECT ON mysqltest2.t2 FROM mysqltest4@localhost;
|
||
REVOKE select(a) on t4
|
||
from mysqltest3@localhost;
|
||
show grants for mysqltest1@localhost;
|
||
Grants for mysqltest1@localhost
|
||
GRANT USAGE ON *.* TO `mysqltest1`@`localhost`
|
||
show grants for mysqltest3@localhost;
|
||
Grants for mysqltest3@localhost
|
||
GRANT INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO `mysqltest3`@`localhost`
|
||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||
show grants for mysqltest4@localhost;
|
||
Grants for mysqltest4@localhost
|
||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||
connection slave;
|
||
**** Checking grants on slave ****
|
||
show grants for mysqltest1@localhost;
|
||
ERROR 42000: There is no such grant defined for user 'mysqltest1' on host 'localhost'
|
||
show grants for mysqltest3@localhost;
|
||
Grants for mysqltest3@localhost
|
||
GRANT USAGE ON *.* TO `mysqltest3`@`localhost`
|
||
GRANT SELECT ON `test`.* TO `mysqltest3`@`localhost`
|
||
GRANT INSERT, INSERT (a), UPDATE (a), REFERENCES (a) ON `test`.`t4` TO `mysqltest3`@`localhost`
|
||
show grants for mysqltest4@localhost;
|
||
Grants for mysqltest4@localhost
|
||
GRANT USAGE ON *.* TO `mysqltest4`@`localhost` IDENTIFIED BY PASSWORD '*196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7'
|
||
set global slave_exec_mode='IDEMPOTENT';
|
||
call mtr.add_suppression("Slave SQL.*Could not execute Delete_rows event on table mysql.* error.* 1032");
|
||
connection master;
|
||
drop table t1, mysqltest2.t2;
|
||
drop table t4;
|
||
drop database mysqltest2;
|
||
delete from mysql.user where user like "mysqltest%";
|
||
delete from mysql.db where user like "mysqltest%";
|
||
delete from mysql.columns_priv where user like "mysqltest%";
|
||
connection slave;
|
||
delete from mysql.tables_priv where user like "mysqltest%";
|
||
connection master;
|
||
delete from mysql.tables_priv where user like "mysqltest%";
|
||
connection master;
|
||
DROP TABLE IF EXISTS t5;
|
||
CREATE TABLE t5 (
|
||
word varchar(50) collate utf8_unicode_ci NOT NULL default ''
|
||
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||
SET @@session.character_set_client=33,@@session.collation_connection=192;
|
||
CREATE TEMPORARY TABLE tmptbl504451f4258$1 (id INT NOT NULL) ENGINE=MEMORY;
|
||
INSERT INTO t5 (word) VALUES ('TEST’');
|
||
SELECT HEX(word) FROM t5;
|
||
HEX(word)
|
||
54455354E28099
|
||
connection slave;
|
||
set @@global.slave_exec_mode= default;
|
||
connection slave;
|
||
SELECT HEX(word) FROM t5;
|
||
HEX(word)
|
||
54455354E28099
|
||
SELECT * FROM tmptbl504451f4258$1;
|
||
ERROR 42S02: Table 'test.tmptbl504451f4258$1' doesn't exist
|
||
connection master;
|
||
DROP TABLE t5;
|
||
flush privileges;
|
||
connection slave;
|
||
include/rpl_end.inc
|