用户名不对问题
问题描述
用户存在,但客户端连接报错:
FATAL: password authentication failedfor user "xxx"
可能影响
无法连接数据库。
解决步骤
- 检查数据库中是否存在该用户,psql客户端可通过 \du 或 \dg列出用户,或执行以下SQL查看
select * from pg_user where usename ='用户名';
注意注意大小写问题,TeleDB在不加双引号时不区分大小时,默认小写,如果用户名中存在大写字母的情况,则使用时需要加上双引号;这里强烈不建议使用区分大小写的用户名或对象。
密码不正确或密码过期问题
问题描述
用户不存在,客户端连接报错:
FATAL: role "xxx" does not exist。
可能影响
无法连接数据库。
解决步骤
- 密码过期或密码错误都会提示上述同样的错误,可通过以下SQL检查密码是否过期
select rolname,rolvaliduntil from pg_roles where rolname='xxx';
1)如果密码已过期,可通过以下SQL更新过期时间:
alter role xxx valid until '2034-01-10 10:32:12+08';
2)如果密码未过期,则是输出的密码错误导致,检查下输入密码是否正确
3)如果忘记密码,普通用户可以用管理员登录后alter命令修改,或通过控制台重置
修改密码SQL语句如下:
alter role xxx PASSWORD 'xxx';
用户无登录权限问题
问题描述
用户存在,但客户端连接报错:
FATAL: role "xxx" is notpermitted to log in
可能影响
无法连接数据库。
解决步骤
- TeleDB支持通过create role、create user两种方式创建用户,create role默认不带LOGIN关键字,即默认无登录权限;create user则默认带LOGIN关键字,默认有登录权限。
- 此报错是用户未设置登录权限,在创建用户时,create role默认用户无登录权限,需要增加LOGIN关键字,可通过以下命令添加LOGIN权限
alter role xxx LOGIN;
后续新建用户可以用create user 命令来代替create role:
create user xxx PASSWORD 'xxx';
IP不在白名单内的问题
问题描述
客户端IP地址不在pg_hba.conf规则的白名单中,导致报错:
FATAL: no pg_hba.conf entry for host"xx.xx.xx.xx", user "xxx", database "xxx",SSL off
可能影响
客户端无法连接数据库。
解决步骤
- 评估客户IP是否在预期可访问范围内,如有需要,可在控制台手动添加访问规则,加入该IP地址或地址段,访问策略应为md5。
以下是针对具体ip的访问策略规则
host all all xx.xx.xx.xx/32 md5
连接池获取连接失败问题
问题描述
客户端连接报错:
Failed to get pooled connections
可能影响
SQL执行报错;
解决步骤
此报错为CN节点与DN节点、DN节点之间建立连接失败导致,可能是网络异常或节点异常导致
解决办法:
- 检查节点间网络是否正常,是否有丢包;如有网络问题,修复网络问题;
- 检查所有节点状态是否正常,修复状态异常的节点;
- 检查所有节点是否有连接数据打满的情况,清理会话或调大最大连接数max_connections;
- 清理空闲会话、清理长时间执行未结束的SQL语句。
是否有core产生,如有,连接运维工程师分析处理。
连接证书获取失败问题
问题描述
客户端连接报错:
root certificate file "/xxx/xxx/.postgresql/root.crt" does not exist
可能影响
无法连接数据库;
解决步骤
此报错开启ssl认证,但证书文件不存在;
解决办法:
上传证书到报错提示的指定目录;并确认数据库用户有访问权限;
连接证书无效问题
问题描述
客户端连接报错:
FATAL: connection requires a validclient certificate
可能影响
无法连接数据库;
解决步骤
此报错开启ssl认证,但证书文件无效;
解决办法:
上传正确的证书到报错提示的指定目录;并确认数据库用户有访问权限;
连接数过多问题
问题描述
用户存在,但客户端连接报错:
FATAL: too many connections for role"xxx"
可能影响
无法连接数据库。
解决步骤
- 管理员(SUPERUSER)有专用预留的连接数,不会受用户连接数限制,如果是管理员用户报错,则可在控制台调大参数superuser_reserved_connections,重启节点生效;
- 普通用户可以设置连接数限制,可通过以下SQL查看当前连接限制数
select rolconnlimit from pg_roles where rolname='xxx';
需要评估用户连接数是否在正常范围,是否需要清理无用连接,或协调应用侧限制连接使用;如需要调整,通过以下SQL调整:
alter role xxx with connectionlimit xxx;
打开文件过多问题
问题描述
客户端连接报错:
FATAL: too many open file
可能影响
无法连接数据库;
解决步骤
此报错为打开文件句柄不够,参考操作系统资源限制类问题处理。
数据库启动/关闭中无法连接问题
问题描述
客户端连接报错:
FATAL:the database system is shutting down
或
FATAL:the database system is starting up
可能影响
无法连接数据库;
解决步骤
此报错为数据库正在启动/停止中,暂时无法访问。
解决办法:等待数据库启动完成后再连接。
连接异常断开问题
问题描述
客户端连接报错:
serverclosed the connection unexpectedly
This probably means the serverterminated abnormally
before or while processing the request.
Theconnection to the server was lost. Attempting reset: Succeeded.
可能影响
- SQL执行报错;
- 可能有一段时间无法连接数据库。
解决步骤
此报错为连接异常断开导致,可能是由于节点异常重启、手动重启、进程被kill等原因导致。
解决办法:
- 检查是否有core文件产生,如有,则可能是有异常触发节点crash,需要联系运维工程师分析处理;
- 检查数据库日志和控制台审计日志,是否有手动重启记录;
- 检查操作系统操作记录是否有执行过kill操作;
- 检查操作系统日志/var/log/messages或dmesg -T,是否有操作系统发起kill操作。