openGauss

开源数据库

openGauss社区官网

开源社区

Copy 进阶用法

云和恩墨2022-05-23Copy 进阶用法

关于使用 navicat 连接 mogdb 报错:none of the server's SASL authentication mechanisms are supported

本文出处:https://www.modb.pro/db/393744

一、前提条件

默认已经安装好 navicat,我这里使用的版本是 Navicat Premium 15,关于它的安装破解网上有很多资源。

虚拟机 IP:...虚拟机使用 NAT 网络模式 宿主机与其通讯的虚拟 IP 为:... navicat,工作界面简洁,可以支持多种类型的数据库连接,如下:

二、mogdb 数据库端准备

1.启动数据库

su - omm gs_om -t start

注:此后各步操作均在 mogdb 数据库初始用户对应的操作系统用户 omm 下操作

2.创建远程连接用户

#本地连接数据库 gsql -d postgres -p 26000 -r #创建用户 create user zb password 'geet@123'; #授予用户管理员权限(如果需要) grant all privileges to zb;

3.配置客户端接入认证

gs_guc reload -N all -I all -h 'host all zb 10.0.0.1/24 sha256'

4.配置 navicat 客户端:

依次点击:文件——>新建连接——>PostgreSQL, 然后配置相应的连接名(可随意命名),主机(填写数据库服务所在主机的 IP)、端口号(数据库服务监听的端口号)、初始数据库(建立连接使用的数据库)、用户名、密码,如下所示:

5.点击测试连接,报错:

网上没找到(真的),通过询问我的有点牛的吴导师,问题原因:navicat 暂不支持 sha256 的加密方法,应改改为 md5,虽然最终问题简单,但是其中细节还是挺多的,因为大脑发热的我,将客户端认证方式改为 md5 就处处碰壁。废话不多说,直接开搞

三、解决连接失败的问题:

1.重写重新编辑客户端认证策略

gs_guc reload -N all -I all -h 'host all zb 10.0.0.1/24 md5'

2.修改密码加密类型为 MD5(默认时 sha256)

gs_guc reload -N all -I all -c 'password_encryption_type=0' #检查配置是否生效 grep encry /mogdb/data/db1/postgresql.conf password_encryption_type = 0		#Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only #最保险的方法还是登录数据库show一下参数值: openGauss=# show password_encryption_type; password_encryption_type  -------------------------- 0 (1 row)

3.修改 zb 用户的密码

注:这一步一定要做,否则会导致你远程连接失败,报如下错:

gsql -U zb -W geet@123 -h 10.0.0.100 -p 26000 gsql: FATAL:  Invalid username/password,login denied. FATAL:  Invalid username/password,login denied.

因为该用户之前的密码仍让使用 sha256 进行加密处理,现在你将加密方式改为 MD5,系统就会将你输入的密码使用 md5 加密,然后和使用 sha256 加密的原密码进行比对,肯定会失败呀,所以我们需要修改密码,再次修改的新密码将会使用新设置的 md5 算法进行加密,可以通过如下方式查看指定用户目前的密码加密方式:

openGauss=# select rolpassword from pg_authid where rolname='zb';                                                                                                    rolpassword                                                                                                     ----------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------- sha25681805918aa95cf71b044259200ed05a4f63d7a772598be210165d0a690c75319986666b3b0bb25f913e59f82a12fd5f927c141680ba82548a0ca5829267d612b4b 6ded866a4bbcce1d26a2a202df6c268765d558fecc52e7a3abfa1c2ab204ececdfecefade (1 row)

修改用户的密码:

openGauss=# alter user zb password '****@***';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
ALTER ROLE
#再次查看用户加密后的密码:
openGauss=# select rolpassword from pg_authid where rolname='zb';
             rolpassword
-------------------------------------
 md57a6066121212b4ce59015d2ca59e5fc9
(1 row)

#可以发现使用MD5对密码进行加密,加密串明显变短了很多,存在安全隐患问题。
注:使用超级管理员用户omm修改用户密码时,可以不用输入旧密码,就可以修改用户密码4.再次配置navicat连接:点击测试连接后,成功连接mogdb,如下所示:
到此问题就解决了!!!