7

我正在使用mysql数据库。在那我有一个表,tbl_user我需要将它更改为每个用户的只读表。如何将表格更改为只读?

4

5 回答 5

6

要授予所有用户选择,请使用 public 而不是完整的用户列表

REVOKE ALL ON tbl_user FROM PUBLIC
GRANT SELECT ON tbl_user TO PUBLIC
于 2012-09-10T10:31:40.357 回答
4

除了撤销权限,还有一种方法是使用trigger

/* 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 ;
于 2016-06-17T04:58:09.590 回答
3

使用该REVOKE命令并从该表中撤消用户的 INSERT / UPDATE / DELETE 权限

REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...

参考文档

于 2012-09-10T10:22:40.233 回答
3

您需要 REVOKE 更新/修改/授予所有用户对该表的权限并添加 SELECT。

REVOKE ALL ON readonly_table FROM tbl_user ;
GRANT SELECT ON readonly_table TO tbl_user;

如果用户在 readonly_table 上有授权选项,请执行以下操作:

REVOKE GRANT OPTION ON readonly_table FROM tbl_user;

阅读MySQL 访问权限系统REVOKE 文档

于 2012-09-10T10:22:45.717 回答
2
GRANT SELECT ON tbl_user TO user;
GRANT SELECT, INSERT, UPDATE, DELETE ON tbl_user TO user;
于 2012-09-10T10:21:39.837 回答