config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/rpl/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/suite/rpl/t/rpl_user_if_exists.test

# Created: 2015-07-01  Lalit Choudhary
# WL#8540
# Testing IF [NOT] EXISTS clause in CREATE/DROP/ALTER USER with Replication.

--source include/master-slave.inc
--connection master
--echo [On Master]
--echo #
--echo #
--connection master
--echo [On Master]
--echo # No users exist:

# For already existing users in case of CREATE USER IF NOT EXISTS
# and for non-existing users in case of ALTER USER IF EXISTS,
# the warnings will be generated if default authentication plugin
# is used while writing the entries to binlog.
call mtr.add_suppression('Corresponding entry in binary log used default authentication.*');

DROP USER IF EXISTS wl8540@nohost1, wl8540@nohost2;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';
ALTER USER IF EXISTS wl8540@nohost1, wl8540@nohost2 ACCOUNT LOCK;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';
CREATE USER IF NOT EXISTS wl8540@nohost1, wl8540@nohost2;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';

--source include/sync_slave_sql_with_master.inc
--echo [On Slave]
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';

--connection master
--echo [On Master]
--echo # All users exist:

ALTER USER IF EXISTS wl8540@nohost1, wl8540@nohost2 ACCOUNT LOCK;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';
CREATE USER IF NOT EXISTS wl8540@nohost1, wl8540@nohost2;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';
DROP USER IF EXISTS wl8540@nohost1, wl8540@nohost2;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';

--source include/sync_slave_sql_with_master.inc
--echo [On Slave]
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';

--connection master
--echo [On Master]
CREATE USER wl8540@nohost1;

# One of two users exist:

DROP USER IF EXISTS wl8540@nohost1, wl8540@nohost2;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';
ALTER USER IF EXISTS wl8540@nohost1, wl8540@nohost2 ACCOUNT LOCK;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';
CREATE USER IF NOT EXISTS wl8540@nohost1, wl8540@nohost2;
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';

--source include/sync_slave_sql_with_master.inc
--echo [On Slave]
SELECT COUNT(*) FROM mysql.user WHERE user = 'wl8540';

# Creating users on SLAVE
CREATE USER IF NOT EXISTS slave_user1@localhost
IDENTIFIED WITH 'mysql_native_password' BY 'auth_string#%y';

CREATE USER IF NOT EXISTS slave_user2@localhost;

--connection master
--echo [On MASTER]

# Creating slave_user1 not exists on MASTER and exist on SLAVE.
CREATE USER IF NOT EXISTS slave_user1@localhost
IDENTIFIED WITH 'mysql_native_password' BY 'auth_string#%y';

# ALTER slave_user2 not exists on MASTER and exist on SLAVE.
ALTER USER IF EXISTS slave_user2@localhost
IDENTIFIED WITH 'sha256_password' WITH MAX_CONNECTIONS_PER_HOUR 2;

# Dropping slave_user2 not exists on MASTER and exist on SLAVE.
DROP USER IF EXISTS slave_user2@localhost;

# Cleanup
DROP USER IF EXISTS wl8540@nohost1, wl8540@nohost2,
                    slave_user1@localhost,slave_user2@localhost;
FLUSH PRIVILEGES;

--source include/sync_slave_sql_with_master.inc

# Search for the warnings in the server log
let server_log= $MYSQLTEST_VARDIR/log/mysqld.1.err;
let SEARCH_FILE= $server_log;
--echo # Search warnings in the server log

--let SEARCH_PATTERN= Following users were specified in CREATE USER IF NOT EXISTS
--source include/search_pattern_in_file.inc

--echo WL11144: Check that ALTER/CREATE/DROP USER IF [NOT] EXISTS will succesfully replicate in multi user scenarios

--source include/rpl_connection_master.inc
--echo # All users exist on master, some on slave

CREATE USER u1,u2;
set @@session.sql_log_bin=0;
CREATE USER u3,u4;
set @@session.sql_log_bin=1;

