OBServer启动的用户 是指 root 用户 还是 admin 用户?

关于创建外表,需要设置 secure_file_priv

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001502601

官方文档这地方的描述容易有歧义,
这里所说的 当前用户与 OBserver 启动的用户不同, 这里所谓的 “OBServer启动的用户” 以及 命令中的

具体是指 操作系统的root用户 , 还是 启动observer进程的 admin用户?

1 个赞

oceanbase官方安装文档建议使用admin用户,注意相关授权。可以参考https://www.cnblogs.com/werr370/p/17605451.html

1 个赞

你好,这里需要区分“当前用户”和“OBServer 启动的用户”的区别就更好理解:

1. 如果“当前用户”和“OBServer 启动的用户”都是 admin
不需要执行带有 sudo -u ... 的命令,因为 admin 用户它本身具有 sql.sock 的权限

2. 如果“当前用户”和“OBServer 启动的用户”不同
比如“当前用户”是 dba,“OBServer 启动的用户”是 admin,那么需要执行的命令就是 sudo -u admin obclient -S /home/admin/oceanbase/run/sql.sock -u******@obtenant -p******,即在 dba 用户下、以 admin 身份去执行这条命令

2 个赞

@论坛小助手

根据文档库中的信息,可以明确以下几点来解答您的问题:

  1. OBServer 启动的用户
    根据文档片段 1 的描述,OceanBase 数据库(即 OBServer)通常由操作系统上的普通用户启动,而不是 root 用户。默认情况下,这个用户是 admin 用户。因此,OBServer 启动的用户是指 admin 用户,而非操作系统的 root 用户。

    文档片段 1 中提到:

    创建 admin 用户组和用户,并配置密码。所有 OBServer 节点的用户 uid 需要保持一致,否则使用 NFS 作为备份介质时会出现权限问题导致备份失败。

    这表明,admin 用户是用于运行 OceanBase 数据库的主要用户。

  2. 关于 secure_file_priv 和 Unix Socket 连接
    在您提供的官方文档中,有如下描述:

    如果当前的用户与 OBServer 启动的用户不同,则当前用户不会有 sql.sock 的权限,需要通过以下命令进行连接。

    sudo -u <user of observer> obclient -S /home/admin/oceanbase/run/sql.sock -u******@obtenant -p******
    

    这里的 <user of observer> 指的就是启动 OBServer 的用户,即 admin 用户。如果当前登录的操作系统用户不是 admin 用户,则需要通过 sudo -u admin 切换到 admin 用户来获取对 sql.sock 文件的访问权限。

  3. 总结

    • OBServer 启动的用户 是指 admin 用户,而不是操作系统的 root 用户。
    • 如果当前用户与 OBServer 启动的用户不同(例如当前用户是 root 或其他用户),则需要通过 sudo -u admin 切换到 admin 用户,以确保能够正确访问 sql.sock 文件并执行相关操作。

如果您还有其他疑问,请随时提出!

更多信息请查看:

  1. 部署前准备
  2. 创建 OBProxy 集群
  3. 检查 OBServer 状态
  4. 启动 OBProxy
  5. SERVER
  6. 停止 OBProxy
  7. 事务路由
  8. 部署个人实验环境
  9. GV$SYSSTAT