如何为我的 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
    **注意:**当设置 log_bin_trust_function_creators=1 时,Amazon RDS 可能会将不安全的事件写入二进制日志。二进制日志记录基于语句,类似于以下示例:(binlog_format=STATEMENT)。
  3. 选择 Save changes(保存更改)。
    **注意:**在将数据库参数组与数据库实例一起使用之前,请至少等待 5 分钟。
  4. 在导航窗格中,选择 Databases(数据库)。
  5. 选择要与数据库参数组关联的数据库实例。
  6. 选择 Modify(修改)。
  7. 选择要与数据库实例关联的参数组
  8. 重启数据库实例
    **注意:**参数组名称会立即更改。Amazon RDS 会在您重启实例(不进行失效转移)后应用参数组更改。

如果您已经使用了自定义参数组,则仅需完成步骤 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。如果该参数已设置为 1,但您仍收到 Access denied 错误,请参阅如何解决使用 mysqldump 将数据导入我的 Amazon RDS for MySQL 数据库实例时出现的 1227 和 definer 错误?

有关参数 log_bin_trust_function_creators 的更多详细信息,请参阅 MySQL 网站上的 log_bin_trust_function_creatorsStored program binary logging(所储存程序的二进制日志记录)

相关信息

使用多可用区数据库集群的数据库集群参数组