我目前正在开展一些DB2工作,这需要我为模式中的所有表授予以下权限:
GRANT
SELECT,
INDEX,
INSERT,
UPDATE,
DELETE,
CREATE,
DROP,
ALTER,
CREATE TEMPORARY TABLES
ON MY_SCRATCH_SCHEMA.* to 'MY_USER'@'%';
以上是对MySQL的查询,但是,我需要为DB2重写它。
据我所知,没有命令将这些权限授予模式的所有表,您必须依赖于一个过程。但是知道它是DB2,那里有适用于不同版本DB2的文档,所以我有点不相信什么是在线的。
所以我的问题是 - 如何重写上面的DB2查询?
答案 0 :(得分:0)
没有直接的方法通过QUery是DB2。您可以创建存储过程,也可以手动创建存储过程。您也可以执行以下操作
SELECT 'GRANT SELECT, INDEX, INSERT, UPDATE, DELETE, CREATE,
DROP, ALTER, CREATE TEMPORARY TABLES ON ' ||
trim(system_table_schema)||'.'||trim(system_table_name) || 'TO USERID WITH GRANT OPTION ;'
FROM QSYS2.systables WHERE SYSTEM_TABLE_SCHEMA ='SCHEMANAME'
运行以上查询,然后复制结果并运行结果。希望这可以帮助。对于很多用户ID,你可以将它们添加到一个组中并为该组名提供authoity
答案 1 :(得分:0)
我改编了uSeruSher对此的回答。出于某种原因,我的DB2实例中不存在QSYS2.systables
,但我发现SYSIBM.TABLES
存在SELECT 'GRANT SELECT, INDEX, INSERT, UPDATE, DELETE, CREATE,
DROP, ALTER, CREATE TEMPORARY TABLES ON ' ||
trim(table_schema)||'.'||trim(table_name) || 'TO USERID WITH GRANT OPTION ;'
FROM SYSIBM.TABLES WHERE TABLE_SCHEMA ='SCHEMANAME'
。
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
menuItem menuItem = new menuItem(name.getText().toString(), description.getText().toString(), Integer.parseInt(price.getText().toString()), mChosenStorageRef.getDownloadUrl().toString());
mChosenDBRef.push().setValue(menuItem);
} catch (NumberFormatException exception) {
Toast toast = Toast.makeText(MainActivity.this, R.string.price_error, Toast.LENGTH_LONG);
toast.show();
}
name.setText("");
description.setText("");
price.setText("");