You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.5 KiB
111 lines
3.5 KiB
5 months ago
|
--source include/have_debug.inc
|
||
|
|
||
|
--echo #
|
||
|
--echo # WL#9262: All system tables should support 32 character length user names
|
||
|
--echo #
|
||
|
|
||
|
CREATE USER user_name_robert_golebiowski1234@oh_my_gosh_this_is_a_long_hostname_look_at_it_it_has_60_char;
|
||
|
GRANT ALL PRIVILEGES ON *.* TO user_name_robert_golebiowski1234@oh_my_gosh_this_is_a_long_hostname_look_at_it_it_has_60_char WITH GRANT OPTION;
|
||
|
|
||
|
CREATE USER user_name_robert_golebiowski1234@localhost;
|
||
|
GRANT ALL PRIVILEGES ON *.* TO user_name_robert_golebiowski1234@localhost WITH GRANT OPTION;
|
||
|
|
||
|
CREATE USER some_user@localhost;
|
||
|
|
||
|
connect (con_1, localhost, user_name_robert_golebiowski1234,,);
|
||
|
|
||
|
--echo # This will change CURRENT_USER from user_name_robert_golebiowski1234@localhost to
|
||
|
--echo # user_name_robert_golebiowski1234@oh_my_gosh_this_is_a_long_hostname_look_at_it_it_has_60_char
|
||
|
--echo # We have to do this in the server code as we are not able to simulate connecting to
|
||
|
--echo # such a host from MTR
|
||
|
SET @@global.debug="+d,wl_9262_set_max_length_hostname";
|
||
|
FLUSH PRIVILEGES;
|
||
|
SET @@global.debug="-d,wl_9262_set_max_length_hostname";
|
||
|
SELECT CURRENT_USER();
|
||
|
|
||
|
CREATE DATABASE db_1;
|
||
|
CREATE TABLE db_1.test_table(ID INT);
|
||
|
|
||
|
--echo # This should just work and Grantor should not be truncated
|
||
|
GRANT SELECT ON db_1.test_table TO some_user@localhost;
|
||
|
|
||
|
SELECT Grantor FROM mysql.tables_priv WHERE USER = 'some_user';
|
||
|
SELECT LENGTH(Grantor) FROM mysql.tables_priv WHERE USER = 'some_user';
|
||
|
|
||
|
DROP USER user_name_robert_golebiowski1234@localhost;
|
||
|
DROP USER some_user@localhost;
|
||
|
DROP USER user_name_robert_golebiowski1234@oh_my_gosh_this_is_a_long_hostname_look_at_it_it_has_60_char;
|
||
|
DROP DATABASE db_1;
|
||
|
|
||
|
--connection default
|
||
|
--disconnect con_1
|
||
|
|
||
|
--echo #
|
||
|
--echo # If acl_load() fails unexpectedly we shouldn't delete the acl cache
|
||
|
--echo #
|
||
|
use test;
|
||
|
CREATE ROLE r1,r2;
|
||
|
CREATE USER u1@localhost IDENTIFIED BY 'foo';
|
||
|
GRANT all on *.* to u1@localhost;
|
||
|
GRANT r1,r2 TO u1@localhost;
|
||
|
GRANT ALL ON *.* TO r1;
|
||
|
SHOW GRANTS FOR u1@localhost USING r1;
|
||
|
ALTER USER u1@localhost DEFAULT ROLE r1;
|
||
|
SET @@global.debug="+d,induce_acl_load_failure";
|
||
|
GRANT r1 TO r2;
|
||
|
--error ER_UNKNOWN_ERROR
|
||
|
FLUSH PRIVILEGES;
|
||
|
connect (con1,localhost,u1,foo,);
|
||
|
SHOW GRANTS;
|
||
|
connection default;
|
||
|
REVOKE r1 FROM r2;
|
||
|
SET @@global.debug="+d,induce_acl_load_failure";
|
||
|
--error ER_UNKNOWN_ERROR
|
||
|
FLUSH PRIVILEGES;
|
||
|
--echo # Grant should not have changed
|
||
|
SHOW GRANTS FOR u1@localhost USING r1;
|
||
|
connection con1;
|
||
|
--echo # Grant should not have changed
|
||
|
SHOW GRANTS;
|
||
|
connection default;
|
||
|
disconnect con1;
|
||
|
SET @@global.debug="-d,induce_acl_load_failure";
|
||
|
FLUSH PRIVILEGES;
|
||
|
DROP USER u1@localhost;
|
||
|
DROP ROLE r1,r2;
|
||
|
|
||
|
--echo #
|
||
|
--echo # If reload_roles_cache() fails unexpectedly, we should be able to
|
||
|
--echo # revert the roles cache to previous sane state
|
||
|
--echo #
|
||
|
CREATE USER u1;
|
||
|
CREATE ROLE r1;
|
||
|
GRANT r1 TO u1;
|
||
|
GRANT SELECT ON *.* TO r1;
|
||
|
SET DEFAULT ROLE ALL TO u1;
|
||
|
SELECT * FROM mysql.role_edges;
|
||
|
SELECT * FROM mysql.default_roles;
|
||
|
# Since foo have some privilege over mysql database therefore,
|
||
|
# following must succeed
|
||
|
connect(foo_conn, localhost, u1,);
|
||
|
USE mysql;
|
||
|
|
||
|
--connection default
|
||
|
--disconnect foo_conn
|
||
|
|
||
|
# Trigger a debug execution in role cache reinitialization and return error,
|
||
|
# in turn this leads backup copies to be restored.
|
||
|
SET @@global.debug="+d, dbug_fail_in_role_cache_reinit";
|
||
|
--error ER_TABLE_CORRUPT
|
||
|
FLUSH PRIVILEGES;
|
||
|
# Since backup copies of roles are restored hence following must succeed
|
||
|
connect(foo_conn, localhost, u1,);
|
||
|
USE mysql;
|
||
|
|
||
|
--connection default
|
||
|
--disconnect foo_conn
|
||
|
|
||
|
SET @@global.debug="-d, dbug_fail_in_role_cache_reinit";
|
||
|
DROP USER u1;
|
||
|
DROP ROLE r1;
|