mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-17658 change the structure of mysql.user table
Implement User_table_json. Fix scripts to use mysql.global_priv. Fix tests.
This commit is contained in:
@@ -1,96 +0,0 @@
|
||||
let $LOAD_FILE= $MYSQLTEST_VARDIR/std_data/words.dat;
|
||||
CREATE TABLE t1 (word CHAR(20) NOT NULL);
|
||||
--replace_result $LOAD_FILE LOAD_FILE
|
||||
eval LOAD DATA INFILE '$LOAD_FILE' INTO TABLE t1;
|
||||
--replace_result $LOAD_FILE LOAD_FILE
|
||||
eval LOAD DATA INFILE '$LOAD_FILE' INTO TABLE t1;
|
||||
SELECT * FROM t1 ORDER BY word LIMIT 10;
|
||||
|
||||
#
|
||||
# Save password row for root
|
||||
#
|
||||
|
||||
create temporary table tmp select * from mysql.user where host="localhost" and user="root";
|
||||
|
||||
#
|
||||
# Test slave with wrong password
|
||||
#
|
||||
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
STOP SLAVE;
|
||||
connection master;
|
||||
UPDATE mysql.user SET password=password('foo') WHERE host='localhost' AND user='root';
|
||||
connection slave;
|
||||
START SLAVE;
|
||||
connection master;
|
||||
#
|
||||
# Give slave time to do at last one failed connect retry
|
||||
# This one must be short so that the slave will not stop retrying
|
||||
real_sleep 2;
|
||||
UPDATE mysql.user SET password=password('') WHERE host='localhost' AND user='root';
|
||||
# Give slave time to connect (will retry every second)
|
||||
|
||||
sleep 2;
|
||||
|
||||
CREATE TABLE t3(n INT);
|
||||
INSERT INTO t3 VALUES(1),(2);
|
||||
sync_slave_with_master;
|
||||
SELECT * FROM t3 ORDER BY n;
|
||||
SELECT SUM(LENGTH(word)) FROM t1;
|
||||
connection master;
|
||||
DROP TABLE t1,t3;
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
sync_with_master;
|
||||
|
||||
# Test if the slave SQL thread can be more than 16K behind the slave
|
||||
# I/O thread (> IO_SIZE)
|
||||
|
||||
connection master;
|
||||
# we'll use table-level locking to delay slave SQL thread
|
||||
eval CREATE TABLE t1 (n INT) ENGINE=$engine_type;
|
||||
sync_slave_with_master;
|
||||
connection master;
|
||||
RESET MASTER;
|
||||
connection slave;
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
connection master;
|
||||
let $1=5000;
|
||||
# Generate 16K of relay log
|
||||
disable_query_log;
|
||||
while ($1)
|
||||
{
|
||||
eval INSERT INTO t1 VALUES($1);
|
||||
dec $1;
|
||||
}
|
||||
enable_query_log;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
save_master_pos;
|
||||
|
||||
# Try to cause a large relay log lag on the slave by locking t1
|
||||
connection slave;
|
||||
LOCK TABLES t1 READ;
|
||||
START SLAVE;
|
||||
UNLOCK TABLES;
|
||||
sync_with_master;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (n INT);
|
||||
INSERT INTO t1 VALUES(3456);
|
||||
sync_slave_with_master;
|
||||
SELECT n FROM t1;
|
||||
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
|
||||
# resttore old passwords
|
||||
replace into mysql.user select * from tmp;
|
||||
drop temporary table tmp;
|
||||
|
||||
sync_slave_with_master;
|
@@ -18,13 +18,13 @@ u2@localhost
|
||||
disconnect user_a;
|
||||
connection master;
|
||||
SELECT user,password,plugin,authentication_string FROM mysql.user WHERE user LIKE 'u%' ;
|
||||
user password plugin authentication_string
|
||||
u1 mysql_native_password *D9553C4CE316A9845CE49E30A2D7E3857AF966C4
|
||||
User Password plugin authentication_string
|
||||
u1 *D9553C4CE316A9845CE49E30A2D7E3857AF966C4 mysql_native_password *D9553C4CE316A9845CE49E30A2D7E3857AF966C4
|
||||
u2 mysql_native_password
|
||||
connection slave;
|
||||
SELECT user,password,plugin,authentication_string FROM mysql.user WHERE user LIKE 'u%' ;
|
||||
user password plugin authentication_string
|
||||
u1 mysql_native_password *D9553C4CE316A9845CE49E30A2D7E3857AF966C4
|
||||
User Password plugin authentication_string
|
||||
u1 *D9553C4CE316A9845CE49E30A2D7E3857AF966C4 mysql_native_password *D9553C4CE316A9845CE49E30A2D7E3857AF966C4
|
||||
u2 mysql_native_password
|
||||
connection master;
|
||||
CREATE OR REPLACE USER u1@localhost IDENTIFIED BY 'abcdefghijk2';
|
||||
@@ -36,13 +36,13 @@ u1@localhost
|
||||
disconnect user_a;
|
||||
connection master;
|
||||
SELECT user,password,plugin,authentication_string FROM mysql.user WHERE user LIKE 'u%' ;
|
||||
user password plugin authentication_string
|
||||
u1 mysql_native_password *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E
|
||||
User Password plugin authentication_string
|
||||
u1 *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E mysql_native_password *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E
|
||||
u2 mysql_native_password
|
||||
connection slave;
|
||||
SELECT user,password,plugin,authentication_string FROM mysql.user WHERE user LIKE 'u%' ;
|
||||
user password plugin authentication_string
|
||||
u1 mysql_native_password *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E
|
||||
User Password plugin authentication_string
|
||||
u1 *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E mysql_native_password *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E
|
||||
u2 mysql_native_password
|
||||
connection master;
|
||||
CREATE USER u1@localhost;
|
||||
@@ -51,8 +51,8 @@ DROP USER u3@localhost;
|
||||
ERROR HY000: Operation DROP USER failed for 'u3'@'localhost'
|
||||
connection slave;
|
||||
SELECT user,password,plugin,authentication_string FROM mysql.user WHERE user LIKE 'u%' ;
|
||||
user password plugin authentication_string
|
||||
u1 mysql_native_password *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E
|
||||
User Password plugin authentication_string
|
||||
u1 *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E mysql_native_password *A9A5EF53CE2EFAA6F4A746D63A917B2370971A7E
|
||||
u2 mysql_native_password
|
||||
connection master;
|
||||
DROP USER IF EXISTS u1@localhost;
|
||||
@@ -62,5 +62,5 @@ Warnings:
|
||||
Note 1974 Can't drop user 'u3'@'localhost'; it doesn't exist
|
||||
connection slave;
|
||||
SELECT user,password,plugin,authentication_string FROM mysql.user WHERE user LIKE 'u%' ;
|
||||
user password plugin authentication_string
|
||||
User Password plugin authentication_string
|
||||
include/rpl_end.inc
|
||||
|
@@ -1354,11 +1354,11 @@ MAX(f1)
|
||||
TEST-INFO: SLAVE: The INSERT is committed (Succeeded)
|
||||
connection master;
|
||||
SELECT user FROM mysql.user WHERE user = 'user1';
|
||||
user
|
||||
User
|
||||
user1
|
||||
connection slave;
|
||||
SELECT user FROM mysql.user WHERE user = 'user1';
|
||||
user
|
||||
User
|
||||
user1
|
||||
connection master;
|
||||
|
||||
@@ -1399,11 +1399,11 @@ MAX(f1)
|
||||
TEST-INFO: SLAVE: The INSERT is committed (Succeeded)
|
||||
connection master;
|
||||
SELECT user FROM mysql.user WHERE user = 'rename1';
|
||||
user
|
||||
User
|
||||
rename1
|
||||
connection slave;
|
||||
SELECT user FROM mysql.user WHERE user = 'rename1';
|
||||
user
|
||||
User
|
||||
rename1
|
||||
connection master;
|
||||
|
||||
@@ -1444,10 +1444,10 @@ MAX(f1)
|
||||
TEST-INFO: SLAVE: The INSERT is committed (Succeeded)
|
||||
connection master;
|
||||
SELECT user FROM mysql.user WHERE user = 'rename1';
|
||||
user
|
||||
User
|
||||
connection slave;
|
||||
SELECT user FROM mysql.user WHERE user = 'rename1';
|
||||
user
|
||||
User
|
||||
use test;
|
||||
connection master;
|
||||
DROP TEMPORARY TABLE mysqltest1.t22;
|
||||
|
@@ -1,14 +1,6 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
connection master;
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
connection slave;
|
||||
delete from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
delete from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
flush privileges;
|
||||
connection master;
|
||||
create user rpl_do_grant@localhost;
|
||||
grant select on *.* to rpl_do_grant@localhost;
|
||||
grant drop on test.* to rpl_do_grant@localhost;
|
||||
@@ -20,11 +12,11 @@ GRANT DROP ON `test`.* TO 'rpl_do_grant'@'localhost'
|
||||
connection master;
|
||||
set password for rpl_do_grant@localhost=password("does it work?");
|
||||
connection slave;
|
||||
select authentication_string<>_binary'' from mysql.user where user=_binary'rpl_do_grant';
|
||||
authentication_string<>_binary''
|
||||
select authentication_string<>'' from mysql.user where user='rpl_do_grant';
|
||||
authentication_string<>''
|
||||
1
|
||||
connection master;
|
||||
update mysql.user set authentication_string='' where user='rpl_do_grant';
|
||||
update mysql.global_priv set priv=json_remove(priv, '$.authentication_string') where user='rpl_do_grant';
|
||||
flush privileges;
|
||||
select authentication_string<>'' from mysql.user where user='rpl_do_grant';
|
||||
authentication_string<>''
|
||||
@@ -37,13 +29,8 @@ select authentication_string<>'' from mysql.user where user='rpl_do_grant';
|
||||
authentication_string<>''
|
||||
1
|
||||
connection master;
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
drop user rpl_do_grant@localhost;
|
||||
connection slave;
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
connection master;
|
||||
show grants for rpl_do_grant@localhost;
|
||||
ERROR 42000: There is no such grant defined for user 'rpl_do_grant' on host 'localhost'
|
||||
@@ -328,5 +315,6 @@ Grantor
|
||||
root@localhost
|
||||
connection master;
|
||||
DROP USER user_bug27606@localhost;
|
||||
update mysql.user set plugin='';
|
||||
select priv into @root_priv from mysql.global_priv where user='root' and host='127.0.0.1';
|
||||
update mysql.global_priv set priv=@root_priv where user='root' and host='localhost';
|
||||
include/rpl_end.inc
|
||||
|
@@ -4,7 +4,7 @@ connection master;
|
||||
CREATE USER dummy@localhost;
|
||||
CREATE USER dummy1@localhost, dummy2@localhost;
|
||||
SELECT user, host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
User Host
|
||||
dummy localhost
|
||||
dummy1 localhost
|
||||
dummy2 localhost
|
||||
@@ -14,7 +14,7 @@ COUNT(*)
|
||||
connection slave;
|
||||
**** On Slave ****
|
||||
SELECT user,host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
User Host
|
||||
dummy localhost
|
||||
dummy1 localhost
|
||||
dummy2 localhost
|
||||
@@ -28,13 +28,13 @@ DROP USER nonexisting@localhost, dummy@localhost;
|
||||
ERROR HY000: Operation DROP USER failed for 'nonexisting'@'localhost'
|
||||
DROP USER dummy1@localhost, dummy2@localhost;
|
||||
SELECT user, host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
User Host
|
||||
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
|
||||
COUNT(*)
|
||||
0
|
||||
connection slave;
|
||||
SELECT user,host FROM mysql.user WHERE user like 'dummy%';
|
||||
user host
|
||||
User Host
|
||||
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
|
||||
COUNT(*)
|
||||
0
|
||||
|
@@ -4,26 +4,26 @@ connection master;
|
||||
grant select on *.* to 'user_foo'@'%' identified by 'user_foopass';
|
||||
revoke select on *.* from 'user_foo'@'%';
|
||||
select select_priv from mysql.user where user='user_foo' /* master:must be N */;
|
||||
select_priv
|
||||
Select_priv
|
||||
N
|
||||
connection slave;
|
||||
grant select on *.* to 'user_foo'@'%' identified by 'user_foopass';
|
||||
revoke select on *.* from 'user_foo'@'%';
|
||||
select select_priv from mysql.user where user='user_foo' /* slave:must be N */;
|
||||
select_priv
|
||||
Select_priv
|
||||
N
|
||||
grant select on *.* to 'user_foo'@'%' identified by 'user_foopass';
|
||||
select select_priv from mysql.user where user='user_foo' /* slave:must be Y */;
|
||||
select_priv
|
||||
Select_priv
|
||||
Y
|
||||
connection master;
|
||||
revoke select on *.* from 'user_foo';
|
||||
select select_priv from mysql.user where user='user_foo' /* master:must be N */;
|
||||
select_priv
|
||||
Select_priv
|
||||
N
|
||||
connection slave;
|
||||
select select_priv from mysql.user where user='user_foo' /* slave:must get Y */;
|
||||
select_priv
|
||||
Select_priv
|
||||
Y
|
||||
connection slave;
|
||||
revoke select on *.* FROM 'user_foo';
|
||||
|
@@ -1,7 +1,7 @@
|
||||
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 'user'");
|
||||
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;
|
||||
@@ -32,12 +32,7 @@ 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.user (user, host) values ("mysqltest5", "somehost");
|
||||
Warnings:
|
||||
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
||||
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
||||
Warning 1364 Field 'x509_subject' doesn't have a default value
|
||||
Warning 1364 Field 'authentication_string' doesn't have a default value
|
||||
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;
|
||||
|
@@ -481,71 +481,71 @@ SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||
******************** CREATE USER ********************
|
||||
CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111';
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *1111111111111111111111111111111111111111 mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
connection slave;
|
||||
USE test_rpl;
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *1111111111111111111111111111111111111111 mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
connection master;
|
||||
|
||||
******************** GRANT ********************
|
||||
GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost';
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *1111111111111111111111111111111111111111 Y
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *1111111111111111111111111111111111111111 mysql_native_password *1111111111111111111111111111111111111111 Y
|
||||
connection slave;
|
||||
USE test_rpl;
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *1111111111111111111111111111111111111111 Y
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *1111111111111111111111111111111111111111 mysql_native_password *1111111111111111111111111111111111111111 Y
|
||||
connection master;
|
||||
|
||||
******************** REVOKE ********************
|
||||
REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost';
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *1111111111111111111111111111111111111111 mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
connection slave;
|
||||
USE test_rpl;
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *1111111111111111111111111111111111111111 mysql_native_password *1111111111111111111111111111111111111111 N
|
||||
connection master;
|
||||
|
||||
******************** SET PASSWORD ********************
|
||||
SET PASSWORD FOR 'user_test_rpl'@'localhost' = '*0000000000000000000000000000000000000000';
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *0000000000000000000000000000000000000000 mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
connection slave;
|
||||
USE test_rpl;
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl *0000000000000000000000000000000000000000 mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
connection master;
|
||||
|
||||
******************** RENAME USER ********************
|
||||
RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost';
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl_2 mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl_2 *0000000000000000000000000000000000000000 mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
connection slave;
|
||||
USE test_rpl;
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
localhost user_test_rpl_2 mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
localhost user_test_rpl_2 *0000000000000000000000000000000000000000 mysql_native_password *0000000000000000000000000000000000000000 N
|
||||
connection master;
|
||||
|
||||
******************** DROP USER ********************
|
||||
DROP USER 'user_test_rpl_2'@'localhost';
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
connection slave;
|
||||
USE test_rpl;
|
||||
SELECT host, user, password, plugin, authentication_string, select_priv FROM mysql.user WHERE user LIKE 'user_test_rpl%';
|
||||
host user password plugin authentication_string select_priv
|
||||
Host User Password plugin authentication_string Select_priv
|
||||
connection master;
|
||||
INSERT INTO t1 VALUES(100, 'test');
|
||||
|
||||
|
@@ -1,44 +1,6 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1 (word CHAR(20) NOT NULL);
|
||||
LOAD DATA INFILE 'LOAD_FILE' INTO TABLE t1;
|
||||
LOAD DATA INFILE 'LOAD_FILE' INTO TABLE t1;
|
||||
SELECT * FROM t1 ORDER BY word LIMIT 10;
|
||||
word
|
||||
Aarhus
|
||||
Aarhus
|
||||
Aarhus
|
||||
Aarhus
|
||||
Aaron
|
||||
Aaron
|
||||
Aaron
|
||||
Aaron
|
||||
Ababa
|
||||
Ababa
|
||||
create temporary table tmp select * from mysql.user where host="localhost" and user="root";
|
||||
connection slave;
|
||||
STOP SLAVE;
|
||||
connection master;
|
||||
UPDATE mysql.user SET password=password('foo') WHERE host='localhost' AND user='root';
|
||||
connection slave;
|
||||
START SLAVE;
|
||||
connection master;
|
||||
UPDATE mysql.user SET password=password('') WHERE host='localhost' AND user='root';
|
||||
CREATE TABLE t3(n INT);
|
||||
INSERT INTO t3 VALUES(1),(2);
|
||||
connection slave;
|
||||
SELECT * FROM t3 ORDER BY n;
|
||||
n
|
||||
1
|
||||
2
|
||||
SELECT SUM(LENGTH(word)) FROM t1;
|
||||
SUM(LENGTH(word))
|
||||
1022
|
||||
connection master;
|
||||
DROP TABLE t1,t3;
|
||||
connection slave;
|
||||
connection master;
|
||||
CREATE TABLE t1 (n INT) ENGINE=MYISAM;
|
||||
CREATE TABLE t1 (n INT);
|
||||
connection slave;
|
||||
connection master;
|
||||
RESET MASTER;
|
||||
@@ -66,7 +28,5 @@ n
|
||||
3456
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
replace into mysql.user select * from tmp;
|
||||
drop temporary table tmp;
|
||||
connection slave;
|
||||
include/rpl_end.inc
|
||||
|
@@ -19,12 +19,12 @@ abandons
|
||||
connection slave;
|
||||
stop slave;
|
||||
connection master;
|
||||
create temporary table tmp select * from mysql.user where host="localhost" and user="root";
|
||||
create temporary table tmp select * from mysql.global_priv where host="localhost" and user="root";
|
||||
set password for root@"localhost" = password('foo');
|
||||
connection slave;
|
||||
start slave;
|
||||
connection master;
|
||||
replace into mysql.user select * from tmp;
|
||||
replace into mysql.global_priv select * from tmp;
|
||||
Warnings:
|
||||
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave
|
||||
drop temporary table tmp;
|
||||
@@ -43,7 +43,7 @@ connection master;
|
||||
drop table t1,t3;
|
||||
connection slave;
|
||||
connection master;
|
||||
create table t1 (n int) engine=myisam;
|
||||
create table t1 (n int);
|
||||
connection slave;
|
||||
connection master;
|
||||
reset master;
|
||||
@@ -81,31 +81,4 @@ count(*)
|
||||
5000
|
||||
connection master1;
|
||||
drop table t1;
|
||||
create table t1 (n int);
|
||||
insert into t1 values(3456);
|
||||
insert ignore into mysql.user (Host, User, Password)
|
||||
VALUES ("10.10.10.%", "blafasel2", password("blafasel2"));
|
||||
Warnings:
|
||||
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
||||
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
||||
Warning 1364 Field 'x509_subject' doesn't have a default value
|
||||
Warning 1364 Field 'authentication_string' doesn't have a default value
|
||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||
select_priv user
|
||||
N blafasel2
|
||||
update mysql.user set Select_priv = "Y" where User= _binary"blafasel2";
|
||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||
select_priv user
|
||||
Y blafasel2
|
||||
connection slave;
|
||||
select n from t1;
|
||||
n
|
||||
3456
|
||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||
select_priv user
|
||||
Y blafasel2
|
||||
connection master1;
|
||||
drop table t1;
|
||||
delete from mysql.user where user="blafasel2";
|
||||
connection slave;
|
||||
include/rpl_end.inc
|
||||
|
@@ -3,18 +3,6 @@
|
||||
|
||||
-- source include/master-slave.inc
|
||||
|
||||
# do not be influenced by other tests.
|
||||
connection master;
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
sync_slave_with_master;
|
||||
# if these DELETE did nothing on the master, we need to do them manually on the
|
||||
# slave.
|
||||
delete from mysql.user where user=_binary'rpl_ignore_grant';
|
||||
delete from mysql.db where user=_binary'rpl_ignore_grant';
|
||||
flush privileges;
|
||||
|
||||
# test replication of GRANT
|
||||
connection master;
|
||||
create user rpl_do_grant@localhost;
|
||||
@@ -27,13 +15,13 @@ show grants for rpl_do_grant@localhost;
|
||||
connection master;
|
||||
set password for rpl_do_grant@localhost=password("does it work?");
|
||||
sync_slave_with_master;
|
||||
select authentication_string<>_binary'' from mysql.user where user=_binary'rpl_do_grant';
|
||||
select authentication_string<>'' from mysql.user where user='rpl_do_grant';
|
||||
|
||||
#
|
||||
# Bug#24158 SET PASSWORD in binary log fails under ANSI_QUOTES
|
||||
#
|
||||
connection master;
|
||||
update mysql.user set authentication_string='' where user='rpl_do_grant';
|
||||
update mysql.global_priv set priv=json_remove(priv, '$.authentication_string') where user='rpl_do_grant';
|
||||
flush privileges;
|
||||
select authentication_string<>'' from mysql.user where user='rpl_do_grant';
|
||||
set sql_mode='ANSI_QUOTES';
|
||||
@@ -42,18 +30,10 @@ set sql_mode='';
|
||||
sync_slave_with_master;
|
||||
select authentication_string<>'' from mysql.user where user='rpl_do_grant';
|
||||
|
||||
|
||||
# clear what we have done, to not influence other tests.
|
||||
connection master;
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
drop user rpl_do_grant@localhost;
|
||||
sync_slave_with_master;
|
||||
# The mysql database is not replicated, so we have to do the deletes
|
||||
# manually on the slave as well.
|
||||
delete from mysql.user where user=_binary'rpl_do_grant';
|
||||
delete from mysql.db where user=_binary'rpl_do_grant';
|
||||
flush privileges;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
@@ -363,6 +343,8 @@ SELECT Grantor FROM mysql.tables_priv WHERE User='user_bug27606';
|
||||
|
||||
--connection master
|
||||
DROP USER user_bug27606@localhost;
|
||||
update mysql.user set plugin='';
|
||||
select priv into @root_priv from mysql.global_priv where user='root' and host='127.0.0.1';
|
||||
update mysql.global_priv set priv=@root_priv where user='root' and host='localhost';
|
||||
|
||||
|
||||
--source include/rpl_end.inc
|
||||
|
@@ -3,7 +3,7 @@ source include/have_collation.inc;
|
||||
source include/master-slave.inc;
|
||||
|
||||
call mtr.add_suppression("Can't find record in 't.'");
|
||||
call mtr.add_suppression("Can't find record in 'user'");
|
||||
call mtr.add_suppression("Can't find record in 'global_priv'");
|
||||
call mtr.add_suppression("Can't find record in 'tables_priv'");
|
||||
|
||||
#
|
||||
@@ -69,7 +69,7 @@ create table mysqltest2.t2 (id int);
|
||||
GRANT SELECT ON mysqltest2.t2 TO mysqltest4@localhost IDENTIFIED BY 'pass';
|
||||
|
||||
# Create a grant manually
|
||||
insert into mysql.user (user, host) values ("mysqltest5", "somehost");
|
||||
insert into mysql.global_priv (user, host) values ("mysqltest5", "somehost");
|
||||
|
||||
# Partial replicate 3 with *.*
|
||||
GRANT SELECT ON *.* TO mysqltest6@localhost;
|
||||
|
@@ -2,10 +2,50 @@
|
||||
# By JBM 2005-02-15 Wrapped to allow reuse of test code#
|
||||
########################################################
|
||||
-- source include/have_binlog_format_row.inc
|
||||
# Slow test, don't run during staging part
|
||||
-- source include/not_staging.inc
|
||||
-- source include/master-slave.inc
|
||||
|
||||
let $engine_type=MYISAM;
|
||||
-- source include/rpl_row_001.test
|
||||
# Test if the slave SQL thread can be more than 16K behind the slave
|
||||
# I/O thread (> IO_SIZE)
|
||||
|
||||
# we'll use table-level locking to delay slave SQL thread
|
||||
eval CREATE TABLE t1 (n INT);
|
||||
sync_slave_with_master;
|
||||
connection master;
|
||||
RESET MASTER;
|
||||
connection slave;
|
||||
STOP SLAVE;
|
||||
RESET SLAVE;
|
||||
|
||||
connection master;
|
||||
let $1=5000;
|
||||
# Generate 16K of relay log
|
||||
disable_query_log;
|
||||
while ($1)
|
||||
{
|
||||
eval INSERT INTO t1 VALUES($1);
|
||||
dec $1;
|
||||
}
|
||||
enable_query_log;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
save_master_pos;
|
||||
|
||||
# Try to cause a large relay log lag on the slave by locking t1
|
||||
connection slave;
|
||||
LOCK TABLES t1 READ;
|
||||
START SLAVE;
|
||||
UNLOCK TABLES;
|
||||
sync_with_master;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (n INT);
|
||||
INSERT INTO t1 VALUES(3456);
|
||||
sync_slave_with_master;
|
||||
SELECT n FROM t1;
|
||||
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
|
||||
sync_slave_with_master;
|
||||
--source include/rpl_end.inc
|
||||
|
@@ -4,7 +4,6 @@
|
||||
-- source include/master-slave.inc
|
||||
|
||||
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
|
||||
--let $engine_type= myisam
|
||||
|
||||
# Load some data into t1
|
||||
create table t1 (word char(20) not null);
|
||||
@@ -19,7 +18,7 @@ select * from t1 limit 10;
|
||||
sync_slave_with_master;
|
||||
stop slave;
|
||||
connection master;
|
||||
create temporary table tmp select * from mysql.user where host="localhost" and user="root";
|
||||
create temporary table tmp select * from mysql.global_priv where host="localhost" and user="root";
|
||||
set password for root@"localhost" = password('foo');
|
||||
connection slave;
|
||||
start slave;
|
||||
@@ -28,7 +27,7 @@ connection master;
|
||||
# Give slave time to do at last one failed connect retry
|
||||
# This one must be short so that the slave will not stop retrying
|
||||
real_sleep 2;
|
||||
replace into mysql.user select * from tmp;
|
||||
replace into mysql.global_priv select * from tmp;
|
||||
drop temporary table tmp;
|
||||
flush privileges;
|
||||
# Give slave time to connect (will retry every second)
|
||||
@@ -48,7 +47,7 @@ sync_slave_with_master;
|
||||
|
||||
connection master;
|
||||
# we'll use table-level locking to delay slave SQL thread
|
||||
eval create table t1 (n int) engine=$engine_type;
|
||||
eval create table t1 (n int);
|
||||
sync_slave_with_master;
|
||||
connection master;
|
||||
reset master;
|
||||
@@ -114,20 +113,6 @@ connection slave;
|
||||
select count(*) from t1;
|
||||
connection master1;
|
||||
drop table t1;
|
||||
create table t1 (n int);
|
||||
insert into t1 values(3456);
|
||||
insert ignore into mysql.user (Host, User, Password)
|
||||
VALUES ("10.10.10.%", "blafasel2", password("blafasel2"));
|
||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||
update mysql.user set Select_priv = "Y" where User= _binary"blafasel2";
|
||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||
sync_slave_with_master;
|
||||
select n from t1;
|
||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||
connection master1;
|
||||
drop table t1;
|
||||
delete from mysql.user where user="blafasel2";
|
||||
sync_slave_with_master;
|
||||
|
||||
# End of 4.1 tests
|
||||
--source include/rpl_end.inc
|
||||
|
Reference in New Issue
Block a user