mysql - MySQL 事件——执行需要 EVENT 权限?
问题描述
MySQL 5.7 (Win) 和 MariaDB 10.1 (Linux),Event Scheduler 设置为 ON,我以 root 身份连接。
CREATE DATABASE `event-test`;
CREATE USER 'event-test'@'localhost' IDENTIFIED BY 'password-is-here';
GRANT USAGE ON *.* TO 'event-test'@'localhost';
GRANT EXECUTE, SELECT, DELETE, INSERT, UPDATE ON `event-test`.* TO 'event-test'@'localhost';
FLUSH PRIVILEGES;
USE `event-test`;
CREATE TABLE t (
v INT(11) NOT NULL
);
INSERT INTO t (v) VALUES (0);
DELIMITER //
CREATE DEFINER=`event-test`@`localhost` EVENT `e`
ON SCHEDULE
EVERY 1 MINUTE STARTS '2020-01-01 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
DO
BEGIN
UPDATE t SET v = v + 1;
END//
DELIMITER ;
=>
已创建数据库、表和事件。等待几分钟——电视仍然为零。
在错误日志中:
2020-01-13T03:30:00.184167Z 16332 [错误] 事件调度程序:[event-test@localhost].[event-test.e] 执行失败,用户不再具有 EVENT 权限。
2020-01-13T03:30:00.185852Z 16332 [错误] 事件调度程序:[event-test@localhost][event-test.e] 用户'event-test'@'localhost'拒绝访问数据库'event-test '
2020-01-13T03:30:00.187426Z 16332 [注意] 事件调度程序:[event-test@localhost].[event-test.e] 事件执行失败。
如果我使用命令向用户授予 EVENT 特权:
GRANT EVENT ON `event-test`.* TO 'event-test'@'localhost';
tv 将每分钟递增一次,并且日志中不再有错误。
根据MySQL 手册,仅在创建/更新/删除 EVENT 时需要 EVENT 权限。
所以我的问题是:我错过了什么?为什么活动需要 EVENT 权限才能运行?
谢谢。
解决方案
推荐阅读
- plsql - 执行选择查询的结果列
- powershell - powershell (Get-WmiObject win32_physicalmedia).serialnumber 输出十六进制
- mysql - inverseJoinColumns 注释在 DB 中自动创建 UK
- javascript - 如何从等待/异步循环中返回数据?
- ios - UITableView deleteRows 动画错误(无论 rowAnimation 变量它总是消失)
- javascript - 避免在 javascript 中加载事件链
- powershell - 如何使用 GetEnumerator() 将哈希表导出到 PowerShell 中的 csv 文件?
- python - 在列表列表中查找前 N 个最频繁的数字序列
- vba - 跟踪子表单中的更改
- r - 如何在 ggbarplot 图形中排序 y 值?