mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
6aaed7330c
Implement table-level TRIGGER privilege to control access to triggers. Before this path global SUPER privilege was used for this purpose, that was the big security problem. In details, before this patch SUPER privilege was required: - for the user at CREATE TRIGGER time to create a new trigger; - for the user at DROP TRIGGER time to drop the existing trigger; - for the definer at trigger activation time to execute the trigger (if the definer loses SUPER privilege, all its triggers become unavailable); This patch changes the behaviour in the following way: - TRIGGER privilege on the subject table for trigger is required: - for the user at CREATE TRIGGER time to create a new trigger; - for the user at DROP TRIGGER time to drop the existing trigger; - for the definer at trigger activation time to execute the trigger (if the definer loses TRIGGER privilege on the subject table, all its triggers on this table become unavailable). - SUPER privilege is still required: - for the user at CREATE TRIGGER time to explicitly set the trigger definer to the user other than CURRENT_USER(). When the server works with database of the previous version (w/o TRIGGER privilege), or if the database is being upgraded from the previous versions, TRIGGER privilege is granted to whose users, who have CREATE privilege. mysql-test/r/grant.result: Updated the result file after adding TRIGGER privilege. mysql-test/r/information_schema.result: Updated the result file after adding TRIGGER privilege. mysql-test/r/lowercase_table_grant.result: Updated the result file after adding TRIGGER privilege. mysql-test/r/ps.result: Updated the result file after adding TRIGGER privilege. mysql-test/r/sp.result: Updated the result file after adding TRIGGER privilege. mysql-test/r/trigger-compat.result: Updated the result file after adding TRIGGER privilege. mysql-test/r/trigger-grant.result: Updated the result file after adding TRIGGER privilege. mysql-test/t/trigger-compat.test: Grant table-level TRIGGER privilege instead of global SUPER one. mysql-test/t/trigger-grant.test: 1. Grant table-level TRIGGER privilege instead of global SUPER one. 2. Updated the test case to check that SUPER is required to specify the user other than the current as a definer. scripts/mysql_create_system_tables.sh: Added TRIGGER privilege. scripts/mysql_fix_privilege_tables.sql: Added TRIGGER privilege. sql/sql_acl.cc: Added TRIGGER privilege. sql/sql_acl.h: Added TRIGGER privilege. sql/sql_show.cc: Added TRIGGER privilege. sql/sql_trigger.cc: Check TRIGGER privilege instead of SUPER. sql/sql_yacc.yy: Added TRIGGER privilege.
628 lines
31 KiB
Text
628 lines
31 KiB
Text
drop table if exists t1;
|
||
drop database if exists mysqltest;
|
||
SET NAMES binary;
|
||
delete from mysql.user where user='mysqltest_1';
|
||
delete from mysql.db where user='mysqltest_1';
|
||
flush privileges;
|
||
grant select on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA";
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
|
||
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
grant delete on mysqltest.* to mysqltest_1@localhost;
|
||
select * from mysql.user where user="mysqltest_1";
|
||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N SPECIFIED EDH-RSA-DES-CBC3-SHA 0 0 0 0
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
|
||
GRANT SELECT, DELETE ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
revoke delete on mysqltest.* from mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE CIPHER 'EDH-RSA-DES-CBC3-SHA'
|
||
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
grant select on mysqltest.* to mysqltest_1@localhost require NONE;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
grant USAGE on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "testsubject" ISSUER "MySQL AB";
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE ISSUER 'MySQL AB' SUBJECT 'testsubject' CIPHER 'EDH-RSA-DES-CBC3-SHA'
|
||
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
revoke all privileges on mysqltest.* from mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' REQUIRE ISSUER 'MySQL AB' SUBJECT 'testsubject' CIPHER 'EDH-RSA-DES-CBC3-SHA'
|
||
delete from mysql.user where user='mysqltest_1';
|
||
flush privileges;
|
||
delete from mysql.user where user='mysqltest_1';
|
||
flush privileges;
|
||
grant usage on *.* to mysqltest_1@localhost with max_queries_per_hour 10;
|
||
select * from mysql.user where user="mysqltest_1";
|
||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 0 0 0
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10
|
||
grant usage on *.* to mysqltest_1@localhost with max_updates_per_hour 20 max_connections_per_hour 30;
|
||
select * from mysql.user where user="mysqltest_1";
|
||
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections
|
||
localhost mysqltest_1 N N N N N N N N N N N N N N N N N N N N N N N N N N N N 10 20 30 0
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30
|
||
flush privileges;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' WITH MAX_QUERIES_PER_HOUR 10 MAX_UPDATES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 30
|
||
delete from mysql.user where user='mysqltest_1';
|
||
flush privileges;
|
||
grant CREATE TEMPORARY TABLES, LOCK TABLES on mysqltest.* to mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT CREATE TEMPORARY TABLES, LOCK TABLES ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
flush privileges;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT CREATE TEMPORARY TABLES, LOCK TABLES ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
revoke CREATE TEMPORARY TABLES on mysqltest.* from mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT LOCK TABLES ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
|
||
grant ALL PRIVILEGES on mysqltest.* to mysqltest_1@localhost with GRANT OPTION;
|
||
flush privileges;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT ALL PRIVILEGES ON `mysqltest`.* TO 'mysqltest_1'@'localhost' WITH GRANT OPTION
|
||
revoke LOCK TABLES, ALTER on mysqltest.* from mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `mysqltest`.* TO 'mysqltest_1'@'localhost' WITH GRANT OPTION
|
||
revoke all privileges on mysqltest.* from mysqltest_1@localhost;
|
||
delete from mysql.user where user='mysqltest_1';
|
||
flush privileges;
|
||
grant usage on test.* to mysqltest_1@localhost with grant option;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT USAGE ON `mysqltest`.* TO 'mysqltest_1'@'localhost' WITH GRANT OPTION
|
||
GRANT USAGE ON `test`.* TO 'mysqltest_1'@'localhost' WITH GRANT OPTION
|
||
delete from mysql.user where user='mysqltest_1';
|
||
delete from mysql.db where user='mysqltest_1';
|
||
delete from mysql.tables_priv where user='mysqltest_1';
|
||
delete from mysql.columns_priv where user='mysqltest_1';
|
||
flush privileges;
|
||
show grants for mysqltest_1@localhost;
|
||
ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host 'localhost'
|
||
create table t1 (a int);
|
||
GRANT select,update,insert on t1 to mysqltest_1@localhost;
|
||
GRANT select (a), update (a),insert(a), references(a) on t1 to mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT SELECT, SELECT (a), INSERT, INSERT (a), UPDATE, UPDATE (a), REFERENCES (a) ON `test`.`t1` TO 'mysqltest_1'@'localhost'
|
||
select table_priv,column_priv from mysql.tables_priv where user="mysqltest_1";
|
||
table_priv column_priv
|
||
Select,Insert,Update Select,Insert,Update,References
|
||
REVOKE select (a), update on t1 from mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT SELECT, INSERT, INSERT (a), REFERENCES (a) ON `test`.`t1` TO 'mysqltest_1'@'localhost'
|
||
REVOKE select,update,insert,insert (a) on t1 from mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||
GRANT REFERENCES (a) ON `test`.`t1` TO 'mysqltest_1'@'localhost'
|
||
GRANT select,references on t1 to mysqltest_1@localhost;
|
||
select table_priv,column_priv from mysql.tables_priv where user="mysqltest_1";
|
||
table_priv column_priv
|
||
Select,References References
|
||
grant all on test.* to mysqltest_3@localhost with grant option;
|
||
revoke all on test.* from mysqltest_3@localhost;
|
||
show grants for mysqltest_3@localhost;
|
||
Grants for mysqltest_3@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_3'@'localhost'
|
||
GRANT USAGE ON `test`.* TO 'mysqltest_3'@'localhost' WITH GRANT OPTION
|
||
revoke grant option on test.* from mysqltest_3@localhost;
|
||
show grants for mysqltest_3@localhost;
|
||
Grants for mysqltest_3@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_3'@'localhost'
|
||
grant all on test.t1 to mysqltest_2@localhost with grant option;
|
||
revoke all on test.t1 from mysqltest_2@localhost;
|
||
show grants for mysqltest_2@localhost;
|
||
Grants for mysqltest_2@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_2'@'localhost'
|
||
GRANT USAGE ON `test`.`t1` TO 'mysqltest_2'@'localhost' WITH GRANT OPTION
|
||
revoke grant option on test.t1 from mysqltest_2@localhost;
|
||
show grants for mysqltest_2@localhost;
|
||
Grants for mysqltest_2@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_2'@'localhost'
|
||
delete from mysql.user where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||
delete from mysql.db where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||
delete from mysql.tables_priv where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||
delete from mysql.columns_priv where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||
flush privileges;
|
||
drop table t1;
|
||
GRANT FILE on mysqltest.* to mysqltest_1@localhost;
|
||
ERROR HY000: Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
|
||
select 1;
|
||
1
|
||
1
|
||
insert into mysql.user (host, user) values ('localhost', 'test11');
|
||
Warnings:
|
||
Warning 1364 Field 'ssl_cipher' doesn't have a default value
|
||
Warning 1364 Field 'x509_issuer' doesn't have a default value
|
||
Warning 1364 Field 'x509_subject' doesn't have a default value
|
||
insert into mysql.db (host, db, user, select_priv) values
|
||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||
alter table mysql.db order by db asc;
|
||
flush privileges;
|
||
show grants for test11@localhost;
|
||
Grants for test11@localhost
|
||
GRANT USAGE ON *.* TO 'test11'@'localhost'
|
||
GRANT SELECT ON `ab%`.* TO 'test11'@'localhost'
|
||
GRANT SELECT ON `a%`.* TO 'test11'@'localhost'
|
||
alter table mysql.db order by db desc;
|
||
flush privileges;
|
||
show grants for test11@localhost;
|
||
Grants for test11@localhost
|
||
GRANT USAGE ON *.* TO 'test11'@'localhost'
|
||
GRANT SELECT ON `ab%`.* TO 'test11'@'localhost'
|
||
GRANT SELECT ON `a%`.* TO 'test11'@'localhost'
|
||
delete from mysql.user where user='test11';
|
||
delete from mysql.db where user='test11';
|
||
create database mysqltest1;
|
||
grant usage on mysqltest1.* to test6123 identified by 'magic123';
|
||
select host,db,user,select_priv,insert_priv from mysql.db where db="mysqltest1";
|
||
host db user select_priv insert_priv
|
||
delete from mysql.user where user='test6123';
|
||
drop database mysqltest1;
|
||
create table t1 (a int);
|
||
grant ALL PRIVILEGES on *.* to drop_user2@localhost with GRANT OPTION;
|
||
show grants for drop_user2@localhost;
|
||
Grants for drop_user2@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'drop_user2'@'localhost' WITH GRANT OPTION
|
||
revoke all privileges, grant option from drop_user2@localhost;
|
||
drop user drop_user2@localhost;
|
||
grant ALL PRIVILEGES on *.* to drop_user@localhost with GRANT OPTION;
|
||
grant ALL PRIVILEGES on test.* to drop_user@localhost with GRANT OPTION;
|
||
grant select(a) on test.t1 to drop_user@localhost;
|
||
show grants for drop_user@localhost;
|
||
Grants for drop_user@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT ALL PRIVILEGES ON `test`.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT (a) ON `test`.`t1` TO 'drop_user'@'localhost'
|
||
set sql_mode=ansi_quotes;
|
||
show grants for drop_user@localhost;
|
||
Grants for drop_user@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT ALL PRIVILEGES ON "test".* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT (a) ON "test"."t1" TO 'drop_user'@'localhost'
|
||
set sql_mode=default;
|
||
set sql_quote_show_create=0;
|
||
show grants for drop_user@localhost;
|
||
Grants for drop_user@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT ALL PRIVILEGES ON test.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT (a) ON test.t1 TO 'drop_user'@'localhost'
|
||
set sql_mode="ansi_quotes";
|
||
show grants for drop_user@localhost;
|
||
Grants for drop_user@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT ALL PRIVILEGES ON test.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT (a) ON test.t1 TO 'drop_user'@'localhost'
|
||
set sql_quote_show_create=1;
|
||
show grants for drop_user@localhost;
|
||
Grants for drop_user@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT ALL PRIVILEGES ON "test".* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT (a) ON "test"."t1" TO 'drop_user'@'localhost'
|
||
set sql_mode="";
|
||
show grants for drop_user@localhost;
|
||
Grants for drop_user@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT ALL PRIVILEGES ON `test`.* TO 'drop_user'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT (a) ON `test`.`t1` TO 'drop_user'@'localhost'
|
||
revoke all privileges, grant option from drop_user@localhost;
|
||
show grants for drop_user@localhost;
|
||
Grants for drop_user@localhost
|
||
GRANT USAGE ON *.* TO 'drop_user'@'localhost'
|
||
drop user drop_user@localhost;
|
||
revoke all privileges, grant option from drop_user@localhost;
|
||
ERROR HY000: Can't revoke all privileges for one or more of the requested users
|
||
grant select(a) on test.t1 to drop_user1@localhost;
|
||
grant select on test.t1 to drop_user2@localhost;
|
||
grant select on test.* to drop_user3@localhost;
|
||
grant select on *.* to drop_user4@localhost;
|
||
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||
drop_user4@localhost;
|
||
revoke all privileges, grant option from drop_user1@localhost, drop_user2@localhost,
|
||
drop_user3@localhost, drop_user4@localhost;
|
||
ERROR HY000: Can't revoke all privileges for one or more of the requested users
|
||
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||
drop_user4@localhost;
|
||
ERROR HY000: Operation DROP USER failed for 'drop_user1'@'localhost','drop_user2'@'localhost','drop_user3'@'localhost','drop_user4'@'localhost'
|
||
drop table t1;
|
||
grant usage on *.* to mysqltest_1@localhost identified by "password";
|
||
grant select, update, insert on test.* to mysqltest_1@localhost;
|
||
show grants for mysqltest_1@localhost;
|
||
Grants for mysqltest_1@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
|
||
GRANT SELECT, INSERT, UPDATE ON `test`.* TO 'mysqltest_1'@'localhost'
|
||
drop user mysqltest_1@localhost;
|
||
SET NAMES koi8r;
|
||
CREATE DATABASE <20><>;
|
||
USE <20><>;
|
||
CREATE TABLE <20><><EFBFBD> (<28><><EFBFBD> int);
|
||
GRANT SELECT ON <20><>.* TO <20><><EFBFBD><EFBFBD>@localhost;
|
||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||
Grants for <20><><EFBFBD><EFBFBD>@localhost
|
||
GRANT USAGE ON *.* TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
||
GRANT SELECT ON `<60><>`.* TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
||
REVOKE SELECT ON <20><>.* FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||
GRANT SELECT ON <20><>.<2E><><EFBFBD> TO <20><><EFBFBD><EFBFBD>@localhost;
|
||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||
Grants for <20><><EFBFBD><EFBFBD>@localhost
|
||
GRANT USAGE ON *.* TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
||
GRANT SELECT ON `<60><>`.`<60><><EFBFBD>` TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
||
REVOKE SELECT ON <20><>.<2E><><EFBFBD> FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||
GRANT SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> TO <20><><EFBFBD><EFBFBD>@localhost;
|
||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||
Grants for <20><><EFBFBD><EFBFBD>@localhost
|
||
GRANT USAGE ON *.* TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
||
GRANT SELECT (<28><><EFBFBD>) ON `<60><>`.`<60><><EFBFBD>` TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
||
REVOKE SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||
DROP USER <20><><EFBFBD><EFBFBD>@localhost;
|
||
DROP DATABASE <20><>;
|
||
SET NAMES latin1;
|
||
USE test;
|
||
CREATE TABLE t1 (a int );
|
||
CREATE TABLE t2 LIKE t1;
|
||
CREATE TABLE t3 LIKE t1;
|
||
CREATE TABLE t4 LIKE t1;
|
||
CREATE TABLE t5 LIKE t1;
|
||
CREATE TABLE t6 LIKE t1;
|
||
CREATE TABLE t7 LIKE t1;
|
||
CREATE TABLE t8 LIKE t1;
|
||
CREATE TABLE t9 LIKE t1;
|
||
CREATE TABLE t10 LIKE t1;
|
||
CREATE DATABASE testdb1;
|
||
CREATE DATABASE testdb2;
|
||
CREATE DATABASE testdb3;
|
||
CREATE DATABASE testdb4;
|
||
CREATE DATABASE testdb5;
|
||
CREATE DATABASE testdb6;
|
||
CREATE DATABASE testdb7;
|
||
CREATE DATABASE testdb8;
|
||
CREATE DATABASE testdb9;
|
||
CREATE DATABASE testdb10;
|
||
GRANT ALL ON testdb1.* TO testuser@localhost;
|
||
GRANT ALL ON testdb2.* TO testuser@localhost;
|
||
GRANT ALL ON testdb3.* TO testuser@localhost;
|
||
GRANT ALL ON testdb4.* TO testuser@localhost;
|
||
GRANT ALL ON testdb5.* TO testuser@localhost;
|
||
GRANT ALL ON testdb6.* TO testuser@localhost;
|
||
GRANT ALL ON testdb7.* TO testuser@localhost;
|
||
GRANT ALL ON testdb8.* TO testuser@localhost;
|
||
GRANT ALL ON testdb9.* TO testuser@localhost;
|
||
GRANT ALL ON testdb10.* TO testuser@localhost;
|
||
GRANT SELECT ON test.t1 TO testuser@localhost;
|
||
GRANT SELECT ON test.t2 TO testuser@localhost;
|
||
GRANT SELECT ON test.t3 TO testuser@localhost;
|
||
GRANT SELECT ON test.t4 TO testuser@localhost;
|
||
GRANT SELECT ON test.t5 TO testuser@localhost;
|
||
GRANT SELECT ON test.t6 TO testuser@localhost;
|
||
GRANT SELECT ON test.t7 TO testuser@localhost;
|
||
GRANT SELECT ON test.t8 TO testuser@localhost;
|
||
GRANT SELECT ON test.t9 TO testuser@localhost;
|
||
GRANT SELECT ON test.t10 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t1 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t2 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t3 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t4 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t5 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t6 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t7 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t8 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t9 TO testuser@localhost;
|
||
GRANT SELECT (a) ON test.t10 TO testuser@localhost;
|
||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM testuser@localhost;
|
||
SHOW GRANTS FOR testuser@localhost;
|
||
Grants for testuser@localhost
|
||
GRANT USAGE ON *.* TO 'testuser'@'localhost'
|
||
DROP USER testuser@localhost;
|
||
DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||
DROP DATABASE testdb1;
|
||
DROP DATABASE testdb2;
|
||
DROP DATABASE testdb3;
|
||
DROP DATABASE testdb4;
|
||
DROP DATABASE testdb5;
|
||
DROP DATABASE testdb6;
|
||
DROP DATABASE testdb7;
|
||
DROP DATABASE testdb8;
|
||
DROP DATABASE testdb9;
|
||
DROP DATABASE testdb10;
|
||
create table t1(a int, b int, c int, d int);
|
||
grant insert(b), insert(c), insert(d), insert(a) on t1 to grant_user@localhost;
|
||
show grants for grant_user@localhost;
|
||
Grants for grant_user@localhost
|
||
GRANT USAGE ON *.* TO 'grant_user'@'localhost'
|
||
GRANT INSERT (a, d, c, b) ON `test`.`t1` TO 'grant_user'@'localhost'
|
||
select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
||
Host Db User Table_name Column_name Column_priv
|
||
localhost test grant_user t1 b Insert
|
||
localhost test grant_user t1 d Insert
|
||
localhost test grant_user t1 a Insert
|
||
localhost test grant_user t1 c Insert
|
||
revoke ALL PRIVILEGES on t1 from grant_user@localhost;
|
||
show grants for grant_user@localhost;
|
||
Grants for grant_user@localhost
|
||
GRANT USAGE ON *.* TO 'grant_user'@'localhost'
|
||
select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
||
Host Db User Table_name Column_name Column_priv
|
||
drop user grant_user@localhost;
|
||
drop table t1;
|
||
create database mysqltest_1;
|
||
create database mysqltest_2;
|
||
create table mysqltest_1.t1 select 1 a, 2 q;
|
||
create table mysqltest_1.t2 select 1 b, 2 r;
|
||
create table mysqltest_2.t1 select 1 c, 2 s;
|
||
create table mysqltest_2.t2 select 1 d, 2 t;
|
||
grant update (a) on mysqltest_1.t1 to mysqltest_3@localhost;
|
||
grant select (b) on mysqltest_1.t2 to mysqltest_3@localhost;
|
||
grant select (c) on mysqltest_2.t1 to mysqltest_3@localhost;
|
||
grant update (d) on mysqltest_2.t2 to mysqltest_3@localhost;
|
||
show grants for mysqltest_3@localhost;
|
||
Grants for mysqltest_3@localhost
|
||
GRANT USAGE ON *.* TO 'mysqltest_3'@'localhost'
|
||
GRANT SELECT (b) ON `mysqltest_1`.`t2` TO 'mysqltest_3'@'localhost'
|
||
GRANT UPDATE (a) ON `mysqltest_1`.`t1` TO 'mysqltest_3'@'localhost'
|
||
GRANT UPDATE (d) ON `mysqltest_2`.`t2` TO 'mysqltest_3'@'localhost'
|
||
GRANT SELECT (c) ON `mysqltest_2`.`t1` TO 'mysqltest_3'@'localhost'
|
||
update mysqltest_1.t1, mysqltest_1.t2 set q=10 where b=1;
|
||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for column 'q' in table 't1'
|
||
update mysqltest_1.t2, mysqltest_2.t2 set d=20 where d=1;
|
||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'd' in table 't2'
|
||
update mysqltest_1.t1, mysqltest_2.t2 set d=20 where d=1;
|
||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
||
update mysqltest_2.t1, mysqltest_1.t2 set c=20 where b=1;
|
||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
||
update mysqltest_2.t1, mysqltest_2.t2 set d=10 where s=2;
|
||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 's' in table 't1'
|
||
update mysqltest_1.t1, mysqltest_2.t2 set a=10,d=10;
|
||
update mysqltest_1.t1, mysqltest_2.t1 set a=20 where c=20;
|
||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||
a q b r
|
||
10 2 1 2
|
||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||
c s d t
|
||
1 2 10 2
|
||
revoke all on mysqltest_1.t1 from mysqltest_3@localhost;
|
||
revoke all on mysqltest_1.t2 from mysqltest_3@localhost;
|
||
revoke all on mysqltest_2.t1 from mysqltest_3@localhost;
|
||
revoke all on mysqltest_2.t2 from mysqltest_3@localhost;
|
||
grant all on mysqltest_2.* to mysqltest_3@localhost;
|
||
grant select on *.* to mysqltest_3@localhost;
|
||
flush privileges;
|
||
use mysqltest_1;
|
||
update mysqltest_2.t1, mysqltest_2.t2 set c=500,d=600;
|
||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
||
use mysqltest_2;
|
||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
||
update mysqltest_2.t1, mysqltest_1.t2 set c=100,b=200;
|
||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't2'
|
||
update mysqltest_1.t1, mysqltest_2.t2 set a=100,d=200;
|
||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||
a q b r
|
||
10 2 1 2
|
||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||
c s d t
|
||
500 2 600 2
|
||
delete from mysql.user where user='mysqltest_3';
|
||
delete from mysql.db where user="mysqltest_3";
|
||
delete from mysql.tables_priv where user="mysqltest_3";
|
||
delete from mysql.columns_priv where user="mysqltest_3";
|
||
flush privileges;
|
||
drop database mysqltest_1;
|
||
drop database mysqltest_2;
|
||
SHOW PRIVILEGES;
|
||
Privilege Context Comment
|
||
Alter Tables To alter the table
|
||
Alter routine Functions,Procedures To alter or drop stored functions/procedures
|
||
Create Databases,Tables,Indexes To create new databases and tables
|
||
Create routine Functions,Procedures To use CREATE FUNCTION/PROCEDURE
|
||
Create temporary tables Databases To use CREATE TEMPORARY TABLE
|
||
Create view Tables To create new views
|
||
Create user Server Admin To create new users
|
||
Delete Tables To delete existing rows
|
||
Drop Databases,Tables To drop databases, tables, and views
|
||
Event Server Admin Creation, alteration, deletion and execution of events.
|
||
Execute Functions,Procedures To execute stored routines
|
||
File File access on server To read and write files on the server
|
||
Grant option Databases,Tables,Functions,Procedures To give to other users those privileges you possess
|
||
Index Tables To create or drop indexes
|
||
Insert Tables To insert data into tables
|
||
Lock tables Databases To use LOCK TABLES (together with SELECT privilege)
|
||
Process Server Admin To view the plain text of currently executing queries
|
||
References Databases,Tables To have references on tables
|
||
Reload Server Admin To reload or refresh tables, logs and privileges
|
||
Replication client Server Admin To ask where the slave or master servers are
|
||
Replication slave Server Admin To read binary log events from the master
|
||
Select Tables To retrieve rows from table
|
||
Show databases Server Admin To see all databases with SHOW DATABASES
|
||
Show view Tables To see views with SHOW CREATE VIEW
|
||
Shutdown Server Admin To shut down the server
|
||
Super Server Admin To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.
|
||
Trigger Tables To use triggers
|
||
Update Tables To update existing rows
|
||
Usage Server Admin No privileges - allow connect only
|
||
create database mysqltest;
|
||
create table mysqltest.t1 (a int,b int,c int);
|
||
grant all on mysqltest.t1 to mysqltest_1@localhost;
|
||
alter table t1 rename t2;
|
||
ERROR 42000: INSERT,CREATE command denied to user 'mysqltest_1'@'localhost' for table 't2'
|
||
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
||
delete from mysql.user where user=_binary'mysqltest_1';
|
||
drop database mysqltest;
|
||
CREATE USER dummy@localhost;
|
||
CREATE DATABASE mysqltest;
|
||
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||
GRANT ALL PRIVILEGES ON mysqltest.dummytable TO dummy@localhost;
|
||
GRANT ALL PRIVILEGES ON mysqltest.dummyview TO dummy@localhost;
|
||
SHOW GRANTS FOR dummy@localhost;
|
||
Grants for dummy@localhost
|
||
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||
GRANT ALL PRIVILEGES ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||
GRANT ALL PRIVILEGES ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||
use INFORMATION_SCHEMA;
|
||
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||
mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
|
||
mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
|
||
FLUSH PRIVILEGES;
|
||
SHOW GRANTS FOR dummy@localhost;
|
||
Grants for dummy@localhost
|
||
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||
GRANT ALL PRIVILEGES ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||
GRANT ALL PRIVILEGES ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||
mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
|
||
mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, TRIGGER, UPDATE
|
||
SHOW FIELDS FROM mysql.tables_priv;
|
||
Field Type Null Key Default Extra
|
||
Host char(60) NO PRI
|
||
Db char(64) NO PRI
|
||
User char(16) NO PRI
|
||
Table_name char(64) NO PRI
|
||
Grantor char(77) NO MUL
|
||
Timestamp timestamp YES CURRENT_TIMESTAMP
|
||
Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') NO
|
||
Column_priv set('Select','Insert','Update','References') NO
|
||
use test;
|
||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||
DROP USER dummy@localhost;
|
||
DROP DATABASE mysqltest;
|
||
CREATE USER dummy@localhost;
|
||
CREATE DATABASE mysqltest;
|
||
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||
GRANT CREATE VIEW ON mysqltest.dummytable TO dummy@localhost;
|
||
GRANT CREATE VIEW ON mysqltest.dummyview TO dummy@localhost;
|
||
SHOW GRANTS FOR dummy@localhost;
|
||
Grants for dummy@localhost
|
||
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||
GRANT CREATE VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||
GRANT CREATE VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||
use INFORMATION_SCHEMA;
|
||
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||
mysqltest dummytable CREATE VIEW
|
||
mysqltest dummyview CREATE VIEW
|
||
FLUSH PRIVILEGES;
|
||
SHOW GRANTS FOR dummy@localhost;
|
||
Grants for dummy@localhost
|
||
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||
GRANT CREATE VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||
GRANT CREATE VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||
mysqltest dummytable CREATE VIEW
|
||
mysqltest dummyview CREATE VIEW
|
||
use test;
|
||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||
DROP USER dummy@localhost;
|
||
DROP DATABASE mysqltest;
|
||
CREATE USER dummy@localhost;
|
||
CREATE DATABASE mysqltest;
|
||
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||
GRANT SHOW VIEW ON mysqltest.dummytable TO dummy@localhost;
|
||
GRANT SHOW VIEW ON mysqltest.dummyview TO dummy@localhost;
|
||
SHOW GRANTS FOR dummy@localhost;
|
||
Grants for dummy@localhost
|
||
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||
GRANT SHOW VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||
GRANT SHOW VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||
use INFORMATION_SCHEMA;
|
||
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||
mysqltest dummytable SHOW VIEW
|
||
mysqltest dummyview SHOW VIEW
|
||
FLUSH PRIVILEGES;
|
||
SHOW GRANTS FOR dummy@localhost;
|
||
Grants for dummy@localhost
|
||
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||
GRANT SHOW VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||
GRANT SHOW VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||
mysqltest dummytable SHOW VIEW
|
||
mysqltest dummyview SHOW VIEW
|
||
use test;
|
||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||
DROP USER dummy@localhost;
|
||
DROP DATABASE mysqltest;
|
||
use mysql;
|
||
insert into tables_priv values ('','test_db','mysqltest_1','test_table','test_grantor',CURRENT_TIMESTAMP,'Select','Select');
|
||
flush privileges;
|
||
delete from tables_priv where host = '' and user = 'mysqltest_1';
|
||
flush privileges;
|
||
set @user123="non-existent";
|
||
select * from mysql.db where user=@user123;
|
||
Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv Event_priv Trigger_priv
|
||
set names koi8r;
|
||
create database <20><>;
|
||
grant select on <20><>.* to root@localhost;
|
||
select hex(Db) from mysql.db where Db='<27><>';
|
||
hex(Db)
|
||
D0B1D0B4
|
||
show grants for root@localhost;
|
||
Grants for root@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT ON `<60><>`.* TO 'root'@'localhost'
|
||
flush privileges;
|
||
show grants for root@localhost;
|
||
Grants for root@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||
GRANT SELECT ON `<60><>`.* TO 'root'@'localhost'
|
||
drop database <20><>;
|
||
revoke all privileges on <20><>.* from root@localhost;
|
||
show grants for root@localhost;
|
||
Grants for root@localhost
|
||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||
set names latin1;
|
||
create user mysqltest_7@;
|
||
set password for mysqltest_7@ = password('systpass');
|
||
show grants for mysqltest_7@;
|
||
Grants for mysqltest_7@
|
||
GRANT USAGE ON *.* TO 'mysqltest_7'@'' IDENTIFIED BY PASSWORD '*2FB071A056F9BB745219D9C876814231DAF46517'
|
||
drop user mysqltest_7@;
|
||
flush privileges;
|
||
show grants for mysqltest_7@;
|
||
ERROR 42000: There is no such grant defined for user 'mysqltest_7' on host ''
|