600 lines
31 KiB
Plaintext
600 lines
31 KiB
Plaintext
SHOW DATABASES LIKE 'information_schema';
|
|
Database (information_schema)
|
|
information_schema
|
|
#######################################################################
|
|
# Testcase 3.2.1.20: USE INFORMATION_SCHEMA is supported
|
|
#######################################################################
|
|
# Switch to connection default
|
|
USE test;
|
|
SELECT DATABASE();
|
|
DATABASE()
|
|
test
|
|
USE information_schema;
|
|
SELECT DATABASE();
|
|
DATABASE()
|
|
information_schema
|
|
DROP USER 'testuser1'@'localhost';
|
|
CREATE USER 'testuser1'@'localhost';
|
|
# Establish connection testuser1 (user=testuser1)
|
|
SELECT DATABASE();
|
|
DATABASE()
|
|
test
|
|
USE information_schema;
|
|
SELECT DATABASE();
|
|
DATABASE()
|
|
information_schema
|
|
# Switch to connection default and close connection testuser1
|
|
DROP USER 'testuser1'@'localhost';
|
|
#######################################################################
|
|
# Testcase TBD1: The INFORMATION_SCHEMA cannot be dropped.
|
|
#######################################################################
|
|
DROP DATABASE information_schema;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
#######################################################################
|
|
# Testcase TBD2: There cannot be a second database INFORMATION_SCHEMA.
|
|
#######################################################################
|
|
CREATE DATABASE information_schema;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
##################################################################################
|
|
# Testcase 3.2.1.6+3.2.1.7: No user may create an INFORMATION_SCHEMA table or view
|
|
##################################################################################
|
|
# Switch to connection default (user=root)
|
|
USE information_schema;
|
|
CREATE TABLE schemata ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE tables ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE columns ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE character_sets ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE collations ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE collation_character_set_applicability ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE routines ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE statistics ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE views ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE user_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE schema_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE table_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE column_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE table_constraints ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE key_column_usage ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE triggers ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE VIEW tables AS SELECT 'garbage';
|
|
ERROR 42S01: Table 'tables' already exists
|
|
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
|
|
ERROR 42S02: Table 'information_schema.TABLES' doesn't exist
|
|
CREATE VIEW v1 AS SELECT 'garbage';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
USE test;
|
|
CREATE TABLE information_schema. schemata ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. tables ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. columns ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. character_sets ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. collations ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. collation_character_set_applicability ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. routines ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. statistics ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. views ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. user_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. schema_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. table_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. column_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. table_constraints ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. key_column_usage ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. triggers ( c1 INT );
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE VIEW information_schema.tables AS SELECT 'garbage';
|
|
ERROR 42S01: Table 'tables' already exists
|
|
CREATE VIEW information_schema.tables AS
|
|
SELECT * FROM information_schema.tables;
|
|
ERROR 42S02: Table 'information_schema.TABLES' doesn't exist
|
|
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
DROP USER 'testuser1'@'localhost';
|
|
CREATE USER 'testuser1'@'localhost';
|
|
GRANT ALL ON *.* TO testuser1@localhost;
|
|
SHOW GRANTS FOR testuser1@localhost;
|
|
Grants for testuser1@localhost
|
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `testuser1`@`localhost`
|
|
GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `testuser1`@`localhost`
|
|
# Establish connection testuser1 (user=testuser1)
|
|
USE information_schema;
|
|
CREATE TABLE schemata ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE tables ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE columns ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE character_sets ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE collations ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE collation_character_set_applicability ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE routines ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE statistics ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE views ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE user_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE schema_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE table_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE column_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE table_constraints ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE key_column_usage ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE triggers ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE t1 (f1 INT, f2 INT, f3 INT);
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE VIEW tables AS SELECT 'garbage';
|
|
ERROR 42S01: Table 'tables' already exists
|
|
CREATE VIEW tables AS SELECT * FROM information_schema.tables;
|
|
ERROR 42S02: Table 'information_schema.TABLES' doesn't exist
|
|
CREATE VIEW v1 AS SELECT 'garbage';
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
USE test;
|
|
CREATE TABLE information_schema. schemata ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. tables ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. columns ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. character_sets ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. collations ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. collation_character_set_applicability ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. routines ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. statistics ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. views ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. user_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. schema_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. table_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. column_privileges ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. table_constraints ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. key_column_usage ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema. triggers ( c1 INT );
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE TABLE information_schema.t1 (f1 INT, f2 INT, f3 INT);
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
CREATE VIEW information_schema.tables AS SELECT 'garbage';
|
|
ERROR 42S01: Table 'tables' already exists
|
|
CREATE VIEW information_schema.tables AS
|
|
SELECT * FROM information_schema.tables;
|
|
ERROR 42S02: Table 'information_schema.TABLES' doesn't exist
|
|
CREATE VIEW information_schema.v1 AS SELECT 'garbage';
|
|
ERROR 42000: Access denied for user 'testuser1'@'localhost' to database 'information_schema'
|
|
# Switch to connection default (user=root) and close connection testuser1
|
|
DROP USER 'testuser1'@'localhost';
|
|
###############################################################################
|
|
# Testcase 3.2.1.1+3.2.1.2: INFORMATION_SCHEMA tables can be queried via SELECT
|
|
###############################################################################
|
|
DROP DATABASE IF EXISTS db_datadict;
|
|
CREATE DATABASE db_datadict;
|
|
CREATE TABLE db_datadict.t1_first (f1 BIGINT UNIQUE, f2 BIGINT)
|
|
ENGINE = <some_engine>;
|
|
CREATE TABLE db_datadict.t1_second (f1 BIGINT UNIQUE, f2 BIGINT)
|
|
ENGINE = <some_engine>;
|
|
# Attention: The protocolling of the next result set is disabled.
|
|
SELECT * FROM information_schema.tables;
|
|
SELECT table_name FROM information_schema.tables
|
|
WHERE table_schema = 'db_datadict';
|
|
TABLE_NAME
|
|
t1_first
|
|
t1_second
|
|
SELECT LENGTH(table_name) FROM information_schema.tables
|
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
|
LENGTH(table_name)
|
|
8
|
|
9
|
|
SELECT count(table_name) FROM information_schema.tables
|
|
WHERE table_schema LIKE 'db_datadic%';
|
|
count(table_name)
|
|
2
|
|
SELECT CAST((LENGTH(table_schema) + LENGTH(table_name)) AS DECIMAL(15,1))
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'db_datadict';
|
|
CAST((LENGTH(table_schema) + LENGTH(table_name)) AS DECIMAL(15,1))
|
|
19.0
|
|
20.0
|
|
SELECT table_name FROM information_schema.tables
|
|
WHERE table_name IN ('t1_first','t1_second') ORDER BY table_name LIMIT 1;
|
|
TABLE_NAME
|
|
t1_first
|
|
SELECT table_name FROM information_schema.tables
|
|
WHERE table_name IN ('t1_first','t1_second') ORDER BY table_name LIMIT 1,1;
|
|
TABLE_NAME
|
|
t1_second
|
|
SELECT table_name,table_schema AS my_col FROM information_schema.tables
|
|
WHERE table_name = 't1_first' AND table_schema = 'db_datadict';
|
|
TABLE_NAME my_col
|
|
t1_first db_datadict
|
|
SELECT HIGH_PRIORITY table_name AS my_col FROM information_schema.tables
|
|
WHERE table_name = 't1_first' OR table_name = 't1_second';
|
|
my_col
|
|
t1_first
|
|
t1_second
|
|
SELECT 1 AS my_col FROM information_schema.tables
|
|
WHERE table_name = 't1_third';
|
|
my_col
|
|
SELECT table_name,table_schema INTO @table_name,@table_schema
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'db_datadict' ORDER BY table_name LIMIT 1;
|
|
SELECT @table_name,@table_schema;
|
|
@table_name @table_schema
|
|
t1_first db_datadict
|
|
SELECT table_name,table_schema
|
|
INTO OUTFILE '<OUTFILE>'
|
|
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
|
|
LINES TERMINATED BY '\n'
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'db_datadict' ORDER BY table_name;
|
|
"t1_first","db_datadict"
|
|
"t1_second","db_datadict"
|
|
SELECT table_name FROM information_schema.tables
|
|
WHERE table_name = 't1_first'
|
|
UNION ALL
|
|
SELECT table_name FROM information_schema.tables
|
|
WHERE table_name = 't1_second';
|
|
TABLE_NAME
|
|
t1_first
|
|
t1_second
|
|
SELECT DISTINCT table_schema FROM information_schema.tables
|
|
WHERE table_name IN (SELECT table_name FROM information_schema.tables
|
|
WHERE table_schema = 'db_datadict')
|
|
ORDER BY table_name;
|
|
TABLE_SCHEMA
|
|
db_datadict
|
|
SELECT table_name FROM information_schema.tables t1
|
|
LEFT JOIN information_schema.tables t2 USING(table_name,table_schema)
|
|
WHERE t2.table_schema = 'db_datadict'
|
|
ORDER BY table_name;
|
|
TABLE_NAME
|
|
t1_first
|
|
t1_second
|
|
USE test;
|
|
SELECT * FROM tables;
|
|
ERROR 42S02: Table 'test.tables' doesn't exist
|
|
#########################################################################
|
|
# Testcase 3.2.1.17+3.2.1.18
|
|
#########################################################################
|
|
DROP DATABASE IF EXISTS db_datadict;
|
|
CREATE DATABASE db_datadict;
|
|
CREATE TABLE db_datadict.t1 (f1 BIGINT UNIQUE, f2 BIGINT)
|
|
ENGINE = <some_engine>;
|
|
SELECT * FROM db_datadict.t1;
|
|
f1 f2
|
|
DROP USER 'testuser1'@'localhost';
|
|
CREATE USER 'testuser1'@'localhost';
|
|
DROP USER 'testuser2'@'localhost';
|
|
CREATE USER 'testuser2'@'localhost';
|
|
GRANT CREATE VIEW,SELECT ON db_datadict.* TO testuser1@localhost
|
|
WITH GRANT OPTION;
|
|
GRANT USAGE ON db_datadict.* TO testuser2@localhost;
|
|
FLUSH PRIVILEGES;
|
|
GRANT SELECT on information_schema.* TO testuser1@localhost;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT CREATE VIEW ON information_schema.* TO 'u_6_401018'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
# Establish connection testuser1 (user=testuser1)
|
|
SELECT table_schema,table_name FROM information_schema.tables
|
|
WHERE table_schema = 'information_schema' AND table_name = 'TABLES';
|
|
TABLE_SCHEMA TABLE_NAME
|
|
information_schema TABLES
|
|
SELECT * FROM information_schema.table_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
|
|
SELECT * FROM information_schema.schema_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
GRANTEE TABLE_CATALOG TABLE_SCHEMA PRIVILEGE_TYPE IS_GRANTABLE
|
|
CREATE VIEW db_datadict.v2 AS
|
|
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
|
FROM information_schema.tables WHERE table_schema = 'db_datadict';
|
|
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
|
FROM db_datadict.v2;
|
|
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
|
db_datadict t1 BASE TABLE
|
|
db_datadict v2 VIEW
|
|
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
|
FROM information_schema.tables WHERE table_schema = 'db_datadict';
|
|
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
|
db_datadict t1 BASE TABLE
|
|
db_datadict v2 VIEW
|
|
GRANT SELECT ON db_datadict.v2 to testuser2@localhost;
|
|
# Establish connection testuser2 (user=testuser2)
|
|
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
|
FROM db_datadict.v2;
|
|
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
|
db_datadict v2 VIEW
|
|
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE
|
|
FROM information_schema.tables WHERE table_schema = 'db_datadict';
|
|
TABLE_SCHEMA TABLE_NAME TABLE_TYPE
|
|
db_datadict v2 VIEW
|
|
# Switch to connection default and close connections testuser1 and testuser2
|
|
DROP USER 'testuser1'@'localhost';
|
|
DROP USER 'testuser2'@'localhost';
|
|
DROP DATABASE db_datadict;
|
|
#########################################################################
|
|
# Testcase 3.2.1.19
|
|
#########################################################################
|
|
DROP USER 'testuser1'@'localhost';
|
|
CREATE USER 'testuser1'@'localhost';
|
|
SELECT 'empty result set was expected' AS my_col
|
|
FROM information_schema.schema_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
my_col
|
|
SELECT 'empty result set was expected' AS my_col
|
|
FROM information_schema.table_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
my_col
|
|
SELECT 'empty result set was expected' AS my_col
|
|
FROM information_schema.column_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
my_col
|
|
GRANT ALTER ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT ALTER ROUTINE ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT CREATE ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT CREATE ROUTINE ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT CREATE TEMPORARY TABLES ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT DELETE ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT DROP ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT EXECUTE ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT INDEX ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT INSERT ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT LOCK TABLES ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
GRANT UPDATE ON information_schema.*
|
|
TO 'testuser1'@'localhost';
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
SELECT 'empty result set was expected' AS my_col
|
|
FROM information_schema.schema_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
my_col
|
|
SELECT 'empty result set was expected' AS my_col
|
|
FROM information_schema.table_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
my_col
|
|
SELECT 'empty result set was expected' AS my_col
|
|
FROM information_schema.column_privileges
|
|
WHERE table_schema = 'information_schema';
|
|
my_col
|
|
DROP USER 'testuser1'@'localhost';
|
|
#########################################################################
|
|
# Testcase 3.2.1.16
|
|
#########################################################################
|
|
SELECT DISTINCT table_schema FROM information_schema.columns
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
SELECT DISTINCT table_schema FROM information_schema.column_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT constraint_schema,table_schema
|
|
FROM information_schema.key_column_usage
|
|
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
|
constraint_schema table_schema
|
|
SELECT DISTINCT routine_schema FROM information_schema.routines
|
|
WHERE routine_schema LIKE 'db_data%';
|
|
ROUTINE_SCHEMA
|
|
SELECT DISTINCT schema_name FROM information_schema.schemata
|
|
WHERE schema_name LIKE 'db_data%';
|
|
SCHEMA_NAME
|
|
SELECT DISTINCT table_schema FROM information_schema.schema_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT table_schema,index_schema FROM information_schema.statistics
|
|
WHERE table_schema LIKE 'db_data%' OR index_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA INDEX_SCHEMA
|
|
SELECT DISTINCT table_schema FROM information_schema.tables
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
SELECT DISTINCT constraint_schema,table_schema
|
|
FROM information_schema.table_constraints
|
|
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
|
constraint_schema table_schema
|
|
SELECT DISTINCT table_schema FROM information_schema.table_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT trigger_schema,event_object_schema
|
|
FROM information_schema.triggers
|
|
WHERE trigger_schema LIKE 'db_data%' OR event_object_schema LIKE 'db_data%';
|
|
TRIGGER_SCHEMA EVENT_OBJECT_SCHEMA
|
|
SELECT DISTINCT table_schema FROM information_schema.views
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
DROP DATABASE IF EXISTS db_datadict;
|
|
CREATE DATABASE db_datadict;
|
|
CREATE TABLE db_datadict.t1 (f1 BIGINT, f2 BIGINT NOT NULL, f3 BIGINT,
|
|
PRIMARY KEY(f1))
|
|
ENGINE = <some_engine>;
|
|
CREATE UNIQUE INDEX UIDX ON db_datadict.t1(f3);
|
|
CREATE PROCEDURE db_datadict.sproc1() SELECT 'db_datadict';
|
|
CREATE FUNCTION db_datadict.func1() RETURNS INT RETURN 0;
|
|
CREATE TRIGGER db_datadict.trig1 BEFORE INSERT ON db_datadict.t1
|
|
FOR EACH ROW SET @aux = 1;
|
|
CREATE VIEW db_datadict.v1 AS SELECT * FROM db_datadict.t1;
|
|
CREATE VIEW db_datadict.v2 AS SELECT * FROM information_schema.tables;
|
|
SELECT DISTINCT table_schema FROM information_schema.columns
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
db_datadict
|
|
SELECT DISTINCT table_schema FROM information_schema.column_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT constraint_schema,table_schema
|
|
FROM information_schema.key_column_usage
|
|
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
|
constraint_schema table_schema
|
|
db_datadict db_datadict
|
|
SELECT DISTINCT routine_schema FROM information_schema.routines
|
|
WHERE routine_schema LIKE 'db_data%';
|
|
ROUTINE_SCHEMA
|
|
db_datadict
|
|
SELECT DISTINCT schema_name FROM information_schema.schemata
|
|
WHERE schema_name LIKE 'db_data%';
|
|
SCHEMA_NAME
|
|
db_datadict
|
|
SELECT DISTINCT table_schema FROM information_schema.schema_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT table_schema,index_schema FROM information_schema.statistics
|
|
WHERE table_schema LIKE 'db_data%' OR index_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA INDEX_SCHEMA
|
|
db_datadict db_datadict
|
|
SELECT DISTINCT table_schema FROM information_schema.tables
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
db_datadict
|
|
SELECT DISTINCT constraint_schema,table_schema
|
|
FROM information_schema.table_constraints
|
|
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
|
constraint_schema table_schema
|
|
db_datadict db_datadict
|
|
SELECT DISTINCT table_schema FROM information_schema.table_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT trigger_schema,event_object_schema
|
|
FROM information_schema.triggers
|
|
WHERE trigger_schema LIKE 'db_data%' OR event_object_schema LIKE 'db_data%';
|
|
TRIGGER_SCHEMA EVENT_OBJECT_SCHEMA
|
|
db_datadict db_datadict
|
|
SELECT DISTINCT table_schema FROM information_schema.views
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
db_datadict
|
|
DROP USER 'testuser1'@'localhost';
|
|
CREATE USER 'testuser1'@'localhost';
|
|
GRANT ALL ON test.* TO 'testuser1'@'localhost';
|
|
# Establish connection testuser1 (user=testuser1)
|
|
SELECT DISTINCT table_schema FROM information_schema.columns
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
SELECT DISTINCT table_schema FROM information_schema.column_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT constraint_schema,table_schema
|
|
FROM information_schema.key_column_usage
|
|
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
|
constraint_schema table_schema
|
|
SELECT DISTINCT routine_schema FROM information_schema.routines
|
|
WHERE routine_schema LIKE 'db_data%';
|
|
ROUTINE_SCHEMA
|
|
SELECT DISTINCT schema_name FROM information_schema.schemata
|
|
WHERE schema_name LIKE 'db_data%';
|
|
SCHEMA_NAME
|
|
SELECT DISTINCT table_schema FROM information_schema.schema_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT table_schema,index_schema FROM information_schema.statistics
|
|
WHERE table_schema LIKE 'db_data%' OR index_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA INDEX_SCHEMA
|
|
SELECT DISTINCT table_schema FROM information_schema.tables
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
SELECT DISTINCT constraint_schema,table_schema
|
|
FROM information_schema.table_constraints
|
|
WHERE constraint_schema LIKE 'db_data%' OR table_schema LIKE 'db_data%';
|
|
constraint_schema table_schema
|
|
SELECT DISTINCT table_schema FROM information_schema.table_privileges
|
|
WHERE table_schema LIKE 'db_data%';
|
|
table_schema
|
|
SELECT DISTINCT trigger_schema,event_object_schema
|
|
FROM information_schema.triggers
|
|
WHERE trigger_schema LIKE 'db_data%' OR event_object_schema LIKE 'db_data%';
|
|
TRIGGER_SCHEMA EVENT_OBJECT_SCHEMA
|
|
SELECT DISTINCT table_schema FROM information_schema.views
|
|
WHERE table_schema LIKE 'db_data%';
|
|
TABLE_SCHEMA
|
|
# Switch to connection default and close connections testuser1 and testuser2
|
|
DROP USER 'testuser1'@'localhost';
|
|
DROP DATABASE db_datadict;
|
|
########################################################################
|
|
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
|
# DDL on INFORMATION_SCHEMA tables are not supported
|
|
########################################################################
|
|
DROP PROCEDURE IF EXISTS test.p1;
|
|
CREATE PROCEDURE test.p1()
|
|
INSERT INTO information_schema.tables
|
|
SELECT * FROM information_schema.tables LIMIT 1;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
CREATE PROCEDURE test.p1()
|
|
UPDATE information_schema.columns SET table_schema = 'garbage';
|
|
CALL test.p1();
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
DROP PROCEDURE test.p1;
|
|
CREATE PROCEDURE test.p1()
|
|
DELETE FROM information_schema.schemata;
|
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
|
#########################################################################
|
|
# Testcase 3.2.17.1+3.2.17.2: To be implemented outside of this script
|
|
#########################################################################
|