这个问题是出于好奇。我在谷歌上搜索了这个,但没有得到任何线索。
假设用户对 MySQL 数据库具有完全的读/写访问权限。我想知道,有没有办法(连接字符串中的一些参数)以只读模式通过相同的用户名和密码连接到数据库?
我希望在 不更改此用户权限的情况下这样做,因为同一用户可能在其他时间也需要写权限。这将有助于(如果可能)防止意外修改数据库。
这个问题是出于好奇。我在谷歌上搜索了这个,但没有得到任何线索。
假设用户对 MySQL 数据库具有完全的读/写访问权限。我想知道,有没有办法(连接字符串中的一些参数)以只读模式通过相同的用户名和密码连接到数据库?
我希望在 不更改此用户权限的情况下这样做,因为同一用户可能在其他时间也需要写权限。这将有助于(如果可能)防止意外修改数据库。
你的问题的答案是
不,无法在连接字符串中指定只读访问权限。
替代品是
1.创建有读权限的sql用户
2.创建带有权限检查逻辑的视图或存储过程
MS SQL仅授予视图权限
MySQL授予用户仅查看 mysql 视图的权限
3.在你的业务逻辑中实现权限层
祝你好运!
这里最好的解决方案是在 mysql 服务器上创建另一个具有只读权限的帐户,并使用它进行连接。
根据您的用例和您拥有的控制,您可以在连接后立即让代码调用“设置事务只读”,或者在连接时使用 --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。