tidb 创建用户问题

你好,我现在遇到tidb的问题了,能否帮我解答下,谢谢!

问题:我现在有正式测试两套tidb环境,正式的用的是tidb4.0,测试的不是我部署的,不过版本是小于4.0的,现在的问题是,测试环境不能添加用户,正式环境可以添加用户,并授权远程访问。

另:我想查看下我测试环境的数据库版本怎么查看?

这个可以通过 sql 语句,select tidb_version(); 看下版本信息,并反馈下,标明测试环境还是正式环境。

检查下账户添加问题,版本上并无太大区别,请确认连接 测试服务器的链接地址是否能连通。

%E5%9B%BE%E7%89%87

目前这个是测试环境的版本,不能添加用户。在正式环境版本是v4.0.0-rc,使用命令create user XXX;可以正常添加用户,不会想测试环境一样报错,ERROR 1054 (42S22): unknown column Password

你好,

使用标准的 create user 语句尝试下:


https://docs.pingcap.com/zh/tidb/v4.0/sql-statement-create-user#create-user

%E5%9B%BE%E7%89%87

都不行,也报错。同样的我用inser直接插入mysql.user表,可以插入可以更新密码,但是flush privileges 还会报错,且这个账号不能使用。

请上传下对应时间点的 tidb.log ,应该会输出报错。感谢。

这边测试可以的。

image

image

tidb.log (13.9 KB)

我这边正式环境的tidb版本是4.0 ,命令也可以使用。

有没有实时的沟通方式,这样挺慢的

拿一下 explain mysql.user 的结果看看?

看样子,这个集群应该升级到 4.0 然后降级过 - 在升级到 TiDB v4.0 时,用户密码列会被改名为 authenciation_string。降级后不会改回 “Password”。

@didiao 麻烦先确认下这一点

资源原来的安装人员,这个没有升级过,安装的时候就是v3.0 。 你说的意思是不是说,tidb4.0 使用authenciation_string方式,tidb3.0 使用的是password方式。

似的,研发同学描述的比较清楚,请先帮忙确认,tidb 目前不支持降级操作,如果可以,看是否可以将原集群数据备份并重新部署,将数据导入。

刚才确认了,没有降级,也没有升级

可以看一下 SELECT HIGH_PRIORITY VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME='tidb_server_version' 的结果,另外这两个集群有没有做过同步操作。

恩是这样的,现在我们可以看到,3.0 集群元信息中只存在了 “authentication_string” 列,这导致了上面的错误。有除了升降级之外,还有两种可能会引发该问题:

  1. 在 3.0 集群中使用初期版本(比如 beta)的 BR,当前正式版本的 BR 不会有问题。
  2. 尝试使用过 4.0 TiDB-server 接入 3.0 集群。

要解决问题,请问是否可以接受删除当前的 3.0 集群,重新进行部署?

你好可以重新部署,现在计划不再使用ansible部署3.0了,计划在新的机器上使用tiup部署4.0,在导入数据。

好的,4.0 肯定不会有这个问题。还请验证下,对造成的不便表示歉意!