You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CockroachDB是否支持只读模式?能否以只读模式连接避免写入?

CockroachDB 只读模式相关问题解答

1. 是否支持只读模式

CockroachDB支持实现集群级的只读状态,你可以通过设置集群配置项开启:

  • 执行 SET CLUSTER SETTING server.read_only = true; 命令,整个集群会切换为只读状态,所有写入操作(包括DDL、DML)都会被直接拒绝。
  • 需要恢复正常读写时,执行 SET CLUSTER SETTING server.read_only = false; 即可。

注意:这个设置是集群全局生效的,会影响所有连接和用户。

2. 如何以只读模式连接,确保无法执行写入操作

如果不需要全局只读,仅需限制单个连接或用户的写入权限,可通过以下两种方式实现:

  • 创建只读权限用户:
    新建一个仅拥有SELECT权限的用户,示例命令如下:

    CREATE USER readonly_user WITH PASSWORD 'secure_password';
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
    -- 为后续新建的表自动赋予只读权限
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT TO readonly_user;
    

    使用该用户连接后,任何写入操作(INSERT、UPDATE、DELETE、CREATE等)都会因权限不足被拒绝。

  • 会话级只读设置:
    连接后执行 SET TRANSACTION READ ONLY;,该会话内的所有事务都会被限制为只读。如果需要让连接默认启用该设置,可以在连接字符串中添加参数,示例如下:

    cockroach sql --url 'postgresql://user:pass@host:port/db?options=--transaction-read-only'
    

    这种方式下,即使用户本身拥有写入权限,当前会话内也无法执行写入操作。

内容的提问来源于stack exchange,提问作者alyshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:15:55