如何限制用户运行更改数据的查询

问题描述 投票:0回答:1

我有一个基于 Java 的大型应用程序,它使用连接池来访问底层数据库以进行各种 CURD 和报告操作。该应用程序还提供数据库查询接口来运行各种查询。由于与应用程序的其余部分使用相同的连接池来运行这些查询,我想知道如何限制用户仅运行 SELECT 查询。我担心用户可能会有意或无意地删除表或删除/修改记录,这将是可怕的。有没有无需使用单独的连接池或只读用户的简单解决方案?

java oracle jdbc connection-pooling sanitization
1个回答
0
投票

通过 Spring JPA,您可以使用只读事务:

@Service
public class MyService {

    @Autowired
    private MyRepository myRepository;

    @Transactional(readOnly = true)
    public List<MyEntity> findAll() {
        return myRepository.findAll();
    }
}

或者您可以更改数据库用户权限,例如在 MySQL 中:

GRANT SELECT ON mydb.* TO 'read_only_user'@'localhost';
© www.soinside.com 2019 - 2024. All rights reserved.