ALTER USER IF EXISTS u1, u2, u3, u4 ACCOUNT LOCK;
CREATE USER IF NOT EXISTS u1, u2, u3, u4;
DROP USER u1, u2, u3, u4;

CREATE USER u1,u2;
set @@session.sql_log_bin=0;
CREATE USER u3,u4;
set @@session.sql_log_bin=1;

DROP USER IF EXISTS u1, u2, u3, u4;
--source include/sync_slave_sql_with_master.inc

--echo # All users exist on master, none on slave

--source include/rpl_connection_master.inc
set @@session.sql_log_bin=0;
CREATE USER u1,u2,u3,u4;
set @@session.sql_log_bin=1;

ALTER USER IF EXISTS u1, u2, u3, u4 ACCOUNT LOCK;
CREATE USER IF NOT EXISTS u1, u2, u3, u4;
DROP USER u1, u2, u3, u4;

set @@session.sql_log_bin=0;
CREATE USER u1,u2,u3,u4;
set @@session.sql_log_bin=1;

DROP USER IF EXISTS u1, u2, u3, u4;
--source include/sync_slave_sql_with_master.inc

--echo # Some users exist on master, others on slave

--source include/rpl_connection_master.inc
set @@session.sql_log_bin=0;
CREATE USER u3,u4;
set @@session.sql_log_bin=1;

--source include/sync_slave_sql_with_master.inc
CREATE USER u1,u2;

--source include/rpl_connection_master.inc
ALTER USER IF EXISTS u1, u2, u3, u4 ACCOUNT LOCK;
CREATE USER IF NOT EXISTS u1, u2, u3, u4;

set @@session.sql_log_bin=0;
DROP USER u1,u2;
set @@session.sql_log_bin=1;

--source include/sync_slave_sql_with_master.inc
DROP USER u3,u4;

--source include/rpl_connection_master.inc
DROP USER IF EXISTS u1, u2, u3, u4;

--echo # Some users exist on master, all on slave

--source include/sync_slave_sql_with_master.inc
CREATE USER u1,u2;

--source include/rpl_connection_master.inc
CREATE USER u3,u4;

ALTER USER IF EXISTS u1, u2, u3, u4 ACCOUNT LOCK;
CREATE USER IF NOT EXISTS u1, u2, u3, u4;

set sql_log_bin=0;
DROP USER u1,u2;
set sql_log_bin=1;

DROP USER IF EXISTS u1, u2, u3, u4;
--source include/sync_slave_sql_with_master.inc

--echo # Some users exist on master, none on slave

--source include/rpl_connection_master.inc
set @@session.sql_log_bin=0;
CREATE USER u3,u4;
set @@session.sql_log_bin=1;

ALTER USER IF EXISTS u1, u2, u3, u4 ACCOUNT LOCK;
CREATE USER IF NOT EXISTS u1, u2, u3, u4;
DROP USER u1, u2, u3, u4;

set @@session.sql_log_bin=0;
CREATE USER u3,u4;
set @@session.sql_log_bin=1;
DROP USER IF EXISTS u1, u2, u3, u4;

--echo # No users exist on master, some on slave

--source include/sync_slave_sql_with_master.inc
CREATE USER u3,u4;

--source include/rpl_connection_master.inc

ALTER USER IF EXISTS u1, u2, u3, u4 ACCOUNT LOCK;
CREATE USER IF NOT EXISTS u1, u2, u3, u4;
DROP USER u1, u2;

set @@session.sql_log_bin=0;
DROP USER u3,u4;
set @@session.sql_log_bin=1;

DROP USER IF EXISTS u1, u2, u3, u4;

--echo # No users exist on master, all on slave

--source include/sync_slave_sql_with_master.inc

CREATE USER u1,u2,u3,u4;

--source include/rpl_connection_master.inc

ALTER USER IF EXISTS u1, u2, u3, u4 ACCOUNT LOCK;
CREATE USER IF NOT EXISTS u1, u2, u3, u4;

set @@session.sql_log_bin=0;
DROP USER u1, u2, u3, u4;
set @@session.sql_log_bin=1;

DROP USER IF EXISTS u1, u2, u3, u4;

