How do I turn on functions, procedures, and triggers for my Amazon RDS for MySQL DB instance?

2 minute read
0

I want to turn on functions, procedures, and triggers for my Amazon Relational Database Service (Amazon RDS) for MySQL DB instance.

Resolution

Amazon RDS is a managed service and doesn't provide system access (SUPER privileges). If you turn on binary logging, then set log_bin_trust_function_creators to true in the custom database (DB) parameter group for your DB instance.

If you create a DB instance without specifying a DB parameter group, then Amazon RDS creates a new default DB parameter group. For more information, see Working with parameter groups.

  1. Create a DB parameter group.
  2. Modify the custom DB parameter group, and then set the parameter: log_bin_trust_function_creators=1
  3. Choose Save Changes.
    Note: Before using the DB parameter group with a DB instance, wait at least 5 minutes.
  4. In the navigation pane, choose Databases.
  5. Choose the DB instance that you want to associate with the DB parameter group.
  6. Choose Modify.
  7. Select the parameter group that you want to associate with the DB instance.
  8. Reboot the DB instance.

Note: The parameter group name changes immediately, but parameter group changes aren't applied until you reboot the instance without failover.

If you're already using a custom parameter group, then complete only steps 2–3. The parameter log_bin_trust_function_creators is a dynamic parameter that doesn't require a DB reboot.

When you turn on automated backup for a MySQL DB instance, you also turn on binary logging. When creating a trigger, you might receive the following error message:

"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)"

If you receive this error, then modify the log_bin_trust_function_creators parameter to 1. This allows functions, procedures, and triggers on your DB instance.

Note: When you set log_bin_trust_function_creators=1, unsafe events might be written to the binary log. Binary logging is statement based (binlog_format=STATEMENT).

For more details about the parameter log_bin_trust_function_creators, see log_bin_trust_function_creators and Stored program binary logging in the MySQL documentation.


Related information

How can I resolve 1227 and definer errors when importing data to my Amazon RDS for MySQL DB instance using mysqldump?

Modifying parameters in a DB cluster parameter group

7 Comments

Hi, Just the reboot was not helping me! I stopped and started the Database, then the new parameter group was applied. Thank you.

replied 8 months ago

I had to remove the DEFINER from the CREATE code. Changing the parameter and rebooting (even with a stop & start) did not help at all.

Taha
replied 6 months ago

Thank you for your comment. We'll review and update the Knowledge Center article as needed.

profile pictureAWS
MODERATOR
replied 6 months ago

Hello, what about RDS for PostgreSQL, I can't find topics and the parameters related to it.

Hino
replied 4 months ago

Thank you for your comment. We'll review and update the Knowledge Center article as needed.

profile pictureAWS
MODERATOR
replied 4 months ago

Running into this issue and setting the parameter log_bin_trust_function_creators to 1 doesn't seem to help. Rebooting the RDS didn't helped either.

replied a month ago

Thank you for your comment. We'll review and update the Knowledge Center article as needed.

profile pictureAWS
MODERATOR
replied a month ago