【问题标题】:Unable to create trigger on mysql system table [duplicate]无法在 mysql 系统表上创建触发器 [重复]
【发布时间】:2012-11-17 07:39:09
【问题描述】:

可能重复:
mysql: Cant we create triggers on system tables?

我们在rhel 6.1 (64 bit) 上使用MySQL 版本5.1.59。我们要监视数据库的删除,并为此尝试在 mysql 数据库的 db 表上创建触发器。我们正在通过以root user 登录来创建trigger。编写的触发器如下:

分隔符 |

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    TRIGGER `mysql`.`test` BEFORE DELETE
    ON `mysql`.`db`
    FOR EACH ROW BEGIN
    INSERT INTO cescnet.db_monitor (DB_name,user_name,dateandtime,operation_type) VALUES (mysql.db.Db,CURRENT_USER(),NOW(),'Delete');
    END;|

但我们得到了错误:

错误代码:1465

不能在系统表上创建触发器

当我们以 root 用户身份工作时,我们认为我们拥有系统上的所有权限。来自任何主机(包括本地主机)的 root 用户的全局权限包括 SUPER 权限。谁能帮帮我们?

【问题讨论】:

  • 哎呀...我认为错误消息几乎总结了它!
  • 试图在系统表上创建触发器。是不是很像编辑系统表?我为同样的事情做了很多尝试。祝你成功。

标签: mysql triggers system


【解决方案1】:

我将大胆猜测一下,您收到该错误消息的原因是无法在系统表上创建触发器。

哦,也许我可以添加“不分特权”

【讨论】:

  • 感谢您的回复。但是我在这里看到过帖子,其中提到可以在系统表上创建触发器。
  • 哪个帖子?为什么不想参考?您的问题与stackoverflow.com/questions/10346546/… 完全相同
【解决方案2】:

简而言之:你做不到。

我也尝试过

See (All) and (Super) Privileges Provided by mySql

在尝试了所有类型的权限后

grant super on *.* to root@localhost
grant all on *.* to root@localhost

我尝试了最简单的触发器并得到相同的错误

Triggers can not be created on system tables

如果您发现可以在系统表上创建触发器的任何地方,那就错了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 2012-05-07
    • 2016-01-25
    • 2020-11-22
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多