# Check that if Create/alter user if exists gets ERROR it won't be logged in the binary log.
# If GTID mode is ON check that GTID won't be generated.

--let $pos_before= query_get_value(show master status,Position,1)
--let $gtid_executed_before= `SELECT @@GLOBAL.GTID_EXECUTED`

# Gets error due to INCORRECT day value specified.
--error ER_WRONG_VALUE
CREATE USER IF NOT EXISTS u1 PASSWORD EXPIRE INTERVAL 66666 DAY;
--error ER_WRONG_VALUE
ALTER USER IF EXISTS u1 PASSWORD EXPIRE INTERVAL 66666 DAY;

# Gets error as only INTEGERS are allowed.
--error ER_PARSE_ERROR
CREATE USER IF NOT EXISTS u1 PASSWORD EXPIRE INTERVAL 66666888888888888888 DAY;
--error ER_PARSE_ERROR
ALTER USER IF EXISTS u1 PASSWORD EXPIRE INTERVAL 66666888888888888888 DAY;

# Check that  the above statements have not been logged in binary log
--let $assert_text= assert that the above Event has not been added to binlog
--let $assert_cond= [SHOW MASTER STATUS, Position,1] = $pos_before
--source include/assert.inc

--let $gtid_executed_after= `SELECT @@GLOBAL.GTID_EXECUTED`
# Check that the GTID has not been generated for the above failed statements
--let $assert_text= assert that the GTID has not been generated
--let $assert_cond= "$gtid_executed_after" = "$gtid_executed_before"
--source include/assert.inc

# Check that replication works correctly in multi create/alter statements
# where create/alter of some user gets failed.

# User u1 does not exists

CREATE USER u3 IDENTIFIED WITH 'mysql_native_password';
# CREATE gets ERROR since shsh auth_plugin do not exists
--error ER_PLUGIN_IS_NOT_LOADED
CREATE USER IF NOT EXISTS u1 IDENTIFIED WITH 'shsh',u2 IDENTIFIED WITH 'sha256_password',u3 IDENTIFIED WITH 'sha256_password';
--source include/sync_slave_sql_with_master.inc

# Check that user u3's auth_plugin has not changed
--let $auth_plugin= query_get_value(select *from mysql.user where User='u3',plugin, 1)
--let $assert_text= assert that u3's auth_plugin has not changed
--let $assert_cond= "mysql_native_password" = "$auth_plugin"
--source include/assert.inc

--source include/rpl_connection_master.inc
DROP USER u2;

# User u1 exists

CREATE USER u1;
# CREATE gets ERROR since shsh auth_plugin do not exists
--error ER_PLUGIN_IS_NOT_LOADED
CREATE USER IF NOT EXISTS u1 IDENTIFIED WITH 'shsh',u2 IDENTIFIED BY 'pass',u3 IDENTIFIED WITH 'sha256_password';
--source include/sync_slave_sql_with_master.inc

# Check that user u3's auth_plugin has not changed
--let $auth_plugin= query_get_value(select *from mysql.user where User='u3',plugin, 1)
--let $assert_text= assert that u3's auth_plugin has not changed
--let $assert_cond=  "$auth_plugin" = "mysql_native_password"
--source include/assert.inc

--source include/rpl_connection_master.inc

# ALTER gets ERROR since shsh auth_plugin do not exists
--error ER_PLUGIN_IS_NOT_LOADED
ALTER USER IF EXISTS u1 IDENTIFIED WITH 'shsh',u2 IDENTIFIED BY 'xyz',u3 IDENTIFIED WITH 'sha256_password';

--source include/sync_slave_sql_with_master.inc

# Check that user u3's auth_plugin has got changed
--let $auth_plugin= query_get_value(select *from mysql.user where User='u3',plugin, 1)
--let $assert_text= assert that u3's auth_plugin has been changed by alter
--let $assert_cond=  "$auth_plugin" = "sha256_password"
--source include/assert.inc

--source include/rpl_connection_master.inc
DROP USER u1,u2,u3;

--source include/rpl_end.inc

Man Man