暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于创建用户,《GoldenDB 产品手册》没提到的事情

原创 淘气 2025-07-24
473

创建数据库用户,是DBA必备的一项基础技能。本文旨在梳理清楚GoldenDB数据库在创建用户规范,以及我自己作为GoldenDB菜鸟踩的一些坑。

Table of Contents

1、关于用户的基本操作

1.1、创建用户
使用CREATE USER语句创建新用户。
例如:创建一个新用户zqd,分配权限的主机名是%,表示可以从任意远程主机登录,用户登录密码是Dlz@2025。

CREATE USER 'zqd'@'%' IDENTIFIED BY 'Dlz@2025'

在这里,《GoldenDB产品手册》有提到一点:“建议通过 insight 页面创建用户并进行管理”。 但没有再进行过多描述,关于这一点本篇文章会在下文中做出解释。

1.2、用户授权
使用 GRANT 语句对用户授权。
例如:授予zqd用户对test数据库和表的所有操作权限。

GRANT ALL PRIVILEGES ON test.* to 'zqd'@'%';

例如:授予zqd用户对test数据库t1表的SELECT、INSERT权限、

GRANT SELECT,INSERT ON test.t1 TO 'zqd'@'%';

在这里,虽然《GoldenDB产品手册》没有提到,但可以在授权完成后,执行 “FLUSH PRIVILEGES;” 命令,刷新权限。

1.3、取消用户权限
使用 REVOKE 语句取消用户权限。
例如:取消zqd用户所有权限。

REVOKE ALL ON *.* FROM 'zqd'@'%';

1.4、查询用户权限
使用 SHOW GRANTS 语句查询用户权限。
例如:查询 zqd 用户权限。

SHOW GRANTS FOR 'zqd'@'%';

1.5、删除用户
使用 DROP USER 语句删除用户。
例如:删除 zqd 用户。

DROP USER 'zqd'@'%';

2、手册里没展开的细节

《GoldenDB产品手册》中在用户操作章节有提到 “建议通过 insight 页面创建用户并进行管理”。 但没有再进行过多描述,这是为什么呢?

2.1、遭遇情况

前些时间,我在GoldenDB测试环境中使用CREATE USER创建过一个新用户,并在赋权完成后将用户密码交给了研发人员。但很快研发人员反馈说使用该用户连接不上GoldenDB数据库。

于是我使用mysql命令行方式进行连接测试,发现果真连接不上。

mysql -h192.168.1.1 -P6606 -uzqd -p

在一番思考后,在GoldenDB数据库的insight管理页面中的【租户管理】->【账号管理】中,创建账号并授权。再次使用mysql命令行方式进行连接测试,连接成功。让研发人员再次测试,也成功了。

2.2、查找原因

虽然问题解决了,但还是想搞清楚为什么。

2.2.1、服务端口连接失败
我先是在测试环境中又尝试多次,终于发现一个细节:虽然使用GoldenDB数据库实例的服务端口连接失败,但是使用GoldenDB数据库的DN端口却是可以连接上。而且创建的用户并没有出现在 insight 管理界面的【账号管理】中。

2.2.2、GoldenDB CN的透传模式
在多方请教与查阅资料后,得知了这一问题的原因:在GoldenDB CN透传模式下,使用非内置用户,在mysql命令行创建的用户都会出现这个问题。

  • 那什么是 CN 透传模式?
    按照墨天轮 吾亦可往 GoldenDB专家的回答这指的是在透传模式下,CN不参与其他动作,前后端链路绑定,CN将SQL语句直接转发至后端DN。且集中式模式集群的CN只有透传模式(单分片租户,且无GTM节点),而我所用的测试环境正好是集中式模式集群。

  • 那什么是非内置用户?
    除了dbproxy、super、dbagent、repl、mds2proxy、root、gdbquery2db这些内置用户以外的其他用户都属于是非内置用户。

2.2.3、低级错误
在了解了以上信息后,我很疑惑:我用的就是super这个内置用户,按逻辑不应该出现这种问题。在一番排查和请教后,终于发现问题所在。

  • 错误的直连DN
    我在使用命令行创建用户的操作是,登录GoldenDB数据库的DN服务器,切换到DN安装用户下,执行下面命令进入mysql命令行:
mysql -usuper -p

这种方式,是默认以DN的端口连接到了当前的DN而已。而官方也禁止直接连接DN,这很有可能造成元数据不一致,从而导致更严重的问题。

  • 正确的方式
    正确的方式应该是在命令行中,指定主机Ip、服务端口,且以super或者dbproxy用户进入mysql命令行创建新用户。
mysql -h192.168.1.1 -P6606 -usuper -p

2.3、问题解决

以2.2.3步骤中正确的方式进入mysql命令行后,再创建的用户就可以进行正常连接了。并且创建完成后,在insight管理页面的【租户管理】->【账号管理】中也会出现该用户信息。

GoldenDB新手使用 CREATE USER 方式创建新用户时,确实容易出错,所以这也是官方产品手册建议在insight中创建新用户的原因之一吧。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论