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'",
|
"Using storage engine %s for table '%s'",
|
||||||
#define ER_CANT_AGGREGATE_2COLLATIONS 1267
|
#define ER_CANT_AGGREGATE_2COLLATIONS 1267
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'",
|
||||||
#define ER_DROP_USER 1268
|
#define ER_HANDLE_USER 1268
|
||||||
"Can't drop one or more of the requested users",
|
"Operation %s failed for %d of the requested users",
|
||||||
#define ER_REVOKE_GRANTS 1269
|
#define ER_REVOKE_GRANTS 1269
|
||||||
"Can't revoke all privileges, grant for one or more of the requested users",
|
"Can't revoke all privileges, grant for one or more of the requested users",
|
||||||
#define ER_CANT_AGGREGATE_3COLLATIONS 1270
|
#define ER_CANT_AGGREGATE_3COLLATIONS 1270
|
||||||
|
@ -284,7 +284,7 @@
|
|||||||
#define ER_WARN_DATA_TRUNCATED 1265
|
#define ER_WARN_DATA_TRUNCATED 1265
|
||||||
#define ER_WARN_USING_OTHER_HANDLER 1266
|
#define ER_WARN_USING_OTHER_HANDLER 1266
|
||||||
#define ER_CANT_AGGREGATE_2COLLATIONS 1267
|
#define ER_CANT_AGGREGATE_2COLLATIONS 1267
|
||||||
#define ER_DROP_USER 1268
|
#define ER_HANDLE_USER 1268
|
||||||
#define ER_REVOKE_GRANTS 1269
|
#define ER_REVOKE_GRANTS 1269
|
||||||
#define ER_CANT_AGGREGATE_3COLLATIONS 1270
|
#define ER_CANT_AGGREGATE_3COLLATIONS 1270
|
||||||
#define ER_CANT_AGGREGATE_NCOLLATIONS 1271
|
#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;
|
grant select on *.* to drop_user4@localhost;
|
||||||
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||||||
drop_user4@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,
|
revoke all privileges, grant option from drop_user1@localhost, drop_user2@localhost,
|
||||||
drop_user3@localhost, drop_user4@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 user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||||||
drop_user4@localhost;
|
drop_user4@localhost;
|
||||||
|
ERROR HY000: Operation DROP USER failed for 4 of the requested users
|
||||||
drop table t1;
|
drop table t1;
|
||||||
grant usage on *.* to mysqltest_1@localhost identified by "password";
|
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;
|
show grants for mysqltest_1@localhost;
|
||||||
Grants for mysqltest_1@localhost
|
Grants for mysqltest_1@localhost
|
||||||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
|
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;
|
drop user mysqltest_1@localhost;
|
||||||
SET NAMES koi8r;
|
SET NAMES koi8r;
|
||||||
CREATE DATABASE <20><>;
|
CREATE DATABASE <20><>;
|
||||||
@ -252,6 +254,7 @@ Grants for
|
|||||||
GRANT USAGE ON *.* TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
GRANT USAGE ON *.* TO '<27><><EFBFBD><EFBFBD>'@'localhost'
|
||||||
GRANT SELECT (<28><><EFBFBD>) ON `<60><>`.`<60><><EFBFBD>` 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;
|
REVOKE SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||||||
|
DROP USER <20><><EFBFBD><EFBFBD>@localhost;
|
||||||
DROP DATABASE <20><>;
|
DROP DATABASE <20><>;
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
USE test;
|
USE test;
|
||||||
|
@ -60,3 +60,166 @@ use test;
|
|||||||
delete from mysql.user where user like 'mysqltest\_%';
|
delete from mysql.user where user like 'mysqltest\_%';
|
||||||
delete from mysql.db where user like 'mysqltest\_%';
|
delete from mysql.db where user like 'mysqltest\_%';
|
||||||
flush privileges;
|
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 ;
|
show grants for second_user@localhost ;
|
||||||
Grants for second_user@localhost
|
Grants for second_user@localhost
|
||||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
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`.`t1` TO 'second_user'@'localhost'
|
||||||
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||||
drop table mysqltest.t9 ;
|
drop table mysqltest.t9 ;
|
||||||
show grants for second_user@localhost ;
|
show grants for second_user@localhost ;
|
||||||
Grants for second_user@localhost
|
Grants for second_user@localhost
|
||||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
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`.`t1` TO 'second_user'@'localhost'
|
||||||
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
||||||
show grants for second_user@localhost ;
|
show grants for second_user@localhost ;
|
||||||
Grants for second_user@localhost
|
Grants for second_user@localhost
|
||||||
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
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`.`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' ;
|
prepare s_t1 from 'select a as my_col from t1' ;
|
||||||
execute s_t1 ;
|
execute s_t1 ;
|
||||||
my_col
|
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.t1 to drop_user2@localhost;
|
||||||
grant select on test.* to drop_user3@localhost;
|
grant select on test.* to drop_user3@localhost;
|
||||||
grant select on *.* to drop_user4@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 user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||||||
drop_user4@localhost;
|
drop_user4@localhost;
|
||||||
|
--error 1269
|
||||||
revoke all privileges, grant option from drop_user1@localhost, drop_user2@localhost,
|
revoke all privileges, grant option from drop_user1@localhost, drop_user2@localhost,
|
||||||
drop_user3@localhost, drop_user4@localhost;
|
drop_user3@localhost, drop_user4@localhost;
|
||||||
|
--error 1268
|
||||||
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||||||
drop_user4@localhost;
|
drop_user4@localhost;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
grant usage on *.* to mysqltest_1@localhost identified by "password";
|
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;
|
show grants for mysqltest_1@localhost;
|
||||||
drop user mysqltest_1@localhost;
|
drop user mysqltest_1@localhost;
|
||||||
|
|
||||||
@ -195,6 +197,9 @@ GRANT SELECT (
|
|||||||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||||||
REVOKE SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> FROM <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><>;
|
DROP DATABASE <20><>;
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
|
|
||||||
|
@ -78,3 +78,150 @@ use test;
|
|||||||
delete from mysql.user where user like 'mysqltest\_%';
|
delete from mysql.user where user like 'mysqltest\_%';
|
||||||
delete from mysql.db where user like 'mysqltest\_%';
|
delete from mysql.db where user like 'mysqltest\_%';
|
||||||
flush privileges;
|
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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Daten abgeschnitten f<>r Spalte '%s' in Zeile %ld",
|
||||||
"F<>r Tabelle '%s' wird Speicher-Engine %s benutzt",
|
"F<>r Tabelle '%s' wird Speicher-Engine %s benutzt",
|
||||||
"Unerlaubte Vermischung der Kollationen (%s,%s) und (%s,%s) f<>r die Operation '%s'",
|
"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",
|
"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 (%s,%s), (%s,%s), (%s,%s) f<>r die Operation '%s'",
|
||||||
"Unerlaubte Vermischung der Kollationen 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Dado truncado para coluna '%s' na linha %ld",
|
||||||
"Usando engine de armazenamento %s para tabela '%s'",
|
"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'",
|
"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",
|
"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 (%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'",
|
"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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Datos truncados para columna '%s' en la l<>nea %ld",
|
||||||
"Usando motor de almacenamiento %s para tabla '%s'",
|
"Usando motor de almacenamiento %s para tabla '%s'",
|
||||||
"Ilegal mezcla de collations (%s,%s) y (%s,%s) para operaci<63>n '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) para operaci<63>n '%s'",
|
||||||
"Ilegal mezcla de collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Anv<6E>nder handler %s f<>r tabell '%s'",
|
"Anv<6E>nder handler %s f<>r tabell '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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",
|
"Data truncated for column '%s' at row %ld",
|
||||||
"Using storage engine %s for table '%s'",
|
"Using storage engine %s for table '%s'",
|
||||||
"Illegal mix of collations (%s,%s) and (%s,%s) for operation '%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",
|
"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 (%s,%s), (%s,%s), (%s,%s) for operation '%s'",
|
||||||
"Illegal mix of collations 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);
|
bool mysql_show_grants(THD *thd, LEX_USER *user);
|
||||||
void get_privilege_desc(char *to, uint max_length, ulong access);
|
void get_privilege_desc(char *to, uint max_length, ulong access);
|
||||||
void get_mqh(const char *user, const char *host, USER_CONN *uc);
|
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_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);
|
bool mysql_revoke_all(THD *thd, List <LEX_USER> &list);
|
||||||
void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant,
|
void fill_effective_table_privileges(THD *thd, GRANT_INFO *grant,
|
||||||
const char *db, const char *table);
|
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_BINLOG_EVENTS, SQLCOM_SHOW_NEW_MASTER, SQLCOM_DO,
|
||||||
SQLCOM_SHOW_WARNS, SQLCOM_EMPTY_QUERY, SQLCOM_SHOW_ERRORS,
|
SQLCOM_SHOW_WARNS, SQLCOM_EMPTY_QUERY, SQLCOM_SHOW_ERRORS,
|
||||||
SQLCOM_SHOW_COLUMN_TYPES, SQLCOM_SHOW_STORAGE_ENGINES, SQLCOM_SHOW_PRIVILEGES,
|
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_CREATE_PROCEDURE, SQLCOM_CREATE_SPFUNCTION, SQLCOM_CALL,
|
||||||
SQLCOM_DROP_PROCEDURE, SQLCOM_ALTER_PROCEDURE,SQLCOM_ALTER_FUNCTION,
|
SQLCOM_DROP_PROCEDURE, SQLCOM_ALTER_PROCEDURE,SQLCOM_ALTER_FUNCTION,
|
||||||
SQLCOM_SHOW_CREATE_PROC, SQLCOM_SHOW_CREATE_FUNC,
|
SQLCOM_SHOW_CREATE_PROC, SQLCOM_SHOW_CREATE_FUNC,
|
||||||
|
@ -3384,6 +3384,21 @@ create_error:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#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:
|
case SQLCOM_DROP_USER:
|
||||||
{
|
{
|
||||||
if (check_access(thd, GRANT_ACL,"mysql",0,1,0))
|
if (check_access(thd, GRANT_ACL,"mysql",0,1,0))
|
||||||
@ -3392,8 +3407,23 @@ create_error:
|
|||||||
{
|
{
|
||||||
if (mysql_bin_log.is_open())
|
if (mysql_bin_log.is_open())
|
||||||
{
|
{
|
||||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||||
mysql_bin_log.write(&qinfo);
|
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);
|
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_delete_options opt_delete_option varchar nchar nvarchar
|
||||||
opt_outer table_list table_name opt_option opt_place
|
opt_outer table_list table_name opt_option opt_place
|
||||||
opt_attribute opt_attribute_list attribute column_list column_list_id
|
opt_attribute opt_attribute_list attribute column_list column_list_id
|
||||||
opt_column_list grant_privileges opt_table user_list grant_option
|
opt_column_list grant_privileges opt_table grant_list grant_option
|
||||||
grant_privilege grant_privilege_list
|
grant_privilege grant_privilege_list user_list rename_list
|
||||||
flush_options flush_option
|
clear_privileges flush_options flush_option
|
||||||
equal optional_braces opt_key_definition key_usage_list2
|
equal optional_braces opt_key_definition key_usage_list2
|
||||||
opt_mi_check_type opt_to mi_check_types normal_join
|
opt_mi_check_type opt_to mi_check_types normal_join
|
||||||
table_to_table_list table_to_table opt_table_list opt_as
|
table_to_table_list table_to_table opt_table_list opt_as
|
||||||
@ -1287,8 +1287,26 @@ create:
|
|||||||
TL_WRITE))
|
TL_WRITE))
|
||||||
YYABORT;
|
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:
|
sp_name:
|
||||||
IDENT_sys '.' IDENT_sys
|
IDENT_sys '.' IDENT_sys
|
||||||
{
|
{
|
||||||
@ -3671,8 +3689,25 @@ rename:
|
|||||||
}
|
}
|
||||||
table_to_table_list
|
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_list:
|
||||||
table_to_table
|
table_to_table
|
||||||
| 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->drop_if_exists= $3;
|
||||||
lex->spname= $4;
|
lex->spname= $4;
|
||||||
}
|
}
|
||||||
| DROP USER
|
| DROP USER clear_privileges user_list
|
||||||
{
|
{
|
||||||
LEX *lex=Lex;
|
Lex->sql_command = SQLCOM_DROP_USER;
|
||||||
lex->sql_command = SQLCOM_DROP_USER;
|
}
|
||||||
lex->users_list.empty();
|
|
||||||
}
|
|
||||||
user_list
|
|
||||||
{}
|
|
||||||
| DROP VIEW_SYM if_exists table_list opt_restrict
|
| DROP VIEW_SYM if_exists table_list opt_restrict
|
||||||
{
|
{
|
||||||
THD *thd= YYTHD;
|
THD *thd= YYTHD;
|
||||||
@ -7464,48 +7495,28 @@ handler_rkey_mode:
|
|||||||
/* GRANT / REVOKE */
|
/* GRANT / REVOKE */
|
||||||
|
|
||||||
revoke:
|
revoke:
|
||||||
REVOKE
|
REVOKE clear_privileges revoke_command
|
||||||
{
|
|
||||||
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_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;
|
Lex->sql_command = SQLCOM_REVOKE_ALL;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
grant:
|
grant:
|
||||||
GRANT
|
GRANT clear_privileges grant_privileges ON opt_table TO_SYM grant_list
|
||||||
{
|
|
||||||
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
|
|
||||||
require_clause grant_options
|
require_clause grant_options
|
||||||
{}
|
{
|
||||||
|
Lex->sql_command = SQLCOM_GRANT;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
grant_privileges:
|
grant_privileges:
|
||||||
@ -7645,8 +7656,18 @@ opt_table:
|
|||||||
|
|
||||||
|
|
||||||
user_list:
|
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;}
|
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))
|
if (Lex->users_list.push_back($3))
|
||||||
YYABORT;
|
YYABORT;
|
||||||
|
Reference in New Issue
Block a user