我想为我的 Amazon Relational Database Service(Amazon RDS)for MySQL 数据库实例开启函数、过程和触发器。
解决方法
Amazon RDS 是一项托管服务,不提供系统访问权限(SUPER 权限)。如果您开启二进制日志记录,则在数据库实例的自定义数据库参数组中将 log_bin_trust_function_creators 设置为 true。
如果您创建了数据库实例,但未指定数据库参数组,则 Amazon RDS 会创建一个新的默认数据库参数组。有关详细信息,请参阅使用参数组。
要为 Amazon RDS for MySQL 数据库实例启用函数、过程和触发器,请完成以下步骤:
- 创建数据库参数组。
- 修改自定义数据库参数组,然后设置参数:log_bin_trust_function_creators=1
- 选择保存更改。
**注意:**在将数据库参数组与数据库实例一起使用之前,请至少等待 5 分钟。
- 在导航窗格中,选择数据库。
- 选择要与数据库参数组关联的数据库实例。
- 选择修改。
- 选择要与数据库实例关联的参数组。
- 重启数据库实例。
**注意:**参数组名称会立即更改,但要等到在未发生失效转移的情况下重启实例后,参数组的更改才会生效。
如果您已经使用了自定义参数组,则仅需完成步骤 2-3。参数 log_bin_trust_function_creators 是一个不需要重启数据库的动态参数。
当您为 MySQL 数据库实例开启自动备份时,还会开启二进制日志记录。创建触发器时,可能会收到以下错误消息:
“ERROR 1419 (HY000): You don't have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)”
如果您收到此错误,请将 log_bin_trust_function_creators 参数修改为 1。这样就能在数据库实例上运行函数、过程和触发器。如果将参数设置为 1 后仍然出现访问被拒绝错误,请参阅如何解决使用 mysqldump 将数据导入我的 Amazon RDS for MySQL 数据库实例时出现的 1227 和 definer 错误?
**注意:**当你设置 log_bin_trust_function_creators=1 时,不安全事件可能会被写入二进制日志。二进制日志记录是基于语句的(binlog_format=STATEMENT)。
有关参数 log_bin_trust_function_creators 的详细信息,请参阅 MySQL 网站上的 log_bin_trust_function_creators 和所储存程序的二进制日志记录。
相关信息
修改数据库集群参数组中的参数