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

华为GaussDB A 使用psql连接

墨天轮 2019-10-12
1432

使用psql连接

当前数据库支持使用开源PostgreSQL的客户端psql连接,连接参数与gsql类似。更加详细的参数列表及使用方式,以PostgreSQL相应的用户手册中的描述为准。

使用psql连接前请确认完成以下步骤:

  • 确保客户端机器已有psql可执行文件和相关文件,具体以PostgreSQL相应的用户手册中的描述为准,并已更新环境变量。

    export PATH=/opt/pgsql/bin:$PATH

    /opt/pgsql为PostgreSQL的安装目录,psql存放在其安装目录下的bin文件夹。

  • 添加PostgreSQL的lib库目录到环境变量LD_LIBRARY_PATH,确保psql执行时使用的是PostgreSQL的动态库。

    export LD_LIBRARY_PATH=/opt/pgsql/lib:$LD_LIBRARY_PATH

    /opt/pgsql/lib为PostgreSQL的lib库目录。

  • 本地连接数据库时,需添加环境变量PGHOST,指向数据库guc参数unix_socket_directory的值。

    • 确保执行psql的本地用户对该路径下的文件有读写权限。
    • 如果没有读写权限,可使用-h 127.0.0.1连接数据库。
      psql -h 127.0.0.1 -p 25308 -d postgres -U jack

      postgres为需要连接的数据库名称,jack为连接数据库的用户,25308为CN的端口号。

  • 远程连接数据库时,在确认以上步骤的同时请确保完成远程连接配置,操作步骤参见配置服务端远程连接。
说明:
  • Linux环境下,psql使用过程中,如果有-W参数,那么此参数可能会残留在ps命令的进程列表里,-W参数信息会暴露,请注意使用风险。
  • 如果当前数据库是从V100R002C71及以前版本升级上来的,那么无法使用已经创建的用户连接数据库,必须使用新用户,或更改了密码的老用户。

常见问题处理

  • authentication method 10 not supported.

    使用开源客户端碰到此问题,可能原因:数据库中存储的口令校验只存储了SHA256格式哈希,而开源客户端只识别MD5校验,双方校验方法不匹配报错。或者,是因为远程连接时-U传入的用户不存在。

    说明:
    • 数据库并不存储用户口令,只存储用户口令的哈希码。
    • 早期版本(V100R002C80SPC300之前的版本)的数据库只存储了SHA256格式的哈希,并未存储MD5的哈希,所以无法使用MD5做用户口令校验。
    • 新版本(V100R002C80SPC300及之后版本)的数据库当用户更新用户口令或者新建用户时,会同时存储两种格式的哈希码,这时将兼容开源的认证协议。
    • 但是当老版本升级到新版本时,由于哈希的不可逆性,所以数据库无法还原用户口令,进而生成新格式的哈希,所以仍然只保留了SHA256格式的哈希,导致仍然无法使用MD5做口令认证。

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

  • undefined symbol: pqsignal.

    使用客户端碰到此问题,可能原因:未将PostgreSQL的lib库目录添加到环境变量LD_LIBRARY_PATH,请参照步骤2添加。


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

评论