检查数据库事件是否开启,如果 event_scheduler 等于 NO表示开启
SELECT @@event_scheduler;
SHOW VARIABLES LIKE ‘event_scheduler’;
SELECT @@event_scheduler;
开启事件(全局)
a、set global event_scheduler=1;
b、SET GLOBAL event_scheduler = ON;
c、在my.cnf中的[mysqld]部分添加 event_scheduler=ON 然后重启mysql。
关闭事件(全局)
SET GLOBAL event_scheduler = OFF;
语法
1 | $ CREATE |
参数详细说明:
DEFINER: 定义事件执行的时候检查权限的用户。
ON SCHEDULE schedule: 定义执行的时间和时间间隔。
ON COMPLETION [NOT] PRESERVE: 定义事件是一次执行还是永久执行,默认为一次执行,即NOT PRESERVE。
ENABLE | DISABLE | DISABLE ON SLAVE: 定义事件创建以后是开启还是关闭,以及在从上关闭。如果是从服务器自动同步主上的创建事件的语句的话,会自动加上DISABLE ON SLAVE。
COMMENT ‘comment’: 定义事件的注释。
开启事件
alter event event_name(事件名称) ON COMPLETION PRESERVE ENABLE;
关闭事件
alter event event_name(事件名称) ON COMPLETION PRESERVE DISABLE;
删除事件
DROP EVENT [IF EXISTS] event_name(事件名称)
案例
1 | $CREATE TABLE `test` ( |
关于事件的权限问题 (Access denied for user ‘root’@’%’ to database ‘xxxx’
使用Naicat Premium远程连接的mysql上面创建了一个新数据库和新的用户后,给该用户添加这个新数据库权限时出现:
access denied for user ‘root’@’%’ to database xxxx的提示。
错误的原因是root用户在远程连接的MYSQL上面,没有这个新数据库的授权。在本地使用mysql应该不存在这个问题。
解决方法,执行授权:
UPDATE mysql.user SET Event_priv = ‘Y’ WHERE HOST=’%’ AND USER=’root’;
FLUSH PRIVILEGES;
grant all PRIVILEGES on xxxx.* to root@’%’ identified by ‘password’ with grant option;
grant all on xxxx.* to ‘root’@’%’ identified by ‘password’ with grant option;
xxxx为创建的数据库,password为root的密码。请按实际要求进行更改。