如何为 Amazon RDS for MySQL 数据库实例启用函数、流程和触发器?

1 分钟阅读
0

如何为 MySQL 数据库实例启用 Amazon Relational Database Service(Amazon RDS)的函数、进程和触发器?

解决方案

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

如果创建数据库实例但未指定数据库参数组,则 Amazon RDS 将会创建新的默认数据库参数组。有关更多信息,请参阅使用数据库参数组

  1. 创建数据库参数组
  2. 修改自定义数据库参数组,并设置以下参数:log_bin_trust_function_creators=1
  3. 选择 Save Changes(保存更改)。
    **注意:**在使用数据库参数组和数据库实例之前,请等待至少 5 分钟。
  4. 从导航窗格中选择数据库
  5. 选择要与数据库参数组关联的数据库实例。
  6. 选择 Actions(操作),然后选择 Modify(修改)。
  7. 选择要与该数据库实例关联的参数组
  8. 重新启动数据库实例

**注意:**参数组名称会立即更改,但直到您重启实例而不执行失效转移,才会应用参数组更改。

如果您已经在使用自定义参数组,则仅完成步骤 2-3。参数 log_bin_trust_function_creators 是一个动态参数,因此不需要重启数据库。

为 MySQL 数据库实例启用自动备份时,二进制日志记录也将处于启用状态。创建触发器时,您可能会收到以下错误消息:

“ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)”[错误 1419(HY000):您没有 SUPER 权限,并且启用了二进制日志记录(您可能希望使用安全性较低的 log_bin_trust_creators 变量)]

如果您收到此错误消息,请将 log_bin_trust_function_creators 参数改为 1。这样则支持在数据库实例上使用函数、流程和触发器。

注意:当您设置 log_bin_trust_function_creators=1 时,不安全事件可能会写入二进制日志。二进制日志记录基于语句(binlog_format=STATEMENT)。

有关参数 log_bin_trust_function_creators 的更多详细信息,请参阅 MySQL 文档中的 log_bin_trust_function_creators存储的程序二进制日志记录


相关信息

如何解决使用 mysqldump 将数据导入我的 Amazon RDS for MySQL 数据库实例时出现的 1227 和 definer 错误?

相关视频

AWS 官方
AWS 官方已更新 1 年前