36

这个问题是出于好奇。我在谷歌上搜索了这个,但没有得到任何线索。

假设用户对 MySQL 数据库具有完全的读/写访问权限。我想知道,有没有办法(连接字符串中的一些参数)以只读模式通过相同的用户名和密码连接到数据库?

我希望在 更改此用户权限的情况下这样做,因为同一用户可能在其他时间也需要写权限。这将有助于(如果可能)防止意外修改数据库。

4

3 回答 3

17

你的问题的答案是

不,无法在连接字符串中指定只读访问权限。

替代品是

1.创建有读权限的sql用户

MVC3 只读 MySql 连接字符串

2.创建带有权限检查逻辑的视图或存储过程

MS SQL仅授予视图权限

MySQL授予用户仅查看 mysql 视图的权限

3.在你的业务逻辑中实现权限层

祝你好运!

于 2012-04-20T05:59:03.353 回答
16

这里最好的解决方案是在 mysql 服务器上创建另一个具有只读权限的帐户,并使用它进行连接。

于 2012-04-20T05:51:24.523 回答
5

根据您的用例和您拥有的控制,您可以在连接后立即让代码调用“设置事务只读”,或者在连接时使用 --init-command 参数。这适用于我们拥有的测试用例,

这是设置的事务文档:https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html,同样你也可以将它设置为会话变量,如果这会有所不同https://dev .mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_transaction_read_only

于 2018-02-24T03:50:45.757 回答