mysql中的只读表
我正在使用mysql数据库。因为我有一个名为mysql中的只读表,mysql,database,Mysql,Database,我正在使用mysql数据库。因为我有一个名为tbl_user的表,所以我需要将其更改为每个用户的只读表。如何将表更改为只读?使用REVOKE命令,并为用户从该表中撤销插入/更新/删除权限 GRANT SELECT ON tbl_user TO user; GRANT SELECT, INSERT, UPDATE, DELETE ON tbl_user TO user; REVOKE priv_type [(column_list)] [, priv_type [(colum
tbl_user
的表,所以我需要将其更改为每个用户的只读表。如何将表更改为只读?使用REVOKE
命令,并为用户从该表中撤销插入/更新/删除权限
GRANT SELECT ON tbl_user TO user;
GRANT SELECT, INSERT, UPDATE, DELETE ON tbl_user TO user;
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...
请参阅您需要为所有用户撤销此表的更新/修改/授予权限,并添加选择
REVOKE ALL ON readonly_table FROM tbl_user ;
GRANT SELECT ON readonly_table TO tbl_user;
如果用户在readonly_表上有grant选项,请执行以下操作:
REVOKE GRANT OPTION ON readonly_table FROM tbl_user;
了解
和要授予所有用户选择权,请使用public而不是完整的用户列表
REVOKE ALL ON tbl_user FROM PUBLIC
GRANT SELECT ON tbl_user TO PUBLIC
除了撤销许可,另一种方法是使用触发器
/* triggers */
delimiter //
DROP TRIGGER IF EXISTS stop_table_insert;
CREATE TRIGGER stop_table_insert
BEFORE INSERT ON `table`
FOR EACH ROW
BEGIN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Database maintainance';
END;//
DROP TRIGGER IF EXISTS stop_table_update;
CREATE TRIGGER stop_table_update
BEFORE UPDATE ON `table`
FOR EACH ROW
BEGIN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Database maintainance';
END;//
DROP TRIGGER IF EXISTS stop_table_delete;
CREATE TRIGGER stop_table_delete
BEFORE DELETE ON `table`
FOR EACH ROW
BEGIN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Database maintainance';
END;//
delimiter ;
为什么需要任何用户都无法更改或编辑的表D@TerrySeidler它是一个包含我的应用程序的登录凭据的表。还记得关于
GRANT OPTION
。所有人都不要删除GRANT
特权。这个对我来说很好,谢谢王先生^-^