云数据库 GaussDB-Linux下配置数据源:常见问题处理

时间:2023-11-01 16:22:17

常见问题处理

  • [UnixODBC][Driver Manager]Can't open lib 'xxx/xxx/psqlodbcw.so' : file not found.

    此问题的可能原因:

    • odbcinst.ini文件中配置的路径不正确

      确认的方法:'ls'一下错误信息中的路径,以确保该psqlodbcw.so文件存在,同时具有执行权限。

    • psqlodbcw.so的依赖库不存在,或者不在系统环境变量中

      确认的办法:ldd一下错误信息中的路径,如果是缺少libodbc.so.1等UnixODBC的库,那么按照“操作步骤”中的方法重新配置UnixODBC,并确保它的安装路径下的lib目录添加到了LD_LIBRARY_PATH中;如果重装仍无法解决,可以手动将数据库安装包下的unixodbc/lib下的内容拷贝到UnixODBC的安装路径下的lib目录;如果是缺少其他库,请将ODBC驱动包中的lib目录添加到LD_LIBRARY_PATH中。

  • [UnixODBC]connect to server failed: no such file or directory

    此问题可能的原因:

    • 配置了错误的/不可达的数据库地址,或者端口

      请检查数据源配置中的Servername及Port配置项。

    • 服务器侦听不正确

      如果确认Servername及Port配置正确,请根据“操作步骤”中数据库服务器的相关配置,确保数据库侦听了合适的网卡及端口。

    • 防火墙及网闸设备

      请确认防火墙设置,将数据库的通信端口添加到可信端口中。

      如果有网闸设备,请确认一下相关的设置。

  • [unixODBC]The password-stored method is not supported.

    此问题可能原因:

    数据源中未配置sslmode配置项。

    解决办法:

    请配置该选项至allow或以上选项。此配置的更多信息,见表3

  • Server common name "xxxx" does not match host name "xxxxx"

    此问题的原因:

    使用了SSL加密的“verify-full”选项,驱动程序会验证证书中的主机名与实际部署数据库的主机名是否一致。

    解决办法:

    碰到此问题可以使用“verify-ca”选项,不再校验主机名;或者重新生成一套与数据库所在主机名相同的服务端证书。

  • Driver's SQLAllocHandle on SQL_HANDLE_DBC failed

    此问题的可能原因:

    可执行文件(比如UnixODBC的isql,以下都以isql为例)与数据库驱动(psqlodbcw.so)依赖于不同的ODBC的库版本:libodbc.so.1或者libodbc.so.2。此问题可以通过如下方式确认:

    ldd `which isql` | grep odbcldd psqlodbcw.so | grep odbc

    这时,如果输出的libodbc.so最后的后缀数字不同或者指向不同的磁盘物理文件,那么基本就可以断定是此问题。isql与psqlodbcw.so都会要求加载libodbc.so,这时如果它们加载的是不同的物理文件,便会导致两套完全同名的函数列表,同时出现在同一个可见域里(UnixODBC的libodbc.so.*的函数导出列表完全一致),产生冲突,无法加载数据库驱动。

    解决办法:

    确定一个要使用的UnixODBC,然后卸载另外一个(比如卸载库版本号为.so.2的UnixODBC),然后将剩下的.so.1的库,新建一个同名但是后缀为.so.2的软链接,便可解决此问题。

  • FATAL: Forbid remote connection with trust method!

    由于安全原因,数据库CN禁止集群内部其他节点无认证接入。

    如果要在集群内部访问CN,请将ODBC程序部署在CN所在机器,服务器地址使用"127.0.0.1"。建议业务系统单独部署在集群外部,否则可能会影响数据库运行性能。

  • [unixODBC][Driver Manager]Invalid attribute value

    在使用SQL on other GaussDB功能时碰到此问题,有可能是unixODBC的版本并非推荐版本,建议通过“odbcinst --version”命令排查环境中的unixODBC版本。

  • authentication method 10 not supported.

    使用开源客户端碰到此问题,可能原因:

    数据库中存储的口令校验只存储了SHA256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。

    • 数据库并不存储用户口令,只存储用户口令的哈希码。
    • 数据库当用户更新用户口令或者新建用户时,会同时存储两种格式的哈希码,这时将兼容开源的认证协议。
    • 但是当老版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了SHA256格式的哈希,导致仍然无法使用MD5做口令认证。
    • MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。

    要解决该问题,可以更新用户口令(参见ALTER USER);或者新建一个用户(参见CREATE USER),赋于同等权限,使用新用户连接数据库。

  • unsupported frontend protocol 3.51: server supports 1.0 to 3.0

    目标数据库版本过低,或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。

  • FATAL: GSS authentication method is not allowed because XXXX user password is not disabled.

    目标CN的pg_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。配置方法见6

  • isql:error while loading shared libraries:xxx

    环境缺少该动态库,需要自行安装对应的库。

support.huaweicloud.com/distributed-devg-v3-opengauss/gaussdb-12-0093.html