此语句可用于更改存储函数的特性。一个ALTER FUNCTION语句中可以指定多个更改。但是,不能使用此语句更改存储函数的参数或主体;要进行此类更改,必须使用DROP FUNCTION 和 CREATE FUNCTION删除并重新创建函数。
必须具有该函数的ALTER ROUTINE权限才能执行(该权限自动授予函数创建者)。如果启用了二进制日志记录,ALTER FUNCTION 语句可能还需要SUPER权限。
ALTER INSTANCE 语句
ALTER INSTANCE定义了适用于MySQL服务器实例的操作。语句支持以下操作:
●ALTER INSTANCE {ENABLE | DISABLE} INNODB REDO_LOG
此操作启用或禁用InnoDB 重做日志记录。默认情况下启用重做日志记录。此功能仅用于将数据加载到新的MySQL实例中。语句不会写入二进制日志,这个语句在MySQL8.0.21中引入。
警告
请勿在生产系统上禁用重做日志记录。虽然允许在禁用重做日志记录时关闭并重新启动服务器,但禁用重做日志记录时意外的服务器停止可能会导致数据丢失和实例损坏。
ALTER INSTANCE [ENABLE|DISABLE] INNODB REDO_LOG 操作需要一个独占备份锁,这会阻止其他ALTER INSTANCE操作并发执行。其他ALTER INSTANCE操作在执行之前必须等待释放锁。
●ALTER INSTANCE ROTATE INNODB MASTER KEY
此操作将轮换用于InnoDB表空间加密的主加密密钥。密钥轮换需要 ENCRYPTION_KEY_ADMIN 或 SUPER 权限。要执行此操作,必须安装和配置keyring插件。
ALTER INSTANCE ROTATE INNODB MASTER KEY支持并发DML。但是,它不能与CREATE TABLE ... ENCRYPTION 或者 ALTER TABLE ... ENCRYPTION 并发运行,会采用锁来防止并发执行这些语句时可能产生的冲突。如果其中一个冲突语句正在运行,则必须先完成,然后另一个语句才能被处理。
ALTER INSTANCE ROTATE INNODB MASTER KEY语句被写入二进制日志,以便可以在复制的服务器上执行。
●ALTER INSTANCE ROTATE BINLOG MASTER KEY
此操作将轮换用于二进制日志加密的二进制日志主密钥。二进制日志主密钥的密钥轮换需要BINLOG_ENCRYPTION_ADMIN或SUPER权限。如果binlog_encryption系统变量设置为OFF,则不能使用该语句。要执行此操作,必须安装和配置keyring插件。
ALTER INSTANCE ROTATE BINLOG MASTER KEY 操作不会写入二进制日志,也不会在主从复制从属服务器上执行。因此,可以在包括多个MySQL版本混用的主从复制环境中执行二进制日志主密钥轮换。要计划在所有适用的主从服务器上定期轮换二进制日志主密钥,可以在每台服务器上启用MySQL事件调度器,并使用CREATE EVENT语句发出ALTER INSTANCE ROTATE BINLOG MASTER KEY语句。如果因为怀疑当前或任何以前的二进制日志主密钥可能已被泄露而轮换二进制日志主密钥,请在每个适用的主从服务器上发出该语句,这能够验证即时合规。
●ALTER INSTANCE RELOAD TLS
此操作根据定义上下文的系统变量的当前值重新配置TLS上下文。它还更新反映活动上下文值的状态变量。此操作需要CONNECTION_ADMIN权限。
默认情况下,该语句重新加载主连接接口的TLS上下文。如果给定FOR CHANNEL子句(从MySQL 8.0.21起可用),该语句将重新加载命名通道的TLS上下文:mysql_main用于主连接接口,mysql_admin用于管理连接接口。更新的TLS上下文属性在Performance Schema tls_channel_status表中。
更新主接口的TLS上下文也可能影响管理接口,因为除非为该接口配置某些非默认TLS值,否则它将使用与主接口相同的TLS上下文。
默认情况下,如果配置值不允许创建新的TLS上下文,则 RELOAD TLS 操作将回滚并返回一个错误,操作不起作用。以前的上下文值将继续用于新连接。如果提供了可选的NO ROLLBACK ON ERROR子句,若是无法创建新上下文,则不会发生回滚。相反,将生成一个警告,并对应用该语句的接口上的新连接禁用加密。
ALTER INSTANCE RELOAD TLS语句不会写入二进制日志(因此不会被复制)。TLS配置是本地的,并且依赖于本地文件,不一定存在于所有相关服务器上。
官方文档地址:
https://dev.mysql.com/doc/refman/8.0/en/alter-function.html
https://dev.mysql.com/doc/refman/8.0/en/alter-instance.html
阅读 4