mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
This changeset is result of
WL#3982 Test information_schema.processlist and replaces the corresponding tests pushed to mysql-test-extra-5.1/mysql-test/qa-suite/info_schema mysql-test/suite/funcs_1/datadict/datadict_priv.inc: Auxiliary script mysql-test/suite/funcs_1/datadict/processlist_priv.inc: Test of privileges mysql-test/suite/funcs_1/datadict/processlist_val.inc: Test of values mysql-test/suite/funcs_1/r/a_processlist_priv_no_prot.result: Expected results mysql-test/suite/funcs_1/r/a_processlist_val_no_prot.result: Expected results mysql-test/suite/funcs_1/r/b_processlist_priv_ps.result: Expected results mysql-test/suite/funcs_1/r/b_processlist_val_ps.result: Expected results mysql-test/suite/funcs_1/t/a_processlist_priv_no_prot.test: Test of privileges - variant without ps/sp/cursor/view-protocol mysql-test/suite/funcs_1/t/a_processlist_val_no_prot.test: Test of values - variant without ps/sp/cursor/view-protocol mysql-test/suite/funcs_1/t/b_processlist_priv_ps.test: Test of privileges - variant with ps-protocol mysql-test/suite/funcs_1/t/b_processlist_val_ps.test: Test of values - variant with ps-protocol
This commit is contained in:
107
mysql-test/suite/funcs_1/datadict/datadict_priv.inc
Normal file
107
mysql-test/suite/funcs_1/datadict/datadict_priv.inc
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
############## suite/funcs_1/datadict/datadict_priv.inc ################
|
||||||
|
# #
|
||||||
|
# DDL and DML operations on information_schema tables #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2007-08 hhunger Implement this test as part of #
|
||||||
|
# WL#3982 Test information_schema.processlist #
|
||||||
|
# #
|
||||||
|
# Last update: #
|
||||||
|
# 2007-08-14 mleich Some cleanup #
|
||||||
|
# #
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# These variables have to be set before sourcing this file.
|
||||||
|
#
|
||||||
|
# information_schema table to be tested
|
||||||
|
# let $table= processlist;
|
||||||
|
#
|
||||||
|
# columns of the information_schema table e.g. to use in a select.
|
||||||
|
# let $columns= ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO;
|
||||||
|
#
|
||||||
|
# Where clause for an update.
|
||||||
|
# let $update_where= WHERE id=1 ;
|
||||||
|
#
|
||||||
|
# Column to be used in the SET of an update.
|
||||||
|
# let $set_column= user='any_user' ;
|
||||||
|
#
|
||||||
|
# Where clause of a delete.
|
||||||
|
# let $delete_where= WHERE id=1 ;
|
||||||
|
#
|
||||||
|
# Column to be dropped.
|
||||||
|
# let $drop_column= user;
|
||||||
|
#
|
||||||
|
# Column to be indexed
|
||||||
|
# let $index_col= user;
|
||||||
|
|
||||||
|
|
||||||
|
# data access
|
||||||
|
|
||||||
|
eval CREATE TEMPORARY TABLE test.t_$table AS SELECT * FROM $table;
|
||||||
|
|
||||||
|
eval UPDATE test.t_$table SET user='horst' $update_where ;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval INSERT INTO $table SELECT * FROM test.t_$table;
|
||||||
|
|
||||||
|
# bug#30208: CREATE TABLE ...LIKE does not accept dbname.tablename:unknown database
|
||||||
|
eval DROP TABLE test.t_$table;
|
||||||
|
|
||||||
|
--error ER_VIEW_NONUPD_CHECK
|
||||||
|
eval CREATE VIEW test.v_$table ($columns) AS SELECT * FROM $table WITH CHECK OPTION;
|
||||||
|
|
||||||
|
eval CREATE VIEW test.v_$table ($columns) AS SELECT * FROM $table;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval UPDATE test.v_$TABLE SET TIME=NOW() WHERE id = 1;
|
||||||
|
|
||||||
|
eval DROP VIEW test.v_$table;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval UPDATE $table SET $set_column $update_where;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval DELETE FROM $table $delete_where;
|
||||||
|
|
||||||
|
# change privileges
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval REVOKE ALL ON $table FROM current_user;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval GRANT INSERT,UPDATE ON $table TO current_user;
|
||||||
|
|
||||||
|
SHOW GRANTS;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# table access
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval CREATE INDEX i_$table ON $table ($index_col);
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval DROP TABLE $table;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval ALTER TABLE $table DROP COLUMN $drop_column;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval ALTER TABLE $table ADD COLUMN (my_column INT);
|
||||||
|
|
||||||
|
--error ER_UNKNOWN_TABLE
|
||||||
|
eval RENAME TABLE $table TO new_$table;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
eval RENAME TABLE $table TO files;
|
||||||
|
|
||||||
|
--error ER_UNKNOWN_TABLE
|
||||||
|
eval CREATE TABLE new_$table AS SELECT * FROM $table;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# database access
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
DROP DATABASE information_schema;
|
||||||
|
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
RENAME DATABASE information_schema TO info_schema;
|
432
mysql-test/suite/funcs_1/datadict/processlist_priv.inc
Normal file
432
mysql-test/suite/funcs_1/datadict/processlist_priv.inc
Normal file
@@ -0,0 +1,432 @@
|
|||||||
|
############ suite/funcs_1/datadict/processlist_priv.inc ###############
|
||||||
|
# #
|
||||||
|
# Testing of privileges around #
|
||||||
|
# SELECT ... PROCESSLIST/SHOW PROCESSLIST #
|
||||||
|
# #
|
||||||
|
# Note(mleich): #
|
||||||
|
# There is a significant risk to get an unstable test because of #
|
||||||
|
# timing issues. #
|
||||||
|
# Example1: #
|
||||||
|
# 1. Disconnect connection X #
|
||||||
|
# 2. Switch to connection Y #
|
||||||
|
# 3. SHOW PROCESSLIST might present a record like #
|
||||||
|
# <ID> <user> <host> <db> Quit 0 cleaning up NULL #
|
||||||
|
# or even a row where connection X is without #
|
||||||
|
# "Quit" or "cleaning up". #
|
||||||
|
# That means our SHOW PROCESSLIST can come too early. #
|
||||||
|
# Solution: #
|
||||||
|
# Close the connections at the end of the test. #
|
||||||
|
# Example2: #
|
||||||
|
# 1. connection X: SHOW PROCESSLIST/GRANT ... etc. #
|
||||||
|
# 2. Switch to connection Y #
|
||||||
|
# 3. SHOW PROCESSLIST might present a record like #
|
||||||
|
# <ID> <user> <host> <db> Query TIME cleaning up <command> #
|
||||||
|
# <ID> <user> <host> <db> Query TIME writing to net <command> #
|
||||||
|
# Problems happens more often in case of slow filesystem! #
|
||||||
|
# First Solution: #
|
||||||
|
# Insert a dummy SQL command where the cleanup is most probably #
|
||||||
|
# fast before switching to another connection and running #
|
||||||
|
# SHOW/SELECT PROCESSLIST. #
|
||||||
|
# Suppress writing to protocol by assignment to $variable. #
|
||||||
|
# let $my_var= `SELECT 1`; #
|
||||||
|
# Even the 'SELECT 1' was in some cases in state #
|
||||||
|
# "writing to net". #
|
||||||
|
# Final Solution: #
|
||||||
|
# --real_sleep 0.3 #
|
||||||
|
# This value was at least on my box sufficient. #
|
||||||
|
# Please inform us if this test fails so that we can adjust #
|
||||||
|
# the sleep time better or switch to poll routines. #
|
||||||
|
# #
|
||||||
|
# Storage engine variants of this test do not make sense. #
|
||||||
|
# - I_S tables use the MEMORY storage engine whenever possible. #
|
||||||
|
# - There are some I_S table which need column data types which #
|
||||||
|
# are not supported by MEMORY. Example: LONGTEXT/BLOB #
|
||||||
|
# MyISAM will be used for such tables. #
|
||||||
|
# The column PROCESSLIST.INFO is of data type LONGTEXT #
|
||||||
|
# ----> MyISAM #
|
||||||
|
# - There is no impact of the GLOBAL(server) or SESSION default #
|
||||||
|
# storage engine setting on the engine used for I_S tables. #
|
||||||
|
# That means we cannot get NDB or InnoDB instead. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2007-08 hhunger Implement this test as part of #
|
||||||
|
# WL#3982 Test information_schema.processlist #
|
||||||
|
# #
|
||||||
|
# Last update: #
|
||||||
|
# 2007-08-14 mleich Corrections #
|
||||||
|
# #
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# The following variables are used in "datadict_priv.inc" and here.
|
||||||
|
#
|
||||||
|
# information_schema table to be tested
|
||||||
|
let $table= processlist;
|
||||||
|
#
|
||||||
|
# columns of the information_schema table e.g. to use in a select.
|
||||||
|
let $columns= ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO;
|
||||||
|
#
|
||||||
|
# Where clause for an update.
|
||||||
|
let $update_where= WHERE id=1 ;
|
||||||
|
#
|
||||||
|
# Column to be used in the SET of an update.
|
||||||
|
let $set_column= user='any_user' ;
|
||||||
|
#
|
||||||
|
# Where clause of a delete.
|
||||||
|
let $delete_where= WHERE id=1 ;
|
||||||
|
#
|
||||||
|
# Column to be dropped.
|
||||||
|
let $drop_column= user;
|
||||||
|
#
|
||||||
|
# Column to be indexed
|
||||||
|
let $index_col= user;
|
||||||
|
|
||||||
|
USE information_schema;
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 1 Prepare test.
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 1.1 Create two user
|
||||||
|
--echo ####################################################################################
|
||||||
|
# access to info tables as normal user
|
||||||
|
--disable_abort_on_error
|
||||||
|
DROP USER ddicttestuser1@'localhost';
|
||||||
|
DROP USER ddicttestuser2@'localhost';
|
||||||
|
--enable_abort_on_error
|
||||||
|
CREATE USER ddicttestuser1@'localhost';
|
||||||
|
CREATE USER ddicttestuser2@'localhost';
|
||||||
|
SET PASSWORD FOR ddicttestuser1@'localhost' = PASSWORD('ddictpass');
|
||||||
|
SET PASSWORD FOR ddicttestuser2@'localhost' = PASSWORD('ddictpass');
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 1.2 Establish connection con100 (user=ddicttestuser1 with no PROCESS privilege):
|
||||||
|
connect (con100,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo ####################################################################################
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 2 connection default(user=root with default privileges):
|
||||||
|
--echo SHOW/SELECT shows all processes/threads.
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
eval SHOW CREATE TABLE $table;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
eval SHOW $table;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
eval SELECT * FROM $table $select_where ORDER BY id;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
eval SELECT $columns FROM $table $select_where ORDER BY id;
|
||||||
|
--source suite/funcs_1/datadict/datadict_priv.inc
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 3 Switch to connection con100 (user=ddicttestuser1 with no PROCESS privilege):
|
||||||
|
connection con100;
|
||||||
|
--echo SHOW/SELECT shows only the processes (1) of the user.
|
||||||
|
--echo ####################################################################################
|
||||||
|
eval SHOW CREATE TABLE $table;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
eval SHOW $table;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
eval SELECT * FROM $table $select_where ORDER BY id;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
eval SELECT $columns FROM $table $select_where ORDER BY id;
|
||||||
|
--source suite/funcs_1/datadict/datadict_priv.inc
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 4 Grant PROCESS privilege to ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
GRANT PROCESS ON *.* TO ddicttestuser1@'localhost' IDENTIFIED BY 'ddictpass';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 4.1 Existing connection con100 (ddicttestuser1)
|
||||||
|
--echo The user ddicttestuser1 has the PROCESS privilege, but the connection was
|
||||||
|
--echo established before PROCESS was granted.
|
||||||
|
--echo SHOW/SELECT shows only the processes (1) of the user.
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection con100;
|
||||||
|
SHOW GRANTS;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 4.2 New connection con101 (ddicttestuser1 with PROCESS privilege)
|
||||||
|
--echo SHOW/SELECT shows all processes/threads.
|
||||||
|
--echo ####################################################################################
|
||||||
|
connect (con101,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
SHOW GRANTS;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 5 Grant PROCESS privilege to anonymous user.
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
GRANT PROCESS ON *.* TO ''@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 5.1 Establish connection (anonymous1,localhost,'',,information_schema)
|
||||||
|
--echo anonymous user with PROCESS privilege
|
||||||
|
--echo SHOW/SELECT shows all processes/threads.
|
||||||
|
--echo ####################################################################################
|
||||||
|
connect (anonymous1,localhost,'',,information_schema);
|
||||||
|
SHOW GRANTS;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 6 Revoke PROCESS privilege from ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
REVOKE PROCESS ON *.* FROM ddicttestuser1@'localhost' IDENTIFIED BY 'ddictpass';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 6.1 New connection con102 (ddicttestuser1 has no more PROCESS privilege)
|
||||||
|
connect (con102,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo Again (compared to state before GRANT PROCESS) only the processes of
|
||||||
|
--echo ddicttestuser1 are visible.
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 7 Revoke PROCESS privilege from anonymous user + disconnect ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
REVOKE PROCESS ON *.* FROM ''@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 7.1 New connection (anonymous2,localhost,'',,information_schema)
|
||||||
|
connect (anonymous2,localhost,'',,information_schema);
|
||||||
|
--echo The anonymous user has no more the PROCESS privilege
|
||||||
|
--echo Again only the processes of the anonymous user are visible.
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR ''@'localhost';
|
||||||
|
if ($fixed_bug_30395)
|
||||||
|
{
|
||||||
|
# Bug#30395 strange results after REVOKE PROCESS ON *.* FROM ...
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
}
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 8 Grant SUPER (does not imply PROCESS) privilege to ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 8.1 New connection con103 (ddicttestuser1 with SUPER privilege)
|
||||||
|
connect (con103,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo Only the processes of ddicttestuser1 user are visible.
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 9 Revoke SUPER privilege from user ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
REVOKE SUPER ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 9.1 New connection con104 (ddicttestuser1 without SUPER privilege)
|
||||||
|
connect (con104,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo ddicttestuser1 has no more the SUPER privilege.
|
||||||
|
--echo Only the processes of ddicttestuser1 are visible.
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 10 Grant SUPER privilege with grant option to user ddicttestuser1.
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost' WITH GRANT OPTION;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 10.1 New connection con105 (ddicttestuser1 with SUPER privilege and GRANT OPTION)
|
||||||
|
connect (con105,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo Try to grant PROCESS privilege to user ddicttestuser2 without having it.
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
--error ER_ACCESS_DENIED_ERROR
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 10.2 Grant SUPER and PROCESS privilege with grant option to user ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
GRANT SUPER,PROCESS ON *.* TO 'ddicttestuser1'@'localhost' WITH GRANT OPTION;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 10.3 New connection con106 (ddicttestuser1 with SUPER,PROCESS WITH GRANT OPTION)
|
||||||
|
connect (con106,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo Grant PROCESS privilege to user ddicttestuser2
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 10.4 New connection con200 (ddicttestuser2 with PROCESS privilege)
|
||||||
|
connect (con200,localhost,ddicttestuser2,ddictpass,information_schema);
|
||||||
|
--echo ddicttestuser2 has now the PROCESS privilege and sees all connections
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser2'@'localhost';
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 11 User ddicttestuser1 revokes PROCESS privilege from user ddicttestuser2
|
||||||
|
--echo connection ddicttestuser1;
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection con106;
|
||||||
|
REVOKE PROCESS ON *.* FROM 'ddicttestuser2'@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 11.1 New connection con201 (ddicttestuser2)
|
||||||
|
connect (con201,localhost,ddicttestuser2,ddictpass,information_schema);
|
||||||
|
--echo ddicttestuser2 has no more the PROCESS privilege and can only see own connects
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 11.2 Revoke SUPER,PROCESS,GRANT OPTION privilege from user ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
REVOKE SUPER,PROCESS,GRANT OPTION ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 11.3 New connection con107 (ddicttestuser1)
|
||||||
|
connect (con107,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo ddicttestuser1 has no more the PROCESS privilege and can only see own connects
|
||||||
|
--echo He is also unable to GRANT the PROCESS privilege to ddicttestuser2
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
--error ER_ACCESS_DENIED_ERROR
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 12 Revoke the SELECT privilege from user ddicttestuser1
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
REVOKE SELECT ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 12.1 New connection con108 (ddicttestuser1)
|
||||||
|
connect (con108,localhost,ddicttestuser1,ddictpass,information_schema);
|
||||||
|
--echo ddicttestuser1 has neither PROCESS nor SELECT privilege
|
||||||
|
--echo Manual says: Each MySQL user has the right to access these tables, but can see
|
||||||
|
--echo only the rows ...
|
||||||
|
--echo Therefore the missing SELECT privilege does not affect SELECTs on PROCESSLIST.
|
||||||
|
--echo ####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SHOW processlist;
|
||||||
|
--replace_column 6 TIME
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo 12.2 Revoke only the SELECT privilege on the information_schema from ddicttestuser1.
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
REVOKE SELECT ON information_schema.* FROM 'ddicttestuser3'@'localhost';
|
||||||
|
--real_sleep 0.3
|
||||||
|
|
||||||
|
|
||||||
|
--echo ####################################################################################
|
||||||
|
--echo connection default (user=root)
|
||||||
|
--echo Cleanup: close connections, DROP USER etc.
|
||||||
|
--echo ####################################################################################
|
||||||
|
connection default;
|
||||||
|
disconnect con100;
|
||||||
|
disconnect con101;
|
||||||
|
disconnect con102;
|
||||||
|
disconnect con103;
|
||||||
|
disconnect con104;
|
||||||
|
disconnect con105;
|
||||||
|
disconnect con106;
|
||||||
|
disconnect con107;
|
||||||
|
disconnect con108;
|
||||||
|
disconnect con200;
|
||||||
|
disconnect con201;
|
||||||
|
disconnect anonymous1;
|
||||||
|
disconnect anonymous2;
|
||||||
|
DROP USER ddicttestuser1@'localhost';
|
||||||
|
DROP USER ddicttestuser2@'localhost';
|
333
mysql-test/suite/funcs_1/datadict/processlist_val.inc
Normal file
333
mysql-test/suite/funcs_1/datadict/processlist_val.inc
Normal file
File diff suppressed because one or more lines are too long
469
mysql-test/suite/funcs_1/r/a_processlist_priv_no_prot.result
Normal file
469
mysql-test/suite/funcs_1/r/a_processlist_priv_no_prot.result
Normal file
@@ -0,0 +1,469 @@
|
|||||||
|
USE information_schema;
|
||||||
|
####################################################################################
|
||||||
|
1 Prepare test.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
####################################################################################
|
||||||
|
1.1 Create two user
|
||||||
|
####################################################################################
|
||||||
|
DROP USER ddicttestuser1@'localhost';
|
||||||
|
ERROR HY000: Operation DROP USER failed for 'ddicttestuser1'@'localhost'
|
||||||
|
DROP USER ddicttestuser2@'localhost';
|
||||||
|
ERROR HY000: Operation DROP USER failed for 'ddicttestuser2'@'localhost'
|
||||||
|
CREATE USER ddicttestuser1@'localhost';
|
||||||
|
CREATE USER ddicttestuser2@'localhost';
|
||||||
|
SET PASSWORD FOR ddicttestuser1@'localhost' = PASSWORD('ddictpass');
|
||||||
|
SET PASSWORD FOR ddicttestuser2@'localhost' = PASSWORD('ddictpass');
|
||||||
|
####################################################################################
|
||||||
|
1.2 Establish connection con100 (user=ddicttestuser1 with no PROCESS privilege):
|
||||||
|
####################################################################################
|
||||||
|
####################################################################################
|
||||||
|
2 connection default(user=root with default privileges):
|
||||||
|
SHOW/SELECT shows all processes/threads.
|
||||||
|
####################################################################################
|
||||||
|
SHOW CREATE TABLE processlist;
|
||||||
|
Table Create Table
|
||||||
|
PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` (
|
||||||
|
`ID` bigint(4) NOT NULL DEFAULT '0',
|
||||||
|
`USER` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||||
|
`DB` varchar(64) DEFAULT NULL,
|
||||||
|
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`TIME` bigint(7) NOT NULL DEFAULT '0',
|
||||||
|
`STATE` varchar(64) DEFAULT NULL,
|
||||||
|
`INFO` longtext
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
SELECT * FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
1 root localhost information_schema Query TIME preparing SELECT * FROM processlist ORDER BY id
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
1 root localhost information_schema Query TIME preparing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
CREATE TEMPORARY TABLE test.t_processlist AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.t_processlist SET user='horst' WHERE id=1 ;
|
||||||
|
INSERT INTO processlist SELECT * FROM test.t_processlist;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE test.t_processlist;
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist WITH CHECK OPTION;
|
||||||
|
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_processlist'
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.v_processlist SET TIME=NOW() WHERE id = 1;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DROP VIEW test.v_processlist;
|
||||||
|
UPDATE processlist SET user='any_user' WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DELETE FROM processlist WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
REVOKE ALL ON processlist FROM current_user;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
GRANT INSERT,UPDATE ON processlist TO current_user;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for root@localhost
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||||
|
CREATE INDEX i_processlist ON processlist (user);
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE processlist;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist DROP COLUMN user;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist ADD COLUMN (my_column INT);
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
RENAME TABLE processlist TO new_processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
RENAME TABLE processlist TO files;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
CREATE TABLE new_processlist AS SELECT * FROM processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
DROP DATABASE information_schema;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
RENAME DATABASE information_schema TO info_schema;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
####################################################################################
|
||||||
|
3 Switch to connection con100 (user=ddicttestuser1 with no PROCESS privilege):
|
||||||
|
SHOW/SELECT shows only the processes (1) of the user.
|
||||||
|
####################################################################################
|
||||||
|
SHOW CREATE TABLE processlist;
|
||||||
|
Table Create Table
|
||||||
|
PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` (
|
||||||
|
`ID` bigint(4) NOT NULL DEFAULT '0',
|
||||||
|
`USER` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||||
|
`DB` varchar(64) DEFAULT NULL,
|
||||||
|
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`TIME` bigint(7) NOT NULL DEFAULT '0',
|
||||||
|
`STATE` varchar(64) DEFAULT NULL,
|
||||||
|
`INFO` longtext
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
2 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
2 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM processlist ORDER BY id
|
||||||
|
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
2 ddicttestuser1 localhost information_schema Query TIME preparing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id
|
||||||
|
CREATE TEMPORARY TABLE test.t_processlist AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.t_processlist SET user='horst' WHERE id=1 ;
|
||||||
|
INSERT INTO processlist SELECT * FROM test.t_processlist;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE test.t_processlist;
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist WITH CHECK OPTION;
|
||||||
|
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_processlist'
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.v_processlist SET TIME=NOW() WHERE id = 1;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DROP VIEW test.v_processlist;
|
||||||
|
UPDATE processlist SET user='any_user' WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DELETE FROM processlist WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
REVOKE ALL ON processlist FROM current_user;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
GRANT INSERT,UPDATE ON processlist TO current_user;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
CREATE INDEX i_processlist ON processlist (user);
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE processlist;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist DROP COLUMN user;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist ADD COLUMN (my_column INT);
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
RENAME TABLE processlist TO new_processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
RENAME TABLE processlist TO files;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
CREATE TABLE new_processlist AS SELECT * FROM processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
DROP DATABASE information_schema;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
RENAME DATABASE information_schema TO info_schema;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
####################################################################################
|
||||||
|
4 Grant PROCESS privilege to ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT PROCESS ON *.* TO ddicttestuser1@'localhost' IDENTIFIED BY 'ddictpass';
|
||||||
|
####################################################################################
|
||||||
|
4.1 Existing connection con100 (ddicttestuser1)
|
||||||
|
The user ddicttestuser1 has the PROCESS privilege, but the connection was
|
||||||
|
established before PROCESS was granted.
|
||||||
|
SHOW/SELECT shows only the processes (1) of the user.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
2 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
2 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
####################################################################################
|
||||||
|
4.2 New connection con101 (ddicttestuser1 with PROCESS privilege)
|
||||||
|
SHOW/SELECT shows all processes/threads.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
3 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
1 root localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
5 Grant PROCESS privilege to anonymous user.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT PROCESS ON *.* TO ''@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
5.1 Establish connection (anonymous1,localhost,'',,information_schema)
|
||||||
|
anonymous user with PROCESS privilege
|
||||||
|
SHOW/SELECT shows all processes/threads.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for @localhost
|
||||||
|
GRANT PROCESS ON *.* TO ''@'localhost'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
4 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
1 root localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
6 Revoke PROCESS privilege from ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE PROCESS ON *.* FROM ddicttestuser1@'localhost' IDENTIFIED BY 'ddictpass';
|
||||||
|
####################################################################################
|
||||||
|
6.1 New connection con102 (ddicttestuser1 has no more PROCESS privilege)
|
||||||
|
Again (compared to state before GRANT PROCESS) only the processes of
|
||||||
|
ddicttestuser1 are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
5 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
7 Revoke PROCESS privilege from anonymous user + disconnect ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE PROCESS ON *.* FROM ''@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
7.1 New connection (anonymous2,localhost,'',,information_schema)
|
||||||
|
The anonymous user has no more the PROCESS privilege
|
||||||
|
Again only the processes of the anonymous user are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR ''@'localhost';
|
||||||
|
Grants for @localhost
|
||||||
|
GRANT USAGE ON *.* TO ''@'localhost'
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
6 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
4 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
8 Grant SUPER (does not imply PROCESS) privilege to ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
8.1 New connection con103 (ddicttestuser1 with SUPER privilege)
|
||||||
|
Only the processes of ddicttestuser1 user are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
7 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
9 Revoke SUPER privilege from user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SUPER ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
9.1 New connection con104 (ddicttestuser1 without SUPER privilege)
|
||||||
|
ddicttestuser1 has no more the SUPER privilege.
|
||||||
|
Only the processes of ddicttestuser1 are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
8 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
10 Grant SUPER privilege with grant option to user ddicttestuser1.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost' WITH GRANT OPTION;
|
||||||
|
####################################################################################
|
||||||
|
10.1 New connection con105 (ddicttestuser1 with SUPER privilege and GRANT OPTION)
|
||||||
|
Try to grant PROCESS privilege to user ddicttestuser2 without having it.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1' WITH GRANT OPTION
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
ERROR 28000: Access denied for user 'ddicttestuser1'@'localhost' (using password: YES)
|
||||||
|
####################################################################################
|
||||||
|
10.2 Grant SUPER and PROCESS privilege with grant option to user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT SUPER,PROCESS ON *.* TO 'ddicttestuser1'@'localhost' WITH GRANT OPTION;
|
||||||
|
####################################################################################
|
||||||
|
10.3 New connection con106 (ddicttestuser1 with SUPER,PROCESS WITH GRANT OPTION)
|
||||||
|
Grant PROCESS privilege to user ddicttestuser2
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT PROCESS, SUPER ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1' WITH GRANT OPTION
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
10.4 New connection con200 (ddicttestuser2 with PROCESS privilege)
|
||||||
|
ddicttestuser2 has now the PROCESS privilege and sees all connections
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser2'@'localhost';
|
||||||
|
Grants for ddicttestuser2@localhost
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
6 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
11 ddicttestuser2 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
11 ddicttestuser2 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
6 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
1 root localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
11 User ddicttestuser1 revokes PROCESS privilege from user ddicttestuser2
|
||||||
|
connection ddicttestuser1;
|
||||||
|
####################################################################################
|
||||||
|
REVOKE PROCESS ON *.* FROM 'ddicttestuser2'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
11.1 New connection con201 (ddicttestuser2)
|
||||||
|
ddicttestuser2 has no more the PROCESS privilege and can only see own connects
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser2@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser2'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
11 ddicttestuser2 localhost information_schema Sleep TIME NULL
|
||||||
|
12 ddicttestuser2 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
12 ddicttestuser2 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
11 ddicttestuser2 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
11.2 Revoke SUPER,PROCESS,GRANT OPTION privilege from user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SUPER,PROCESS,GRANT OPTION ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
11.3 New connection con107 (ddicttestuser1)
|
||||||
|
ddicttestuser1 has no more the PROCESS privilege and can only see own connects
|
||||||
|
He is also unable to GRANT the PROCESS privilege to ddicttestuser2
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
ERROR 28000: Access denied for user 'ddicttestuser1'@'localhost' (using password: YES)
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
13 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
13 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
12 Revoke the SELECT privilege from user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SELECT ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
12.1 New connection con108 (ddicttestuser1)
|
||||||
|
ddicttestuser1 has neither PROCESS nor SELECT privilege
|
||||||
|
Manual says: Each MySQL user has the right to access these tables, but can see
|
||||||
|
only the rows ...
|
||||||
|
Therefore the missing SELECT privilege does not affect SELECTs on PROCESSLIST.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
13 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
14 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
14 ddicttestuser1 localhost information_schema Query TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
13 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
2 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
12.2 Revoke only the SELECT privilege on the information_schema from ddicttestuser1.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SELECT ON information_schema.* FROM 'ddicttestuser3'@'localhost';
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
####################################################################################
|
||||||
|
connection default (user=root)
|
||||||
|
Cleanup: close connections, DROP USER etc.
|
||||||
|
####################################################################################
|
||||||
|
DROP USER ddicttestuser1@'localhost';
|
||||||
|
DROP USER ddicttestuser2@'localhost';
|
174
mysql-test/suite/funcs_1/r/a_processlist_val_no_prot.result
Normal file
174
mysql-test/suite/funcs_1/r/a_processlist_val_no_prot.result
Normal file
File diff suppressed because one or more lines are too long
469
mysql-test/suite/funcs_1/r/b_processlist_priv_ps.result
Normal file
469
mysql-test/suite/funcs_1/r/b_processlist_priv_ps.result
Normal file
@@ -0,0 +1,469 @@
|
|||||||
|
USE information_schema;
|
||||||
|
####################################################################################
|
||||||
|
1 Prepare test.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
####################################################################################
|
||||||
|
1.1 Create two user
|
||||||
|
####################################################################################
|
||||||
|
DROP USER ddicttestuser1@'localhost';
|
||||||
|
ERROR HY000: Operation DROP USER failed for 'ddicttestuser1'@'localhost'
|
||||||
|
DROP USER ddicttestuser2@'localhost';
|
||||||
|
ERROR HY000: Operation DROP USER failed for 'ddicttestuser2'@'localhost'
|
||||||
|
CREATE USER ddicttestuser1@'localhost';
|
||||||
|
CREATE USER ddicttestuser2@'localhost';
|
||||||
|
SET PASSWORD FOR ddicttestuser1@'localhost' = PASSWORD('ddictpass');
|
||||||
|
SET PASSWORD FOR ddicttestuser2@'localhost' = PASSWORD('ddictpass');
|
||||||
|
####################################################################################
|
||||||
|
1.2 Establish connection con100 (user=ddicttestuser1 with no PROCESS privilege):
|
||||||
|
####################################################################################
|
||||||
|
####################################################################################
|
||||||
|
2 connection default(user=root with default privileges):
|
||||||
|
SHOW/SELECT shows all processes/threads.
|
||||||
|
####################################################################################
|
||||||
|
SHOW CREATE TABLE processlist;
|
||||||
|
Table Create Table
|
||||||
|
PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` (
|
||||||
|
`ID` bigint(4) NOT NULL DEFAULT '0',
|
||||||
|
`USER` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||||
|
`DB` varchar(64) DEFAULT NULL,
|
||||||
|
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`TIME` bigint(7) NOT NULL DEFAULT '0',
|
||||||
|
`STATE` varchar(64) DEFAULT NULL,
|
||||||
|
`INFO` longtext
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
3 root localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
SELECT * FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
3 root localhost information_schema Execute TIME preparing SELECT * FROM processlist ORDER BY id
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
3 root localhost information_schema Execute TIME preparing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
CREATE TEMPORARY TABLE test.t_processlist AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.t_processlist SET user='horst' WHERE id=1 ;
|
||||||
|
INSERT INTO processlist SELECT * FROM test.t_processlist;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE test.t_processlist;
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist WITH CHECK OPTION;
|
||||||
|
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_processlist'
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.v_processlist SET TIME=NOW() WHERE id = 1;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DROP VIEW test.v_processlist;
|
||||||
|
UPDATE processlist SET user='any_user' WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DELETE FROM processlist WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
REVOKE ALL ON processlist FROM current_user;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
GRANT INSERT,UPDATE ON processlist TO current_user;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for root@localhost
|
||||||
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||||
|
CREATE INDEX i_processlist ON processlist (user);
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE processlist;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist DROP COLUMN user;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist ADD COLUMN (my_column INT);
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
RENAME TABLE processlist TO new_processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
RENAME TABLE processlist TO files;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
CREATE TABLE new_processlist AS SELECT * FROM processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
DROP DATABASE information_schema;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
RENAME DATABASE information_schema TO info_schema;
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
####################################################################################
|
||||||
|
3 Switch to connection con100 (user=ddicttestuser1 with no PROCESS privilege):
|
||||||
|
SHOW/SELECT shows only the processes (1) of the user.
|
||||||
|
####################################################################################
|
||||||
|
SHOW CREATE TABLE processlist;
|
||||||
|
Table Create Table
|
||||||
|
PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` (
|
||||||
|
`ID` bigint(4) NOT NULL DEFAULT '0',
|
||||||
|
`USER` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`HOST` varchar(64) NOT NULL DEFAULT '',
|
||||||
|
`DB` varchar(64) DEFAULT NULL,
|
||||||
|
`COMMAND` varchar(16) NOT NULL DEFAULT '',
|
||||||
|
`TIME` bigint(7) NOT NULL DEFAULT '0',
|
||||||
|
`STATE` varchar(64) DEFAULT NULL,
|
||||||
|
`INFO` longtext
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
4 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
4 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM processlist ORDER BY id
|
||||||
|
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
4 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM processlist ORDER BY id
|
||||||
|
CREATE TEMPORARY TABLE test.t_processlist AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.t_processlist SET user='horst' WHERE id=1 ;
|
||||||
|
INSERT INTO processlist SELECT * FROM test.t_processlist;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE test.t_processlist;
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist WITH CHECK OPTION;
|
||||||
|
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_processlist'
|
||||||
|
CREATE VIEW test.v_processlist (ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO) AS SELECT * FROM processlist;
|
||||||
|
UPDATE test.v_processlist SET TIME=NOW() WHERE id = 1;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DROP VIEW test.v_processlist;
|
||||||
|
UPDATE processlist SET user='any_user' WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DELETE FROM processlist WHERE id=1 ;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
REVOKE ALL ON processlist FROM current_user;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
GRANT INSERT,UPDATE ON processlist TO current_user;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
CREATE INDEX i_processlist ON processlist (user);
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
DROP TABLE processlist;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist DROP COLUMN user;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
ALTER TABLE processlist ADD COLUMN (my_column INT);
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
RENAME TABLE processlist TO new_processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
RENAME TABLE processlist TO files;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
CREATE TABLE new_processlist AS SELECT * FROM processlist;
|
||||||
|
ERROR 42S02: Unknown table 'new_processlist' in information_schema
|
||||||
|
DROP DATABASE information_schema;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
RENAME DATABASE information_schema TO info_schema;
|
||||||
|
ERROR 42000: Access denied for user 'ddicttestuser1'@'localhost' to database 'information_schema'
|
||||||
|
####################################################################################
|
||||||
|
4 Grant PROCESS privilege to ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT PROCESS ON *.* TO ddicttestuser1@'localhost' IDENTIFIED BY 'ddictpass';
|
||||||
|
####################################################################################
|
||||||
|
4.1 Existing connection con100 (ddicttestuser1)
|
||||||
|
The user ddicttestuser1 has the PROCESS privilege, but the connection was
|
||||||
|
established before PROCESS was granted.
|
||||||
|
SHOW/SELECT shows only the processes (1) of the user.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
4 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
4 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
####################################################################################
|
||||||
|
4.2 New connection con101 (ddicttestuser1 with PROCESS privilege)
|
||||||
|
SHOW/SELECT shows all processes/threads.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
3 root localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
5 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 root localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
5 Grant PROCESS privilege to anonymous user.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT PROCESS ON *.* TO ''@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
5.1 Establish connection (anonymous1,localhost,'',,information_schema)
|
||||||
|
anonymous user with PROCESS privilege
|
||||||
|
SHOW/SELECT shows all processes/threads.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for @localhost
|
||||||
|
GRANT PROCESS ON *.* TO ''@'localhost'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
3 root localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
6 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
6 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 root localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
6 Revoke PROCESS privilege from ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE PROCESS ON *.* FROM ddicttestuser1@'localhost' IDENTIFIED BY 'ddictpass';
|
||||||
|
####################################################################################
|
||||||
|
6.1 New connection con102 (ddicttestuser1 has no more PROCESS privilege)
|
||||||
|
Again (compared to state before GRANT PROCESS) only the processes of
|
||||||
|
ddicttestuser1 are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
7 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
7 Revoke PROCESS privilege from anonymous user + disconnect ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE PROCESS ON *.* FROM ''@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
7.1 New connection (anonymous2,localhost,'',,information_schema)
|
||||||
|
The anonymous user has no more the PROCESS privilege
|
||||||
|
Again only the processes of the anonymous user are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR ''@'localhost';
|
||||||
|
Grants for @localhost
|
||||||
|
GRANT USAGE ON *.* TO ''@'localhost'
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
8 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
6 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
8 Grant SUPER (does not imply PROCESS) privilege to ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
8.1 New connection con103 (ddicttestuser1 with SUPER privilege)
|
||||||
|
Only the processes of ddicttestuser1 user are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
9 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
9 Revoke SUPER privilege from user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SUPER ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
9.1 New connection con104 (ddicttestuser1 without SUPER privilege)
|
||||||
|
ddicttestuser1 has no more the SUPER privilege.
|
||||||
|
Only the processes of ddicttestuser1 are visible.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
10 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
10 Grant SUPER privilege with grant option to user ddicttestuser1.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost' WITH GRANT OPTION;
|
||||||
|
####################################################################################
|
||||||
|
10.1 New connection con105 (ddicttestuser1 with SUPER privilege and GRANT OPTION)
|
||||||
|
Try to grant PROCESS privilege to user ddicttestuser2 without having it.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT SUPER ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1' WITH GRANT OPTION
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
ERROR 28000: Access denied for user 'ddicttestuser1'@'localhost' (using password: YES)
|
||||||
|
####################################################################################
|
||||||
|
10.2 Grant SUPER and PROCESS privilege with grant option to user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
GRANT SUPER,PROCESS ON *.* TO 'ddicttestuser1'@'localhost' WITH GRANT OPTION;
|
||||||
|
####################################################################################
|
||||||
|
10.3 New connection con106 (ddicttestuser1 with SUPER,PROCESS WITH GRANT OPTION)
|
||||||
|
Grant PROCESS privilege to user ddicttestuser2
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT PROCESS, SUPER ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1' WITH GRANT OPTION
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
10.4 New connection con200 (ddicttestuser2 with PROCESS privilege)
|
||||||
|
ddicttestuser2 has now the PROCESS privilege and sees all connections
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser2'@'localhost';
|
||||||
|
Grants for ddicttestuser2@localhost
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
3 root localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
6 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
11 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
12 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
13 ddicttestuser2 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
13 ddicttestuser2 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
12 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
11 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
8 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
6 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
3 root localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
11 User ddicttestuser1 revokes PROCESS privilege from user ddicttestuser2
|
||||||
|
connection ddicttestuser1;
|
||||||
|
####################################################################################
|
||||||
|
REVOKE PROCESS ON *.* FROM 'ddicttestuser2'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
11.1 New connection con201 (ddicttestuser2)
|
||||||
|
ddicttestuser2 has no more the PROCESS privilege and can only see own connects
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS;
|
||||||
|
Grants for ddicttestuser2@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser2'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
13 ddicttestuser2 localhost information_schema Sleep TIME NULL
|
||||||
|
14 ddicttestuser2 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
14 ddicttestuser2 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
13 ddicttestuser2 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
11.2 Revoke SUPER,PROCESS,GRANT OPTION privilege from user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SUPER,PROCESS,GRANT OPTION ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
11.3 New connection con107 (ddicttestuser1)
|
||||||
|
ddicttestuser1 has no more the PROCESS privilege and can only see own connects
|
||||||
|
He is also unable to GRANT the PROCESS privilege to ddicttestuser2
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost';
|
||||||
|
ERROR 28000: Access denied for user 'ddicttestuser1'@'localhost' (using password: YES)
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
11 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
12 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
15 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
15 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
12 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
11 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
12 Revoke the SELECT privilege from user ddicttestuser1
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SELECT ON *.* FROM 'ddicttestuser1'@'localhost';
|
||||||
|
####################################################################################
|
||||||
|
12.1 New connection con108 (ddicttestuser1)
|
||||||
|
ddicttestuser1 has neither PROCESS nor SELECT privilege
|
||||||
|
Manual says: Each MySQL user has the right to access these tables, but can see
|
||||||
|
only the rows ...
|
||||||
|
Therefore the missing SELECT privilege does not affect SELECTs on PROCESSLIST.
|
||||||
|
####################################################################################
|
||||||
|
SHOW GRANTS FOR 'ddicttestuser1'@'localhost';
|
||||||
|
Grants for ddicttestuser1@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'ddicttestuser1'@'localhost' IDENTIFIED BY PASSWORD '*22DA61451703738F203CDB9DB041ACBA1F4760B1'
|
||||||
|
SHOW processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
11 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
12 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
15 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
16 ddicttestuser1 localhost information_schema Query TIME NULL SHOW processlist
|
||||||
|
SELECT * FROM information_schema.processlist;
|
||||||
|
ID USER HOST DB COMMAND TIME STATE INFO
|
||||||
|
16 ddicttestuser1 localhost information_schema Execute TIME preparing SELECT * FROM information_schema.processlist
|
||||||
|
15 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
12 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
11 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
10 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
9 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
7 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
5 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
4 ddicttestuser1 localhost information_schema Sleep TIME NULL
|
||||||
|
####################################################################################
|
||||||
|
12.2 Revoke only the SELECT privilege on the information_schema from ddicttestuser1.
|
||||||
|
connection default (user=root)
|
||||||
|
####################################################################################
|
||||||
|
REVOKE SELECT ON information_schema.* FROM 'ddicttestuser3'@'localhost';
|
||||||
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
|
####################################################################################
|
||||||
|
connection default (user=root)
|
||||||
|
Cleanup: close connections, DROP USER etc.
|
||||||
|
####################################################################################
|
||||||
|
DROP USER ddicttestuser1@'localhost';
|
||||||
|
DROP USER ddicttestuser2@'localhost';
|
174
mysql-test/suite/funcs_1/r/b_processlist_val_ps.result
Normal file
174
mysql-test/suite/funcs_1/r/b_processlist_val_ps.result
Normal file
File diff suppressed because one or more lines are too long
36
mysql-test/suite/funcs_1/t/a_processlist_priv_no_prot.test
Normal file
36
mysql-test/suite/funcs_1/t/a_processlist_priv_no_prot.test
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
########## suite/funcs_1/t/a_processlist_priv_no_prot.test #############
|
||||||
|
# #
|
||||||
|
# Testing of privileges around #
|
||||||
|
# SELECT ... PROCESSLIST/SHOW PROCESSLIST #
|
||||||
|
# #
|
||||||
|
# The prepared statement variant of this test is #
|
||||||
|
# suite/funcs_1/t/b_processlist_priv_ps.test. #
|
||||||
|
# #
|
||||||
|
# There is important documentation within #
|
||||||
|
# suite/funcs_1/datadict/processlist_priv.inc #
|
||||||
|
# #
|
||||||
|
# Note(mleich): #
|
||||||
|
# The name "a_process..." with the unusual prefix "a_" is #
|
||||||
|
# caused by the fact that this test should run as first test, that #
|
||||||
|
# means direct after server startup. Otherwise the connection IDs #
|
||||||
|
# within the processlist would differ. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2007-08-14 mleich Create this test as part of #
|
||||||
|
# WL#3982 Test information_schema.processlist #
|
||||||
|
# #
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# One subtest is skipped because of
|
||||||
|
# Bug#30395 strange results after REVOKE PROCESS ON *.* FROM ...
|
||||||
|
let $fixed_bug_30395= 0;
|
||||||
|
|
||||||
|
# The file with expected results fits only to a run without
|
||||||
|
# ps-protocol/sp-protocol/cursor-protocol/view-protocol.
|
||||||
|
if (`SELECT $PS_PROTOCOL + $SP_PROTOCOL + $CURSOR_PROTOCOL
|
||||||
|
+ $VIEW_PROTOCOL > 0`)
|
||||||
|
{
|
||||||
|
--skip Test requires: ps-protocol/sp-protocol/cursor-protocol/view-protocol disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
--source suite/funcs_1/datadict/processlist_priv.inc
|
31
mysql-test/suite/funcs_1/t/a_processlist_val_no_prot.test
Normal file
31
mysql-test/suite/funcs_1/t/a_processlist_val_no_prot.test
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
########### suite/funcs_1/t/a_processlist_val_no_prot.test #############
|
||||||
|
# #
|
||||||
|
# Testing of values within INFORMATION_SCHEMA.PROCESSLIST #
|
||||||
|
# #
|
||||||
|
# The prepared statement variant of this test is #
|
||||||
|
# suite/funcs_1/t/b_processlist_val_ps.test. #
|
||||||
|
# #
|
||||||
|
# There is important documentation within #
|
||||||
|
# suite/funcs_1/datadict/processlist_val.inc #
|
||||||
|
# #
|
||||||
|
# Note(mleich): #
|
||||||
|
# The name "a_process..." with the unusual prefix "a_" is #
|
||||||
|
# caused by the fact that this test should run as second test, that #
|
||||||
|
# means direct after server startup and a_processlist_priv_no_prot. #
|
||||||
|
# Otherwise the connection IDs within the processlist would differ. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2007-08-09 mleich Implement this test as part of #
|
||||||
|
# WL#3982 Test information_schema.processlist #
|
||||||
|
# #
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# The file with expected results fits only to a run without
|
||||||
|
# ps-protocol/sp-protocol/cursor-protocol/view-protocol.
|
||||||
|
if (`SELECT $PS_PROTOCOL + $SP_PROTOCOL + $CURSOR_PROTOCOL
|
||||||
|
+ $VIEW_PROTOCOL > 0`)
|
||||||
|
{
|
||||||
|
--skip Test requires: ps-protocol/sp-protocol/cursor-protocol/view-protocol disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
--source suite/funcs_1/datadict/processlist_val.inc
|
35
mysql-test/suite/funcs_1/t/b_processlist_priv_ps.test
Normal file
35
mysql-test/suite/funcs_1/t/b_processlist_priv_ps.test
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
########### suite/funcs_1/t/b_processlist_priv_ps.test #################
|
||||||
|
# #
|
||||||
|
# Testing of privileges around #
|
||||||
|
# SELECT ... PROCESSLIST/SHOW PROCESSLIST #
|
||||||
|
# #
|
||||||
|
# The no (ps/sp/view/cursor) protocol variant of this test is #
|
||||||
|
# suite/funcs_1/t/a_processlist_priv_no_prot.test. #
|
||||||
|
# #
|
||||||
|
# There is important documentation within #
|
||||||
|
# suite/funcs_1/datadict/processlist_priv.inc #
|
||||||
|
# #
|
||||||
|
# Note(mleich): #
|
||||||
|
# The name "b_process..." with the unusual prefix "b_" is #
|
||||||
|
# caused by the fact that this test should run as first test, that #
|
||||||
|
# means direct after server startup. Otherwise the connection IDs #
|
||||||
|
# within the processlist would differ. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2007-08-14 mleich Create this test as part of #
|
||||||
|
# WL#3982 Test information_schema.processlist #
|
||||||
|
# #
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# One subtest is skipped because of
|
||||||
|
# Bug#30395 strange results after REVOKE PROCESS ON *.* FROM ...
|
||||||
|
let $fixed_bug_30395= 0;
|
||||||
|
|
||||||
|
# The file with expected results fits only to a run with "--ps-protocol".
|
||||||
|
if (`SELECT $SP_PROTOCOL + $CURSOR_PROTOCOL + $VIEW_PROTOCOL > 0
|
||||||
|
OR $PS_PROTOCOL = 0`)
|
||||||
|
{
|
||||||
|
--skip Test requires: ps-protocol enabled, other protocols disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
--source suite/funcs_1/datadict/processlist_priv.inc
|
30
mysql-test/suite/funcs_1/t/b_processlist_val_ps.test
Normal file
30
mysql-test/suite/funcs_1/t/b_processlist_val_ps.test
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
############## suite/funcs_1/t/b_processlist_val_ps.test ###############
|
||||||
|
# #
|
||||||
|
# Testing of values within INFORMATION_SCHEMA.PROCESSLIST #
|
||||||
|
# #
|
||||||
|
# The no (ps/sp/view/cursor) protocol variant of this test is #
|
||||||
|
# suite/funcs_1/t/a_processlist_val_no_prot.test. #
|
||||||
|
# #
|
||||||
|
# There is important documentation within #
|
||||||
|
# suite/funcs_1/datadict/processlist_val.inc #
|
||||||
|
# #
|
||||||
|
# Note(mleich): #
|
||||||
|
# The name "b_process..." with the unusual prefix "b_" is #
|
||||||
|
# caused by the fact that this test should run as second test, that #
|
||||||
|
# means direct after server startup and b_processlist_priv_ps. #
|
||||||
|
# Otherwise the connection IDs within the processlist would differ. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2007-08-09 mleich Implement this test as part of #
|
||||||
|
# WL#3982 Test information_schema.processlist #
|
||||||
|
# #
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# The file with expected results fits only to a run with "--ps-protocol".
|
||||||
|
if (`SELECT $SP_PROTOCOL + $CURSOR_PROTOCOL + $VIEW_PROTOCOL > 0
|
||||||
|
OR $PS_PROTOCOL = 0`)
|
||||||
|
{
|
||||||
|
--skip Test requires: ps-protocol enabled, other protocols disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
--source suite/funcs_1/datadict/processlist_val.inc
|
Reference in New Issue
Block a user