使用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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论
- 添加PostgreSQL的lib库目录到环境变量LD_LIBRARY_PATH,确保psql执行时使用的是PostgreSQL的动态库。