如何为我的 Amazon RDS for MySQL 数据库实例开启函数、过程和触发器?

1 分钟阅读
0

我想为我的 Amazon Relational Database Service(Amazon RDS)for MySQL 数据库实例开启函数、过程和触发器。

解决方法

Amazon RDS 是一项托管服务不提供系统访问权限(SUPER 权限)。如果您开启二进制日志记录,则在数据库实例的自定义数据库参数组中将 log_bin_trust_function_creators 设置为 true

如果您创建了数据库实例,但未指定数据库参数组,则 Amazon RDS 会创建一个新的默认数据库参数组。有关详细信息,请参阅使用参数组

要为 Amazon RDS for MySQL 数据库实例启用函数、过程和触发器,请完成以下步骤:

  1. 创建数据库参数组
  2. 修改自定义数据库参数组,然后设置参数:log_bin_trust_function_creators=1
  3. 选择保存更改
    **注意:**在将数据库参数组与数据库实例一起使用之前,请至少等待 5 分钟。
  4. 在导航窗格中,选择数据库
  5. 选择要与数据库参数组关联的数据库实例。
  6. 选择修改
  7. 选择要与数据库实例关联的参数组
  8. 重启数据库实例

**注意:**参数组名称会立即更改,但要等到在未发生失效转移的情况下重启实例后,参数组的更改才会生效。

如果您已经使用了自定义参数组,则仅需完成步骤 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所储存程序的二进制日志记录

相关信息

修改数据库集群参数组中的参数