java - 如何拒绝 DML 和 DDL 查询?
问题描述
我同意应该调整数据库用户权限以防止他运行 DML 或 DDL 查询,但我正试图从客户端做类似的事情。JDBC 端。
我下载了此处找到的 Oracle 驱动程序。
当驱动程序及其配套 JAR 位于类路径中时,我运行了以下部分测试代码:
Connection connection = DriverManager.getConnection(url, username, password);
connection.setAutoCommit(false);
// connection.setReadOnly(true); // Doesn't help
Statement statement = connection.createStatement();
statement.executeQuery("ALTER TABLE GELBANA_TEST.TABLE1 ADD HQ varchar2(40) DEFAULT 'NY'");
connection.rollBack();
但是该列已添加到表中!
我也可以删除该列。这还不足以阻止用户运行 DML 或 DDL 查询吗?我需要阻止他对数据库进行任何更改。应该只允许他选择数据。我检查了连接 URL 参数是否有可能拒绝此类查询的内容,但我没有发现任何关闭。
解决方案
推荐阅读
- here-api - 我无法从平台获取 trafficService
- python - 切换语言时 /i18n/setlang/ 出现 OperationalError
- python - 如何在 Odoo v12 中将数据从销售订单行发送到发票行?
- java - Java 无法解析的日期异常
- angular - 如何从组件访问正文
- c# - 为什么我不能在带有 inline { get; 的变量之前使用 [Space(15)] 放; }?
- c - 如何使用 CMake 将我的库与 czmq 链接
- tensorflow - 我们如何裁剪派生变量,以便相应地裁剪可训练值的值
- python - 如何使用 python 在 aws s3 预签名的 url 中隐藏我的访问密钥
- html - 滑块在页面中未正确呈现