用戶名不對問題
問題描述
用戶存在,但客戶端連接報錯:
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操作。