Db2

DB2:如何通過 ADMIN_CMD 導出數據文件並由 db2inst1 擁有

  • November 13, 2019

有一些要求我需要通過 JDBC 在 Java 中執行導出命令。因此下面是我執行的命令

CALL SYSPROC.ADMIN_CMD('EXPORT TO /tmp/header.csv OF DEL SELECT * FROM MYTABLE');

但是,當我通過 db2inst1 ssh 登錄到數據庫伺服器時,我檢查了 /tmp/header.csv 是由 db2fenc1 使用者擁有的,它不允許我刪除但只讀訪問權限,如下所示:

[db2inst1@26ea60b7e4a1 /]$ ls -lrt /tmp/header.csv 
-rw-r--r-- 1 db2fenc1 db2fadm1 24335 Nov 12 12:25 /tmp/header.csv

我可以知道如何將 ADMIN_CMD 作為 db2inst1 執行嗎?或任何其他解決方法?

這是設計使然;ADMIN_CMD和其他受保護的常式使用受保護的使用者權限執行,以保護(“保護”)實例免受錯誤或惡意程式碼的侵害。

有些人在實例創建過程中將受保護的使用者設置為實例所有者 ID,這將導致受保護的常式以實例所有者權限執行。但是,這會造成嚴重的安全漏洞。

最好讓您的系統管理員允許實例所有者受限sudorunuser權限來執行必要的命令,如db2fenc1.

引用自:https://dba.stackexchange.com/questions/253067