mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge mysql.com:/home/mydev/mysql-5.0
into mysql.com:/home/mydev/mysql-5.0-wl2050-new
This commit is contained in:
@ -539,8 +539,8 @@ character-set=latin1
|
||||
"Using storage engine %s for table '%s'",
|
||||
#define ER_CANT_AGGREGATE_2COLLATIONS 1267
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
#define ER_DROP_USER 1268
|
||||
"Can't drop one or more of the requested users",
|
||||
#define ER_HANDLE_USER 1268
|
||||
"Operation %s failed for %d of the requested users",
|
||||
#define ER_REVOKE_GRANTS 1269
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
#define ER_CANT_AGGREGATE_3COLLATIONS 1270
|
||||
|
@ -284,7 +284,7 @@
|
||||
#define ER_WARN_DATA_TRUNCATED 1265
|
||||
#define ER_WARN_USING_OTHER_HANDLER 1266
|
||||
#define ER_CANT_AGGREGATE_2COLLATIONS 1267
|
||||
#define ER_DROP_USER 1268
|
||||
#define ER_HANDLE_USER 1268
|
||||
#define ER_REVOKE_GRANTS 1269
|
||||
#define ER_CANT_AGGREGATE_3COLLATIONS 1270
|
||||
#define ER_CANT_AGGREGATE_NCOLLATIONS 1271
|
||||
|
@ -218,17 +218,19 @@ 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;
|
||||
ERROR HY000: Can't drop one or more of the requested users
|
||||
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, grant 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 4 of the requested users
|
||||
drop table t1;
|
||||
grant usage on *.* to mysqltest_1@localhost identified by "password";
|
||||
grant select, update, insert on test.* to mysqltest@localhost;
|
||||
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><>;
|
||||
@ -252,6 +254,7 @@ Grants for
|
||||
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;
|
||||
|
@ -60,3 +60,166 @@ use test;
|
||||
delete from mysql.user where user like 'mysqltest\_%';
|
||||
delete from mysql.db where user like 'mysqltest\_%';
|
||||
flush privileges;
|
||||
set sql_mode='maxdb';
|
||||
drop table if exists t1, t2;
|
||||
create table t1(c1 int);
|
||||
create table t2(c1 int, c2 int);
|
||||
create user 'mysqltest_1';
|
||||
create user 'mysqltest_1';
|
||||
ERROR HY000: Operation CREATE USER failed for 1 of the requested users
|
||||
create user 'mysqltest_2' identified by 'Mysqltest-2';
|
||||
create user 'mysqltest_3' identified by password 'fffffffffffffffffffffffffffffffffffffffff';
|
||||
grant select on *.* to 'mysqltest_2';
|
||||
grant insert on test.* to 'mysqltest_2';
|
||||
grant update on test.t1 to 'mysqltest_2';
|
||||
grant update (c2) on test.t2 to 'mysqltest_2';
|
||||
select host,user,password from mysql.user where user like 'mysqltest_%' order by host,user,password;
|
||||
host user password
|
||||
% mysqltest_1
|
||||
% mysqltest_2 *BD447CBA355AF58578D3AE33BA2E2CD388BA08D1
|
||||
% mysqltest_3 fffffffffffffffffffffffffffffffffffffffff
|
||||
select host,db,user from mysql.db where user like 'mysqltest_%' order by host,db,user;
|
||||
host db user
|
||||
% test mysqltest_2
|
||||
select host,db,user,table_name from mysql.tables_priv where user like 'mysqltest_%' order by host,db,user,table_name;
|
||||
host db user table_name
|
||||
% test mysqltest_2 t1
|
||||
% test mysqltest_2 t2
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user like 'mysqltest_%' order by host,db,user,table_name,column_name;
|
||||
host db user table_name column_name
|
||||
% test mysqltest_2 t2 c2
|
||||
show grants for 'mysqltest_1';
|
||||
Grants for mysqltest_1@%
|
||||
GRANT USAGE ON *.* TO 'mysqltest_1'@'%'
|
||||
show grants for 'mysqltest_2';
|
||||
Grants for mysqltest_2@%
|
||||
GRANT SELECT ON *.* TO 'mysqltest_2'@'%' IDENTIFIED BY PASSWORD '*BD447CBA355AF58578D3AE33BA2E2CD388BA08D1'
|
||||
GRANT INSERT ON "test".* TO 'mysqltest_2'@'%'
|
||||
GRANT UPDATE (c2) ON "test"."t2" TO 'mysqltest_2'@'%'
|
||||
GRANT UPDATE ON "test"."t1" TO 'mysqltest_2'@'%'
|
||||
drop user 'mysqltest_1';
|
||||
select host,user,password from mysql.user where user like 'mysqltest_%' order by host,user,password;
|
||||
host user password
|
||||
% mysqltest_2 *BD447CBA355AF58578D3AE33BA2E2CD388BA08D1
|
||||
% mysqltest_3 fffffffffffffffffffffffffffffffffffffffff
|
||||
select host,db,user from mysql.db where user like 'mysqltest_%' order by host,db,user;
|
||||
host db user
|
||||
% test mysqltest_2
|
||||
select host,db,user,table_name from mysql.tables_priv where user like 'mysqltest_%' order by host,db,user,table_name;
|
||||
host db user table_name
|
||||
% test mysqltest_2 t1
|
||||
% test mysqltest_2 t2
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user like 'mysqltest_%' order by host,db,user,table_name,column_name;
|
||||
host db user table_name column_name
|
||||
% test mysqltest_2 t2 c2
|
||||
show grants for 'mysqltest_1';
|
||||
ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%'
|
||||
rename user 'mysqltest_2' to 'mysqltest_1';
|
||||
select host,user,password from mysql.user where user like 'mysqltest_%' order by host,user,password;
|
||||
host user password
|
||||
% mysqltest_1 *BD447CBA355AF58578D3AE33BA2E2CD388BA08D1
|
||||
% mysqltest_3 fffffffffffffffffffffffffffffffffffffffff
|
||||
select host,db,user from mysql.db where user like 'mysqltest_%' order by host,db,user;
|
||||
host db user
|
||||
% test mysqltest_1
|
||||
select host,db,user,table_name from mysql.tables_priv where user like 'mysqltest_%' order by host,db,user,table_name;
|
||||
host db user table_name
|
||||
% test mysqltest_1 t1
|
||||
% test mysqltest_1 t2
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user like 'mysqltest_%' order by host,db,user,table_name,column_name;
|
||||
host db user table_name column_name
|
||||
% test mysqltest_1 t2 c2
|
||||
show grants for 'mysqltest_1';
|
||||
Grants for mysqltest_1@%
|
||||
GRANT SELECT ON *.* TO 'mysqltest_1'@'%' IDENTIFIED BY PASSWORD '*BD447CBA355AF58578D3AE33BA2E2CD388BA08D1'
|
||||
GRANT INSERT ON "test".* TO 'mysqltest_1'@'%'
|
||||
GRANT UPDATE (c2) ON "test"."t2" TO 'mysqltest_1'@'%'
|
||||
GRANT UPDATE ON "test"."t1" TO 'mysqltest_1'@'%'
|
||||
drop user 'mysqltest_1', 'mysqltest_3';
|
||||
drop table t1, t2;
|
||||
insert into mysql.db set user='mysqltest_1', db='%', host='%';
|
||||
flush privileges;
|
||||
show grants for 'mysqltest_1';
|
||||
ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%'
|
||||
revoke all privileges, grant option from 'mysqltest_1';
|
||||
ERROR HY000: Can't revoke all privileges, grant for one or more of the requested users
|
||||
drop user 'mysqltest_1';
|
||||
select host,db,user from mysql.db where user = 'mysqltest_1' order by host,db,user;
|
||||
host db user
|
||||
insert into mysql.tables_priv set host='%', db='test', user='mysqltest_1', table_name='t1';
|
||||
flush privileges;
|
||||
show grants for 'mysqltest_1';
|
||||
ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%'
|
||||
drop user 'mysqltest_1';
|
||||
select host,db,user,table_name from mysql.tables_priv where user = 'mysqltest_1' order by host,db,user,table_name;
|
||||
host db user table_name
|
||||
insert into mysql.columns_priv set host='%', db='test', user='mysqltest_1', table_name='t1', column_name='c1';
|
||||
flush privileges;
|
||||
show grants for 'mysqltest_1';
|
||||
ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%'
|
||||
drop user 'mysqltest_1';
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user = 'mysqltest_1' order by host,db,user,table_name,column_name;
|
||||
host db user table_name column_name
|
||||
create user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
drop user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
create user 'mysqltest_1', 'mysqltest_2' identified by 'Mysqltest-2', 'mysqltest_3' identified by password 'fffffffffffffffffffffffffffffffffffffffff';
|
||||
rename user 'mysqltest_1' to 'mysqltest_1a', 'mysqltest_2' TO 'mysqltest_2a', 'mysqltest_3' TO 'mysqltest_3a';
|
||||
drop user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
ERROR HY000: Operation DROP USER failed for 3 of the requested users
|
||||
drop user 'mysqltest_1a', 'mysqltest_2a', 'mysqltest_3a';
|
||||
create user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
create user 'mysqltest_1a', 'mysqltest_2', 'mysqltest_3a';
|
||||
ERROR HY000: Operation CREATE USER failed for 1 of the requested users
|
||||
rename user 'mysqltest_1a' to 'mysqltest_1b', 'mysqltest_2a' TO 'mysqltest_2b', 'mysqltest_3a' TO 'mysqltest_3b';
|
||||
ERROR HY000: Operation RENAME USER failed for 1 of the requested users
|
||||
drop user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
drop user 'mysqltest_1b', 'mysqltest_2b', 'mysqltest_3b';
|
||||
ERROR HY000: Operation DROP USER failed for 1 of the requested users
|
||||
create user 'mysqltest_2' identified by 'Mysqltest-2';
|
||||
drop user 'mysqltest_2' identified by 'Mysqltest-2';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'Mysqltest-2'' at line 1
|
||||
create user '%@b'@'b';
|
||||
show grants for '%@b'@'b';
|
||||
Grants for %@b@b
|
||||
GRANT USAGE ON *.* TO '%@b'@'b'
|
||||
grant select on mysql.* to '%@b'@'b';
|
||||
show grants for '%@b'@'b';
|
||||
Grants for %@b@b
|
||||
GRANT USAGE ON *.* TO '%@b'@'b'
|
||||
GRANT SELECT ON "mysql".* TO '%@b'@'b'
|
||||
rename user '%@b'@'b' to '%@a'@'a';
|
||||
show grants for '%@b'@'b';
|
||||
ERROR 42000: There is no such grant defined for user '%@b' on host 'b'
|
||||
show grants for '%@a'@'a';
|
||||
Grants for %@a@a
|
||||
GRANT USAGE ON *.* TO '%@a'@'a'
|
||||
GRANT SELECT ON "mysql".* TO '%@a'@'a'
|
||||
drop user '%@a'@'a';
|
||||
create user mysqltest_2@localhost;
|
||||
grant usage on *.* to mysqltest_2@localhost with grant option;
|
||||
select host,user,password from mysql.user order by host,user,password;
|
||||
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysql'
|
||||
create user mysqltest_A@'%';
|
||||
rename user mysqltest_A@'%' to mysqltest_B@'%';
|
||||
drop user mysqltest_B@'%';
|
||||
drop user mysqltest_2@localhost;
|
||||
create user mysqltest_3@localhost;
|
||||
grant all privileges on mysql.* to mysqltest_3@localhost;
|
||||
select host,user,password from mysql.user order by host,user,password;
|
||||
host user password
|
||||
% mysqltest_2 *BD447CBA355AF58578D3AE33BA2E2CD388BA08D1
|
||||
127.0.0.1 root
|
||||
chilla%
|
||||
chilla% root
|
||||
localhost
|
||||
localhost mysqltest_3
|
||||
localhost root
|
||||
insert into mysql.user set host='%', user='mysqltest_B';
|
||||
create user mysqltest_A@'%';
|
||||
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysql'
|
||||
rename user mysqltest_B@'%' to mysqltest_C@'%';
|
||||
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysql'
|
||||
drop user mysqltest_B@'%';
|
||||
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysql'
|
||||
drop user mysqltest_B@'%';
|
||||
drop user mysqltest_3@localhost;
|
||||
|
@ -835,19 +835,19 @@ identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
drop table mysqltest.t9 ;
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
show grants for second_user@localhost ;
|
||||
Grants for second_user@localhost
|
||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
||||
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||
prepare s_t1 from 'select a as my_col from t1' ;
|
||||
execute s_t1 ;
|
||||
my_col
|
||||
|
@ -162,16 +162,18 @@ 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;
|
||||
--error 1268
|
||||
# Drop user now implicitly revokes all privileges.
|
||||
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||||
drop_user4@localhost;
|
||||
--error 1269
|
||||
revoke all privileges, grant option from drop_user1@localhost, drop_user2@localhost,
|
||||
drop_user3@localhost, drop_user4@localhost;
|
||||
--error 1268
|
||||
drop user 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@localhost;
|
||||
grant select, update, insert on test.* to mysqltest_1@localhost;
|
||||
show grants for mysqltest_1@localhost;
|
||||
drop user mysqltest_1@localhost;
|
||||
|
||||
@ -195,6 +197,9 @@ GRANT SELECT (
|
||||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||||
REVOKE SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||||
|
||||
# Revoke does not drop user. Leave a clean user table for the next tests.
|
||||
DROP USER <20><><EFBFBD><EFBFBD>@localhost;
|
||||
|
||||
DROP DATABASE <20><>;
|
||||
SET NAMES latin1;
|
||||
|
||||
|
@ -78,3 +78,150 @@ use test;
|
||||
delete from mysql.user where user like 'mysqltest\_%';
|
||||
delete from mysql.db where user like 'mysqltest\_%';
|
||||
flush privileges;
|
||||
|
||||
#
|
||||
# Create and drop user
|
||||
#
|
||||
set sql_mode='maxdb';
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
create table t1(c1 int);
|
||||
create table t2(c1 int, c2 int);
|
||||
#
|
||||
# Three forms of CREATE USER
|
||||
create user 'mysqltest_1';
|
||||
--error 1268
|
||||
create user 'mysqltest_1';
|
||||
create user 'mysqltest_2' identified by 'Mysqltest-2';
|
||||
create user 'mysqltest_3' identified by password 'fffffffffffffffffffffffffffffffffffffffff';
|
||||
grant select on *.* to 'mysqltest_2';
|
||||
grant insert on test.* to 'mysqltest_2';
|
||||
grant update on test.t1 to 'mysqltest_2';
|
||||
grant update (c2) on test.t2 to 'mysqltest_2';
|
||||
select host,user,password from mysql.user where user like 'mysqltest_%' order by host,user,password;
|
||||
select host,db,user from mysql.db where user like 'mysqltest_%' order by host,db,user;
|
||||
select host,db,user,table_name from mysql.tables_priv where user like 'mysqltest_%' order by host,db,user,table_name;
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user like 'mysqltest_%' order by host,db,user,table_name,column_name;
|
||||
show grants for 'mysqltest_1';
|
||||
show grants for 'mysqltest_2';
|
||||
#
|
||||
# Drop
|
||||
drop user 'mysqltest_1';
|
||||
select host,user,password from mysql.user where user like 'mysqltest_%' order by host,user,password;
|
||||
select host,db,user from mysql.db where user like 'mysqltest_%' order by host,db,user;
|
||||
select host,db,user,table_name from mysql.tables_priv where user like 'mysqltest_%' order by host,db,user,table_name;
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user like 'mysqltest_%' order by host,db,user,table_name,column_name;
|
||||
--error 1141
|
||||
show grants for 'mysqltest_1';
|
||||
#
|
||||
# Rename
|
||||
rename user 'mysqltest_2' to 'mysqltest_1';
|
||||
select host,user,password from mysql.user where user like 'mysqltest_%' order by host,user,password;
|
||||
select host,db,user from mysql.db where user like 'mysqltest_%' order by host,db,user;
|
||||
select host,db,user,table_name from mysql.tables_priv where user like 'mysqltest_%' order by host,db,user,table_name;
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user like 'mysqltest_%' order by host,db,user,table_name,column_name;
|
||||
show grants for 'mysqltest_1';
|
||||
drop user 'mysqltest_1', 'mysqltest_3';
|
||||
#
|
||||
# Grant must not create user
|
||||
#grant all on test.t1 to 'mysqltest_1';
|
||||
#drop user 'mysqltest_1';
|
||||
#
|
||||
# Cleanup
|
||||
drop table t1, t2;
|
||||
#
|
||||
# Add a stray record
|
||||
insert into mysql.db set user='mysqltest_1', db='%', host='%';
|
||||
flush privileges;
|
||||
--error 1141
|
||||
show grants for 'mysqltest_1';
|
||||
--error 1269
|
||||
revoke all privileges, grant option from 'mysqltest_1';
|
||||
drop user 'mysqltest_1';
|
||||
select host,db,user from mysql.db where user = 'mysqltest_1' order by host,db,user;
|
||||
#
|
||||
# Add a stray record
|
||||
insert into mysql.tables_priv set host='%', db='test', user='mysqltest_1', table_name='t1';
|
||||
flush privileges;
|
||||
--error 1141
|
||||
show grants for 'mysqltest_1';
|
||||
drop user 'mysqltest_1';
|
||||
select host,db,user,table_name from mysql.tables_priv where user = 'mysqltest_1' order by host,db,user,table_name;
|
||||
#
|
||||
# Add a stray record
|
||||
insert into mysql.columns_priv set host='%', db='test', user='mysqltest_1', table_name='t1', column_name='c1';
|
||||
flush privileges;
|
||||
--error 1141
|
||||
show grants for 'mysqltest_1';
|
||||
drop user 'mysqltest_1';
|
||||
select host,db,user,table_name,column_name from mysql.columns_priv where user = 'mysqltest_1' order by host,db,user,table_name,column_name;
|
||||
#
|
||||
# Handle multi user lists
|
||||
create user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
drop user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
create user 'mysqltest_1', 'mysqltest_2' identified by 'Mysqltest-2', 'mysqltest_3' identified by password 'fffffffffffffffffffffffffffffffffffffffff';
|
||||
rename user 'mysqltest_1' to 'mysqltest_1a', 'mysqltest_2' TO 'mysqltest_2a', 'mysqltest_3' TO 'mysqltest_3a';
|
||||
--error 1268
|
||||
drop user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
drop user 'mysqltest_1a', 'mysqltest_2a', 'mysqltest_3a';
|
||||
#
|
||||
# Let one of multiple users fail
|
||||
create user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
--error 1268
|
||||
create user 'mysqltest_1a', 'mysqltest_2', 'mysqltest_3a';
|
||||
--error 1268
|
||||
rename user 'mysqltest_1a' to 'mysqltest_1b', 'mysqltest_2a' TO 'mysqltest_2b', 'mysqltest_3a' TO 'mysqltest_3b';
|
||||
drop user 'mysqltest_1', 'mysqltest_2', 'mysqltest_3';
|
||||
--error 1268
|
||||
drop user 'mysqltest_1b', 'mysqltest_2b', 'mysqltest_3b';
|
||||
#
|
||||
# Obsolete syntax has been dropped
|
||||
create user 'mysqltest_2' identified by 'Mysqltest-2';
|
||||
--error 1064
|
||||
drop user 'mysqltest_2' identified by 'Mysqltest-2';
|
||||
#
|
||||
# Strange user names
|
||||
create user '%@b'@'b';
|
||||
show grants for '%@b'@'b';
|
||||
grant select on mysql.* to '%@b'@'b';
|
||||
show grants for '%@b'@'b';
|
||||
rename user '%@b'@'b' to '%@a'@'a';
|
||||
--error 1141
|
||||
show grants for '%@b'@'b';
|
||||
show grants for '%@a'@'a';
|
||||
drop user '%@a'@'a';
|
||||
#
|
||||
# USAGE WITH GRANT OPTION is sufficient.
|
||||
create user mysqltest_2@localhost;
|
||||
grant usage on *.* to mysqltest_2@localhost with grant option;
|
||||
connect (user2,localhost,mysqltest_2,,);
|
||||
connection user2;
|
||||
--error 1044
|
||||
select host,user,password from mysql.user order by host,user,password;
|
||||
create user mysqltest_A@'%';
|
||||
rename user mysqltest_A@'%' to mysqltest_B@'%';
|
||||
drop user mysqltest_B@'%';
|
||||
disconnect user2;
|
||||
connection default;
|
||||
drop user mysqltest_2@localhost;
|
||||
#
|
||||
# ALL PRIVILEGES without GRANT OPTION is not sufficient.
|
||||
create user mysqltest_3@localhost;
|
||||
grant all privileges on mysql.* to mysqltest_3@localhost;
|
||||
connect (user3,localhost,mysqltest_3,,);
|
||||
connection user3;
|
||||
select host,user,password from mysql.user order by host,user,password;
|
||||
insert into mysql.user set host='%', user='mysqltest_B';
|
||||
--error 1044
|
||||
create user mysqltest_A@'%';
|
||||
--error 1044
|
||||
rename user mysqltest_B@'%' to mysqltest_C@'%';
|
||||
--error 1044
|
||||
drop user mysqltest_B@'%';
|
||||
disconnect user3;
|
||||
connection default;
|
||||
drop user mysqltest_B@'%';
|
||||
drop user mysqltest_3@localhost;
|
||||
#
|
||||
|
||||
|
@ -296,7 +296,7 @@ character-set=latin2
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -287,7 +287,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -296,7 +296,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -284,7 +284,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -289,7 +289,7 @@ character-set=latin7
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -284,7 +284,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -297,7 +297,7 @@ character-set=latin1
|
||||
"Daten abgeschnitten f<>r Spalte '%s' in Zeile %ld",
|
||||
"F<>r Tabelle '%s' wird Speicher-Engine %s benutzt",
|
||||
"Unerlaubte Vermischung der Kollationen (%s,%s) und (%s,%s) f<>r die Operation '%s'",
|
||||
"Kann einen oder mehrere der angegebenen Benutzer nicht l<>schen",
|
||||
"Das Kommando %s scheiterte f<>r %d von den betroffenen Benutzern",
|
||||
"Kann nicht alle Berechtigungen widerrufen, grant for one or more of the requested users",
|
||||
"Unerlaubte Vermischung der Kollationen (%s,%s), (%s,%s), (%s,%s) f<>r die Operation '%s'",
|
||||
"Unerlaubte Vermischung der Kollationen f<>r die Operation '%s'",
|
||||
|
@ -284,7 +284,7 @@ character-set=greek
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -289,7 +289,7 @@ character-set=latin2
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -284,7 +284,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -288,7 +288,7 @@ character-set=ujis
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -284,7 +284,7 @@ character-set=euckr
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -286,7 +286,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -286,7 +286,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -289,7 +289,7 @@ character-set=latin2
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -286,7 +286,7 @@ character-set=latin1
|
||||
"Dado truncado para coluna '%s' na linha %ld",
|
||||
"Usando engine de armazenamento %s para tabela '%s'",
|
||||
"Combina<6E><61>o ilegal de collations (%s,%s) e (%s,%s) para opera<72><61>o '%s'",
|
||||
"N<EFBFBD>o pode remover um ou mais dos usu<73>rios pedidos",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"N<>o pode revocar todos os privil<69>gios, grant para um ou mais dos usu<73>rios pedidos",
|
||||
"Ilegal combina<6E><61>o de collations (%s,%s), (%s,%s), (%s,%s) para opera<72><61>o '%s'",
|
||||
"Ilegal combina<6E><61>o de collations para opera<72><61>o '%s'",
|
||||
|
@ -289,7 +289,7 @@ character-set=latin2
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -289,7 +289,7 @@ character-set=koi8r
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -277,7 +277,7 @@ character-set=cp1250
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -292,7 +292,7 @@ character-set=latin2
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -288,7 +288,7 @@ character-set=latin1
|
||||
"Datos truncados para columna '%s' en la l<>nea %ld",
|
||||
"Usando motor de almacenamiento %s para tabla '%s'",
|
||||
"Ilegal mezcla de collations (%s,%s) y (%s,%s) para operaci<63>n '%s'",
|
||||
"No puede remover uno o mas de los usuarios solicitados",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"No puede revocar todos los privilegios, derecho para uno o mas de los usuarios solicitados",
|
||||
"Ilegal mezcla de collations (%s,%s), (%s,%s), (%s,%s) para operaci<63>n '%s'",
|
||||
"Ilegal mezcla de collations para operaci<63>n '%s'",
|
||||
|
@ -284,7 +284,7 @@ character-set=latin1
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Anv<6E>nder handler %s f<>r tabell '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
@ -290,7 +290,7 @@ character-set=koi8u
|
||||
"Data truncated for column '%s' at row %ld",
|
||||
"Using storage engine %s for table '%s'",
|
||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||
"Can't drop one or more of the requested users",
|
||||
"Operation %s failed for %d of the requested users",
|
||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||
"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||
"Illegal mix of collations for operation '%s'",
|
||||
|
879
sql/sql_acl.cc
879
sql/sql_acl.cc
File diff suppressed because it is too large
Load Diff
@ -182,7 +182,9 @@ ulong get_column_grant(THD *thd, GRANT_INFO *grant,
|
||||
bool mysql_show_grants(THD *thd, LEX_USER *user);
|
||||
void get_privilege_desc(char *to, uint max_length, ulong access);
|
||||
void get_mqh(const char *user, const char *host, USER_CONN *uc);
|
||||
bool mysql_create_user(THD *thd, List <LEX_USER> &list);
|
||||
bool mysql_drop_user(THD *thd, List <LEX_USER> &list);
|
||||
bool mysql_rename_user(THD *thd, List <LEX_USER> &list);
|
||||
bool mysql_revoke_all(THD *thd, List <LEX_USER> &list);
|
||||
void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant,
|
||||
const char *db, const char *table);
|
||||
|
@ -78,7 +78,8 @@ enum enum_sql_command {
|
||||
SQLCOM_SHOW_BINLOG_EVENTS, SQLCOM_SHOW_NEW_MASTER, SQLCOM_DO,
|
||||
SQLCOM_SHOW_WARNS, SQLCOM_EMPTY_QUERY, SQLCOM_SHOW_ERRORS,
|
||||
SQLCOM_SHOW_COLUMN_TYPES, SQLCOM_SHOW_STORAGE_ENGINES, SQLCOM_SHOW_PRIVILEGES,
|
||||
SQLCOM_HELP, SQLCOM_DROP_USER, SQLCOM_REVOKE_ALL, SQLCOM_CHECKSUM,
|
||||
SQLCOM_HELP, SQLCOM_CREATE_USER, SQLCOM_DROP_USER, SQLCOM_RENAME_USER,
|
||||
SQLCOM_REVOKE_ALL, SQLCOM_CHECKSUM,
|
||||
SQLCOM_CREATE_PROCEDURE, SQLCOM_CREATE_SPFUNCTION, SQLCOM_CALL,
|
||||
SQLCOM_DROP_PROCEDURE, SQLCOM_ALTER_PROCEDURE,SQLCOM_ALTER_FUNCTION,
|
||||
SQLCOM_SHOW_CREATE_PROC, SQLCOM_SHOW_CREATE_FUNC,
|
||||
|
@ -3384,6 +3384,21 @@ create_error:
|
||||
break;
|
||||
}
|
||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||
case SQLCOM_CREATE_USER:
|
||||
{
|
||||
if (check_access(thd, GRANT_ACL,"mysql",0,1,0))
|
||||
break;
|
||||
if (!(res= mysql_create_user(thd, lex->users_list)))
|
||||
{
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||
mysql_bin_log.write(&qinfo);
|
||||
}
|
||||
send_ok(thd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SQLCOM_DROP_USER:
|
||||
{
|
||||
if (check_access(thd, GRANT_ACL,"mysql",0,1,0))
|
||||
@ -3392,8 +3407,23 @@ create_error:
|
||||
{
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||
mysql_bin_log.write(&qinfo);
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||
mysql_bin_log.write(&qinfo);
|
||||
}
|
||||
send_ok(thd);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SQLCOM_RENAME_USER:
|
||||
{
|
||||
if (check_access(thd, GRANT_ACL,"mysql",0,1,0))
|
||||
break;
|
||||
if (!(res= mysql_rename_user(thd, lex->users_list)))
|
||||
{
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||
mysql_bin_log.write(&qinfo);
|
||||
}
|
||||
send_ok(thd);
|
||||
}
|
||||
|
103
sql/sql_yacc.yy
103
sql/sql_yacc.yy
@ -788,9 +788,9 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
|
||||
opt_delete_options opt_delete_option varchar nchar nvarchar
|
||||
opt_outer table_list table_name opt_option opt_place
|
||||
opt_attribute opt_attribute_list attribute column_list column_list_id
|
||||
opt_column_list grant_privileges opt_table user_list grant_option
|
||||
grant_privilege grant_privilege_list
|
||||
flush_options flush_option
|
||||
opt_column_list grant_privileges opt_table grant_list grant_option
|
||||
grant_privilege grant_privilege_list user_list rename_list
|
||||
clear_privileges flush_options flush_option
|
||||
equal optional_braces opt_key_definition key_usage_list2
|
||||
opt_mi_check_type opt_to mi_check_types normal_join
|
||||
table_to_table_list table_to_table opt_table_list opt_as
|
||||
@ -1287,8 +1287,26 @@ create:
|
||||
TL_WRITE))
|
||||
YYABORT;
|
||||
}
|
||||
| CREATE USER clear_privileges grant_list
|
||||
{
|
||||
Lex->sql_command = SQLCOM_CREATE_USER;
|
||||
}
|
||||
;
|
||||
|
||||
clear_privileges:
|
||||
/* Nothing */
|
||||
{
|
||||
LEX *lex=Lex;
|
||||
lex->users_list.empty();
|
||||
lex->columns.empty();
|
||||
lex->grant= lex->grant_tot_col= 0;
|
||||
lex->select_lex.db= 0;
|
||||
lex->ssl_type= SSL_TYPE_NOT_SPECIFIED;
|
||||
lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
|
||||
bzero((char *)&(lex->mqh),sizeof(lex->mqh));
|
||||
}
|
||||
;
|
||||
|
||||
sp_name:
|
||||
IDENT_sys '.' IDENT_sys
|
||||
{
|
||||
@ -3671,8 +3689,25 @@ rename:
|
||||
}
|
||||
table_to_table_list
|
||||
{}
|
||||
| RENAME USER clear_privileges rename_list
|
||||
{
|
||||
Lex->sql_command = SQLCOM_RENAME_USER;
|
||||
}
|
||||
;
|
||||
|
||||
rename_list:
|
||||
user TO_SYM user
|
||||
{
|
||||
if (Lex->users_list.push_back($1) || Lex->users_list.push_back($3))
|
||||
YYABORT;
|
||||
}
|
||||
| rename_list ',' user TO_SYM user
|
||||
{
|
||||
if (Lex->users_list.push_back($3) || Lex->users_list.push_back($5))
|
||||
YYABORT;
|
||||
}
|
||||
;
|
||||
|
||||
table_to_table_list:
|
||||
table_to_table
|
||||
| table_to_table_list ',' table_to_table;
|
||||
@ -5479,14 +5514,10 @@ drop:
|
||||
lex->drop_if_exists= $3;
|
||||
lex->spname= $4;
|
||||
}
|
||||
| DROP USER
|
||||
| DROP USER clear_privileges user_list
|
||||
{
|
||||
LEX *lex=Lex;
|
||||
lex->sql_command = SQLCOM_DROP_USER;
|
||||
lex->users_list.empty();
|
||||
}
|
||||
user_list
|
||||
{}
|
||||
Lex->sql_command = SQLCOM_DROP_USER;
|
||||
}
|
||||
| DROP VIEW_SYM if_exists table_list opt_restrict
|
||||
{
|
||||
THD *thd= YYTHD;
|
||||
@ -7464,48 +7495,28 @@ handler_rkey_mode:
|
||||
/* GRANT / REVOKE */
|
||||
|
||||
revoke:
|
||||
REVOKE
|
||||
{
|
||||
LEX *lex=Lex;
|
||||
lex->sql_command = SQLCOM_REVOKE;
|
||||
lex->users_list.empty();
|
||||
lex->columns.empty();
|
||||
lex->grant= lex->grant_tot_col=0;
|
||||
lex->select_lex.db=0;
|
||||
lex->ssl_type= SSL_TYPE_NOT_SPECIFIED;
|
||||
lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
|
||||
bzero((char*) &lex->mqh, sizeof(lex->mqh));
|
||||
}
|
||||
revoke_command
|
||||
REVOKE clear_privileges revoke_command
|
||||
{}
|
||||
;
|
||||
|
||||
revoke_command:
|
||||
grant_privileges ON opt_table FROM user_list
|
||||
{}
|
||||
grant_privileges ON opt_table FROM grant_list
|
||||
{
|
||||
Lex->sql_command = SQLCOM_REVOKE;
|
||||
}
|
||||
|
|
||||
ALL opt_privileges ',' GRANT OPTION FROM user_list
|
||||
ALL opt_privileges ',' GRANT OPTION FROM grant_list
|
||||
{
|
||||
Lex->sql_command = SQLCOM_REVOKE_ALL;
|
||||
}
|
||||
;
|
||||
|
||||
grant:
|
||||
GRANT
|
||||
{
|
||||
LEX *lex=Lex;
|
||||
lex->users_list.empty();
|
||||
lex->columns.empty();
|
||||
lex->sql_command = SQLCOM_GRANT;
|
||||
lex->grant= lex->grant_tot_col= 0;
|
||||
lex->select_lex.db= 0;
|
||||
lex->ssl_type= SSL_TYPE_NOT_SPECIFIED;
|
||||
lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
|
||||
bzero((char *)&(lex->mqh),sizeof(lex->mqh));
|
||||
}
|
||||
grant_privileges ON opt_table TO_SYM user_list
|
||||
GRANT clear_privileges grant_privileges ON opt_table TO_SYM grant_list
|
||||
require_clause grant_options
|
||||
{}
|
||||
{
|
||||
Lex->sql_command = SQLCOM_GRANT;
|
||||
}
|
||||
;
|
||||
|
||||
grant_privileges:
|
||||
@ -7645,8 +7656,18 @@ opt_table:
|
||||
|
||||
|
||||
user_list:
|
||||
user { if (Lex->users_list.push_back($1)) YYABORT;}
|
||||
| user_list ',' user
|
||||
{
|
||||
if (Lex->users_list.push_back($3))
|
||||
YYABORT;
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
grant_list:
|
||||
grant_user { if (Lex->users_list.push_back($1)) YYABORT;}
|
||||
| user_list ',' grant_user
|
||||
| grant_list ',' grant_user
|
||||
{
|
||||
if (Lex->users_list.push_back($3))
|
||||
YYABORT;
|
||||
|
Reference in New Issue
Block a user