V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
diggzhang
V2EX  ›  MySQL

MySQL 库处于完全只读模式该如何设置?

  •  
  •   diggzhang · 127 天前 · 1398 次点击
    这是一个创建于 127 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想让一个 MySQL 库处于完全只读模式。

    开启一个 mysql 会话情况下,设置:

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    

    锁库确实生效。

    但是关闭会话后,锁库就失效了。

    问题类似: https://dba.stackexchange.com/questions/116816/flush-tables-with-read-lock-not-working

    有没有办法让该配置永久生效?

    第 1 条附言  ·  126 天前

    会话内锁库

    SET GLOBAL read_only = ON;
    FLUSH TABLES WITH READ LOCK;
    

    解锁

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    

    在一些主从配置教程中说可以通过调用命令行方式设置锁库是无效的。 在会话结束后,锁库隐式语句也就失效。

    最终采取办法是,如何有临时锁库的需求,暂时重置用户权限:

    REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';
    grant select on *.* to 'root'@'%';
    
    12 条回复    2020-07-22 16:38:51 +08:00
    MinQ
        1
    MinQ   127 天前
    整个新用户,给只读权限?
    realpg
        2
    realpg   127 天前
    弄个用户只给 select 权限就完了
    diggzhang
        3
    diggzhang   127 天前
    @MinQ @realpg

    此事就痛苦在访问库的用户全是 SUPER 用户。
    MinQ
        4
    MinQ   127 天前
    @diggzhang 这种特别容易出问题啊,哪天来个 SQL 注入就直接把数据库带走了
    XiaoxiaoPu
        5
    XiaoxiaoPu   127 天前
    MySQL 5.7 支持 super_read_only,看看是否满足?
    zjp
        6
    zjp   127 天前 via Android
    用 init-connect 配置执行下
    但是这个需求还有用户全都是管理员 这都不合理啊
    diggzhang
        7
    diggzhang   126 天前
    @MinQ 我也有点疯...
    @XiaoxiaoPu 看到这个参数有点小开心,然后一对版本号发现我们数据库用的是 5.6
    @zjp 我研究一下
    diggzhang
        8
    diggzhang   126 天前
    @zjp 我大概懂你思路了
    GM
        9
    GM   126 天前
    弄个主从设置,给他们 slave 机的用户,随便搞
    saulshao
        10
    saulshao   126 天前   ❤️ 1
    正确的做法是修改访问数据库的用户,别的办法都只能算变通措施
    zhangysh1995
        11
    zhangysh1995   126 天前
    楼上正解。
    diggzhang
        12
    diggzhang   126 天前
    我比较意外的是,`keepalive + mysql` 听起来这么古老的方式,搜不到一篇说得明白,或跟着做下来有用的文档。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3380 人在线   最高记录 5268   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 11:16 · PVG 19:16 · LAX 03:16 · JFK 06:16
    ♥ Do have faith in what you're doing.