mysql数据库全局只读和会话只读问题解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库全局只读和会话只读问题解析相关的知识,希望对你有一定的参考价值。

对于系统的发布是经常有的事情,有些时候需要隔绝外界对数据库的更改但是还要求可以读取数据,对于mss sql 这个就是很简单,直接属性—>选项—>只读 ,但是对于mysql这是不同的,今天仔细研究了一下mysql对于单独和实例只读的设置

 
这里不介绍mysql通过对于账户权限控制来达到数据库只读的方式,这里主要说明数据库参数的控制方式
 
1.read_only参数
解析:这是mysql的全局参数,默认设置为0
想要整个库只读只需要设置这个参数为为1 即  set global read_only=1;
注意:这个参数是super权限的用户和从服务器从主机复制的线程不会被影响,所以主从中建议在从服务器设置为参数1
              对于mysql权限分配时注意收回super权限,这样才可以全局保证数据库为只读
               read_only 参数并不适用临时表,也不适用于系统服务插入日志表,总体来讲这个参数只是限制不让没有super权限的账户修改表的结构和内容,并且具有super权限的可以对数据库更新等操作,但是有个缺点就是这个参数是全局变量,而生产中多数是一个实例多个数据库。
 
延伸:tx_read_only参数,这个参数是一个全局和会话变量,并且我测试过这个参数会导致所有的账户都只有只读权限,并且存储引擎是myisam的时候,这个变量也是起作用的。

以上是关于mysql数据库全局只读和会话只读问题解析的主要内容,如果未能解决你的问题,请参考以下文章

限制MYSQL从服务器为只读状态

设置mysql数据库为只读

MySQL常用命令

MySQL中的锁

如何在 Oracle 中查找模式名称?当您使用只读用户在 sql 会话中连接时

MYSQL服务器状态