设置mysql数据库为只读_如何设置mysql数据库为只读
直奔主题,设置为只读后,没法增删改。html
设置命令:mysql
mysql>set read_only=1; #1是只读,0是读写
mysql> show global variables like "%read_only%";库
如下是相关说明:
⼀、对于数据库读写状态,主要靠 “read_only”全局来设定;spa
2022高考时间表安排⼆、默认状况下,数据库是⽤于读写操做的,因此read_only参数也是0或faluse状态,这时候不管是本地⽤户仍是远程访问数据库的⽤户,均可以进⾏读写操做;3d
三、如需设置为只读状态,将该read_only参数设置为1或TRUE状态,但设置 read_only=1 状态有两个须要注意的地⽅:⽇志春天在哪里儿歌歌词
1)read_only=1只读模式,不会影响slave同步复制的功能,因此在MySQL slave库中设定了read_only=1后,经过 show slave
status\G ,命令查看salve状态,能够看到salve仍然会读取master上的⽇志,⽽且在slave库中应⽤⽇志,保证主从数据库同步⼀致;
2)read_only=1只读模式,能够限定普通⽤户进⾏数据修改的操做,但不会限定具备super权限的⽤户的数据修改操做;在MySQL中设置read_only=1后,普通的应⽤⽤户进⾏insert、update、delete等会产⽣数据变化的DML操做时,都会报出数据库处于只读模式不能发⽣数据变化的错误,但具备super权限的⽤户,例如在本地或远程经过root⽤户登陆到数据库,仍是能够进⾏数据变化的DML操做;htm
那么super⽤户怎么控制读写?blog
电信有哪些套餐>iphone有什么好玩的游戏⼀、为了确保全部⽤户,包括具备super权限的⽤户也不能进⾏读写操做,就须要执⾏给全部的表加读锁的命令 “flush tables with lock;”这样使⽤具备super权限的⽤户登陆数据库,想要发⽣数据变化的操做时,也会提⽰表被锁定不能修改的报错。
1)这样经过 设置“read_only=1”和“flush tables with read lock;”两条命令,就能够确保数据库处于只读模式,不会发⽣任何数据改变。
2)但同时因为加表锁的命令对数据库表限定很是严格,若是在slave从库上执⾏这个命令后,slave库能够从master读取binlog⽇志,但不可以应⽤⽇志,slave库不能发⽣数据改变,固然也不可以实现主从同步了,这时若是使⽤ “unlock tables;”解除全局的表读锁,slave就会应⽤从master读取到的binlog⽇志,继续保证主从库数据库⼀致同步。
给妈妈8个字祝福语⼆、为了保证主从同步能够⼀直进⾏,在slave库上要保证具备super权限的root等⽤户只能在本地登陆,不会发⽣数据变化,其余远程链接的应⽤⽤户只按需分配为select,insert,update,delete等权限,保证没有super权限,则只须要将salve设定“read_only=1”模式,便可保证主从同步,⼜能够实现从库只读。
三、设定“read_only=1”只读模式开启的解锁命令为设定“read_only=0”;设定全局锁“flush tables with read lock;”,对应的解锁模式命令为:“unlock tables;”.
四、固然设定了read_only=1后,全部的select查询操做都是能够正常进⾏的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论