无法在 Azure mySQL 中创建函数/存储过程

Posted

技术标签:

【中文标题】无法在 Azure mySQL 中创建函数/存储过程【英文标题】:Unable to create functions / stored procedure in Azure mySQL 【发布时间】:2020-10-04 08:43:54 【问题描述】:

我刚刚使用 Azure 设置了一个 mysql 数据库,我正在使用 Navicat 连接到它,一切正常。我现在正在尝试创建一些函数和存储过程,但出现了超级用户错误:

您没有 SUPER 权限并且启用了二进制日志记录(您可能想要使用不太安全的 log_bin_trust_function_creators 变量)> 时间:0.027 秒

这是我其中一个的代码:

CREATE function `triggertradersazure`.`sf_entity_active_sub`(`p_entity_id` INT) 
returns INT(11) 
DETERMINISTIC 
begin 
  IF EXISTS (SELECT 1 
             FROM   tbl_stripe_customer_link_sub sc 
                    JOIN tbl_stripe_sub_payments ss 
                      ON sc.stripe_customer_id = ss.stripe_customer_id 
                         AND ss.stripe_subscription_id = 
                             sc.stripe_subscription_id 
             WHERE  active = 'Y' 
                    AND entity_id = p_entity_id) THEN 
    RETURN 1; 
  ELSE 
    RETURN 0; 
  end IF; 
end; 

来自mql.user的用户信息:

INSERT INTO `mysql`.`user` 
            (`host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`) 
VALUES      ('%', 'triggertraders', '*', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', '', 'N'); 

此用户没有超级用户,但我不应该需要它并且 Azure 不允许它?

目前不知道该怎么办。我的功能有

`CREATE DEFINER = `tiggertraders`@`ip`

我删除了这个,因为这是为了解决问题。

任何帮助都会很棒,

谢谢,

【问题讨论】:

【参考方案1】:

我必须使用 Azure 中的 log_bin_trust_function_creators 服务器属性才能允许这样做 - 如下所示:

【讨论】:

以上是关于无法在 Azure mySQL 中创建函数/存储过程的主要内容,如果未能解决你的问题,请参考以下文章

无法在Azure blob存储$ root容器中创建文件夹

无法从在存储帐户的允许子网中创建的 Azure 虚拟机下载 blob

在Azure中创建虚机映像

Azure Batch 和在 Azure 存储中创建容器文件夹

在 azure devops 中创建存储库的请求正文是啥?

如何在 Azure 存储容器中创建目录而不创建额外文件?