我同意应该调整数据库用户权限以防止他运行DML或DDL查询,但是我正在尝试从客户端执行类似的操作。 JDBC端。
我下载了here的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参数中是否有可能拒绝此类查询的内容,但没有发现任何问题。