运行 python 来自 MySql 触发器的 sys_exec() 脚本给出退出代码 1

Running python script from MySql trigger with sys_exec() gives exit code 1

我在本地有一个 MySql 服务器(在 Windows 10 上),想从触发器中 运行 一个 python 脚本。为此,我想使用 sys_exec()。 我从这里得到了 lib_mysqludf_sys_64.dll:https://github.com/rapid7/metasploit-framework/tree/master/data/exploits/mysql

并按照此处所述设置 UDF:https://osandamalith.com/2018/02/11/mysql-udf-exploitation/

sys_exec 正在工作:

mysql> SELECT sys_exec('python --version')//
+------------------------------+
| sys_exec('python --version') |
+------------------------------+
|                            0 |
+------------------------------+
1 row in set (0.52 sec)

但是当我想要 运行 脚本时:

mysql> SELECT sys_exec('python C:\dbtest.py test')//
+--------------------------------------+
| sys_exec('python C:\dbtest.py test') |
+--------------------------------------+
|                                    2 |
+--------------------------------------+
1 row in set (0.07 sec)

据我了解,2 表示未找到该文件。 我该如何解决这个问题?

当我使用 '\\' 时,退出代码变为 1 (Invalid_Function ?):

mysql> SELECT sys_exec('python C:\dbtest.py test')//
+---------------------------------------+
| sys_exec('python C:\dbtest.py test') |
+---------------------------------------+
|                                     1 |
+---------------------------------------+
1 row in set (0.57 sec)

未安装 MySQL UDF SYS。

在这里你可以找到答案:

这里还有git下载:https://github.com/mysqludf/lib_mysqludf_sys

我发现问题出在 mysql 用户的访问权限上。我无法找出哪个 (windows) 用户实际运行了 python 脚本并需要访问使用过的文件,但我解决问题的方法是授予“所有人”访问权限涉及的文件。