Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中的只读表_Mysql_Database - Fatal编程技术网

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

我正在使用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 [(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
特权。这个对我来说很好,谢谢王先生^-^