mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
added processing of view grants to table grants (BUG#9795)
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
drop database if exists mysqltest;
|
||||||
SET NAMES binary;
|
SET NAMES binary;
|
||||||
delete from mysql.user where user='mysqltest_1';
|
delete from mysql.user where user='mysqltest_1';
|
||||||
delete from mysql.db where user='mysqltest_1';
|
delete from mysql.db where user='mysqltest_1';
|
||||||
@ -473,3 +474,115 @@ ERROR 42000: INSERT,CREATE command denied to user 'mysqltest_1'@'localhost' for
|
|||||||
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
||||||
delete from mysql.user where user=_binary'mysqltest_1';
|
delete from mysql.user where user=_binary'mysqltest_1';
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
CREATE USER dummy@localhost;
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||||||
|
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||||||
|
GRANT ALL PRIVILEGES ON mysqltest.dummytable TO dummy@localhost;
|
||||||
|
GRANT ALL PRIVILEGES ON mysqltest.dummyview TO dummy@localhost;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
Grants for dummy@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||||||
|
GRANT ALL PRIVILEGES ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||||||
|
GRANT ALL PRIVILEGES ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||||||
|
use INFORMATION_SCHEMA;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||||||
|
mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, UPDATE
|
||||||
|
mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, UPDATE
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
Grants for dummy@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||||||
|
GRANT ALL PRIVILEGES ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||||||
|
GRANT ALL PRIVILEGES ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||||||
|
mysqltest dummytable ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, UPDATE
|
||||||
|
mysqltest dummyview ALTER, CREATE, CREATE VIEW, DELETE, DROP, INDEX, INSERT, REFERENCES, SELECT, SHOW VIEW, UPDATE
|
||||||
|
SHOW FIELDS FROM mysql.tables_priv;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
Host char(60) NO PRI
|
||||||
|
Db char(64) NO PRI
|
||||||
|
User char(16) NO PRI
|
||||||
|
Table_name char(64) NO PRI
|
||||||
|
Grantor char(77) NO MUL
|
||||||
|
Timestamp timestamp YES CURRENT_TIMESTAMP
|
||||||
|
Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') NO
|
||||||
|
Column_priv set('Select','Insert','Update','References') NO
|
||||||
|
use test;
|
||||||
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||||||
|
DROP USER dummy@localhost;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
CREATE USER dummy@localhost;
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||||||
|
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||||||
|
GRANT CREATE VIEW ON mysqltest.dummytable TO dummy@localhost;
|
||||||
|
GRANT CREATE VIEW ON mysqltest.dummyview TO dummy@localhost;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
Grants for dummy@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||||||
|
GRANT CREATE VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||||||
|
GRANT CREATE VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||||||
|
use INFORMATION_SCHEMA;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||||||
|
mysqltest dummytable CREATE VIEW
|
||||||
|
mysqltest dummyview CREATE VIEW
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
Grants for dummy@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||||||
|
GRANT CREATE VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||||||
|
GRANT CREATE VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||||||
|
mysqltest dummytable CREATE VIEW
|
||||||
|
mysqltest dummyview CREATE VIEW
|
||||||
|
use test;
|
||||||
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||||||
|
DROP USER dummy@localhost;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
CREATE USER dummy@localhost;
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||||||
|
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||||||
|
GRANT SHOW VIEW ON mysqltest.dummytable TO dummy@localhost;
|
||||||
|
GRANT SHOW VIEW ON mysqltest.dummyview TO dummy@localhost;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
Grants for dummy@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||||||
|
GRANT SHOW VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||||||
|
GRANT SHOW VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||||||
|
use INFORMATION_SCHEMA;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||||||
|
mysqltest dummytable SHOW VIEW
|
||||||
|
mysqltest dummyview SHOW VIEW
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
Grants for dummy@localhost
|
||||||
|
GRANT USAGE ON *.* TO 'dummy'@'localhost'
|
||||||
|
GRANT SHOW VIEW ON `mysqltest`.`dummyview` TO 'dummy'@'localhost'
|
||||||
|
GRANT SHOW VIEW ON `mysqltest`.`dummytable` TO 'dummy'@'localhost'
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
TABLE_SCHEMA TABLE_NAME PRIVILEGES
|
||||||
|
mysqltest dummytable SHOW VIEW
|
||||||
|
mysqltest dummyview SHOW VIEW
|
||||||
|
use test;
|
||||||
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||||||
|
DROP USER dummy@localhost;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
@ -128,7 +128,7 @@ tables_priv CREATE TABLE `tables_priv` (
|
|||||||
`Table_name` char(64) collate utf8_bin NOT NULL default '',
|
`Table_name` char(64) collate utf8_bin NOT NULL default '',
|
||||||
`Grantor` char(77) collate utf8_bin NOT NULL default '',
|
`Grantor` char(77) collate utf8_bin NOT NULL default '',
|
||||||
`Timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
`Timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
||||||
`Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') character set utf8 NOT NULL default '',
|
`Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') character set utf8 NOT NULL default '',
|
||||||
`Column_priv` set('Select','Insert','Update','References') character set utf8 NOT NULL default '',
|
`Column_priv` set('Select','Insert','Update','References') character set utf8 NOT NULL default '',
|
||||||
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
|
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
|
||||||
KEY `Grantor` (`Grantor`)
|
KEY `Grantor` (`Grantor`)
|
||||||
|
@ -284,7 +284,7 @@ create table mysqltest.v3 (b int);
|
|||||||
grant select(b) on mysqltest.v3 to mysqltest_1@localhost;
|
grant select(b) on mysqltest.v3 to mysqltest_1@localhost;
|
||||||
drop table mysqltest.v3;
|
drop table mysqltest.v3;
|
||||||
create view mysqltest.v3 as select b from mysqltest.t2;
|
create view mysqltest.v3 as select b from mysqltest.t2;
|
||||||
ERROR 42000: CREATE VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v3'
|
ERROR 42000: create view command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 'v3'
|
||||||
create view v4 as select b+1 from mysqltest.t2;
|
create view v4 as select b+1 from mysqltest.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 't2'
|
||||||
grant create view,update,select on test.* to mysqltest_1@localhost;
|
grant create view,update,select on test.* to mysqltest_1@localhost;
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
# Cleanup
|
# Cleanup
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
drop database if exists mysqltest;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
connect (master,localhost,root,,);
|
connect (master,localhost,root,,);
|
||||||
@ -403,3 +404,69 @@ connection root;
|
|||||||
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
||||||
delete from mysql.user where user=_binary'mysqltest_1';
|
delete from mysql.user where user=_binary'mysqltest_1';
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
|
||||||
|
#
|
||||||
|
# check all new table priveleges
|
||||||
|
#
|
||||||
|
CREATE USER dummy@localhost;
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||||||
|
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||||||
|
GRANT ALL PRIVILEGES ON mysqltest.dummytable TO dummy@localhost;
|
||||||
|
GRANT ALL PRIVILEGES ON mysqltest.dummyview TO dummy@localhost;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
use INFORMATION_SCHEMA;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
SHOW FIELDS FROM mysql.tables_priv;
|
||||||
|
use test;
|
||||||
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||||||
|
DROP USER dummy@localhost;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
# check view only privileges
|
||||||
|
CREATE USER dummy@localhost;
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||||||
|
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||||||
|
GRANT CREATE VIEW ON mysqltest.dummytable TO dummy@localhost;
|
||||||
|
GRANT CREATE VIEW ON mysqltest.dummyview TO dummy@localhost;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
use INFORMATION_SCHEMA;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
use test;
|
||||||
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||||||
|
DROP USER dummy@localhost;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
CREATE USER dummy@localhost;
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
CREATE TABLE mysqltest.dummytable (dummyfield INT);
|
||||||
|
CREATE VIEW mysqltest.dummyview AS SELECT dummyfield FROM mysqltest.dummytable;
|
||||||
|
GRANT SHOW VIEW ON mysqltest.dummytable TO dummy@localhost;
|
||||||
|
GRANT SHOW VIEW ON mysqltest.dummyview TO dummy@localhost;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
use INFORMATION_SCHEMA;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
SHOW GRANTS FOR dummy@localhost;
|
||||||
|
SELECT TABLE_SCHEMA, TABLE_NAME, GROUP_CONCAT(PRIVILEGE_TYPE ORDER BY
|
||||||
|
PRIVILEGE_TYPE SEPARATOR ', ') AS PRIVILEGES FROM TABLE_PRIVILEGES WHERE GRANTEE
|
||||||
|
= '\'dummy\'@\'localhost\'' GROUP BY TABLE_SCHEMA, TABLE_NAME;
|
||||||
|
use test;
|
||||||
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost;
|
||||||
|
DROP USER dummy@localhost;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
@ -360,7 +360,7 @@ create table mysqltest.v3 (b int);
|
|||||||
grant select(b) on mysqltest.v3 to mysqltest_1@localhost;
|
grant select(b) on mysqltest.v3 to mysqltest_1@localhost;
|
||||||
drop table mysqltest.v3;
|
drop table mysqltest.v3;
|
||||||
connection user1;
|
connection user1;
|
||||||
-- error 1142
|
-- error 1143
|
||||||
create view mysqltest.v3 as select b from mysqltest.t2;
|
create view mysqltest.v3 as select b from mysqltest.t2;
|
||||||
|
|
||||||
# Expression need select privileges
|
# Expression need select privileges
|
||||||
|
@ -215,7 +215,7 @@ then
|
|||||||
c_t="$c_t Table_name char(64) binary DEFAULT '' NOT NULL,"
|
c_t="$c_t Table_name char(64) binary DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t Grantor char(77) DEFAULT '' NOT NULL,"
|
c_t="$c_t Grantor char(77) DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t Timestamp timestamp(14),"
|
c_t="$c_t Timestamp timestamp(14),"
|
||||||
c_t="$c_t Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
c_t="$c_t Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
c_t="$c_t Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t PRIMARY KEY (Host,Db,User,Table_name),"
|
c_t="$c_t PRIMARY KEY (Host,Db,User,Table_name),"
|
||||||
c_t="$c_t KEY Grantor (Grantor)"
|
c_t="$c_t KEY Grantor (Grantor)"
|
||||||
|
@ -260,6 +260,11 @@ ALTER TABLE db ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT
|
|||||||
ALTER TABLE host ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
|
ALTER TABLE host ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
|
||||||
ALTER TABLE user ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
|
ALTER TABLE user ADD Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER Create_view_priv;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Show/Create views table privileges (v5.0)
|
||||||
|
#
|
||||||
|
ALTER TABLE tables_priv MODIFY Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Assign create/show view privileges to people who have create provileges
|
# Assign create/show view privileges to people who have create provileges
|
||||||
#
|
#
|
||||||
|
@ -106,8 +106,15 @@
|
|||||||
(((A) & DB_CHUNK2) >> 6) | \
|
(((A) & DB_CHUNK2) >> 6) | \
|
||||||
(((A) & DB_CHUNK3) >> 9) | \
|
(((A) & DB_CHUNK3) >> 9) | \
|
||||||
(((A) & DB_CHUNK4) >> 2))
|
(((A) & DB_CHUNK4) >> 2))
|
||||||
#define fix_rights_for_table(A) (((A) & 63) | (((A) & ~63) << 4))
|
#define TBL_CHUNK0 DB_CHUNK0
|
||||||
#define get_rights_for_table(A) (((A) & 63) | (((A) & ~63) >> 4))
|
#define TBL_CHUNK1 DB_CHUNK1
|
||||||
|
#define TBL_CHUNK2 (CREATE_VIEW_ACL | SHOW_VIEW_ACL)
|
||||||
|
#define fix_rights_for_table(A) (((A) & TBL_CHUNK0) | \
|
||||||
|
(((A) << 4) & TBL_CHUNK1) | \
|
||||||
|
(((A) << 11) & TBL_CHUNK2))
|
||||||
|
#define get_rights_for_table(A) (((A) & TBL_CHUNK0) | \
|
||||||
|
(((A) & TBL_CHUNK1) >> 4) | \
|
||||||
|
(((A) & TBL_CHUNK2) >> 11))
|
||||||
#define fix_rights_for_column(A) (((A) & 7) | (((A) & ~7) << 8))
|
#define fix_rights_for_column(A) (((A) & 7) | (((A) & ~7) << 8))
|
||||||
#define get_rights_for_column(A) (((A) & 7) | ((A) >> 8))
|
#define get_rights_for_column(A) (((A) & 7) | ((A) >> 8))
|
||||||
#define fix_rights_for_procedure(A) ((((A) << 18) & EXECUTE_ACL) | \
|
#define fix_rights_for_procedure(A) ((((A) << 18) & EXECUTE_ACL) | \
|
||||||
|
Reference in New Issue
Block a user