mysql - rds 上的 mariadb 在创建新过程时创建新用户@ip.ec2.host
问题描述
我们mariadb
在 rds 上有一个从 bash 脚本调用的实例。在脚本中,我们创建一个procedure
在 .sql 脚本完成后被删除的文件。mysql
用户已设置为具有自定义权限的myUser
@%
delimiter |
DROP PROCEDURE IF EXISTS myTmpProc |
CREATE PROCEDURE myTmpProc()
BEGIN
... --code goes here
-- Execute the stored procedure
CALL myTmpProc() |
-- Don't forget to drop the stored procedure when you're done!
DROP PROCEDURE IF EXISTS myTmpProc |
DELIMITER ;
创建、运行、删除部件脚本按预期运行并完成。
但是,此过程正在创建运行脚本的 ec2 实例的新用户myUser
@ x.x.x.x
。此用户没有任何权限。
当我们下次运行脚本时,它以新用户身份运行,但由于该用户没有权限而失败。
这是在创建新过程时创建具有相同用户名但使用 ec2 ip 地址的新用户的预期行为吗?
我们如何阻止用户被创建?
解决方案
(评论太大)(来自更新日志)
----- 2018-10-26 MariaDB 5.5.62 & 2018-09-25 MariaDB 10.2.18 -- -- -----
错误#27407480:AUTOMATIC_SP_PRIVILEGES 需要 MYSQL.USER 表的插入权限
----- 2018-07-27 8.0.12 全面上市和 2018-07-27 5.7.23 全面上市和 2018-07-27 5.6.41 全面上市和 2018-07-27 5.5.61 全面上市 -- -- -----
启用automatic_sp_privileges后,EXECUTE和ALTER ROUTINE权限未正确授予例程创建者。(错误号 27407480)
----- 2017-04-10 8.0.1 开发里程碑 -- 错误修复 -- -----
启用automatic_sp_privileges系统变量后,它对匿名用户没有预期的效果。(错误号 20266641)
----- 2015-04-08 5.7.7 候选发布 -- 修复的错误 -- 复制 -----
----- 2015-04-06 5.6.24 通用可用性 -- 修复的错误 -- 复制 - ----
当设置了automatic_sp_privileges变量时,服务器自动授予EXECUTE和ALTER ROUTINE存储例程的创建者的特权,如果用户还没有这些特权。当特权用户使用 DEFINER 作为非特权用户在 master 上创建过程时,当前用户被认为是特权用户并且 mysql.procs_priv 表不会更新。当这样的语句被复制到 slave 时,非特权 DEFINER 被认为是 slave 上的当前用户并且正在分配特权。这导致了在主服务器和从服务器上分配的权限的差异。该修复确保将存储例程的创建者添加到二进制日志中,并且从属现在在授予权限之前首先检查用户是否存在。为了保持与以前版本的兼容性,当 INVOKER 不可用时使用 DEFINER。作为此修复的一部分,匿名用户可用于从 master 复制到 slave。(缺陷号 20049894)
----- 尚未发布 5.0.8 -- 已修复的错误 -- -----
即使在语句 SET @@GLOBAL.automatic_sp_privileges = 1; 之后使用--skip-grant-tables运行服务器时,也会执行存储例程的权限授予和撤销;被处决。(错误 #9993)
推荐阅读
- angular - Ag 网格自定义列复选框选择
- python - 具有多标签分类的 keras 中的 Model.fit
- flutter - 如何在 Table Flutter 中显示 json 数据
- wso2 - WSO2 EI 将传入的 Json 请求转换为 XML 并将其发送到 WSDL 端点
- python - Python IBAPI reqContractDetails 在第二次运行时不会返回结果
- c++ - 创建构造函数时未解析的外部符号
- javascript - 使用 React-Hooks/Axios 获取数据并显示在表格中
- vlang - vlib 中某些模块中的变量“C”是什么?
- c# - 我如何在 Asp .Net 网站中执行 C# 代码
- pandas - 如何重命名不完全匹配的熊猫数据框的列?