Postgresql
.pcppass 不工作
我以 postgres 使用者身份執行 pgpool-II,因此我可以在這篇文章中以一個順序準確地複制我所做的事情。
-bash-4.2$ echo "pgpool:$(pg_md5 test)" > /etc/pgpool-II-11/pcp.conf -bash-4.2$ cat /etc/pgpool-II-11/pcp.conf pgpool:098f6bcd4621d373cade4e832627b4f6 <Restart pgpool-II-11 service> -bash-4.2$ echo "cia-db-vip:9898:pgpool:$(pg_md5 test)" > .pcppass -bash-4.2$ cat .pcppass cia-db-vip:9898:pgpool:098f6bcd4621d373cade4e832627b4f6 -bash-4.2$ pcp_watchdog_info -h cia-db-vip -p 9898 -U pgpool -w 0 FATAL: authentication failed for user "pgpool" DETAIL: username and/or password does not match -bash-4.2$ pcp_watchdog_info -h cia-db-vip -p 9898 -U pgpool 0 Password: <I Enter the password test> 2 YES cia-db-3:9999 Linux cia-db-3 cia-db-3 cia-db-3:9999 Linux cia-db-3 cia-db-3 9999 9000 4 MASTER -bash-4.2$ ls -l .pcppass /etc/pgpool-II-11/pcp.conf -rw-------. 1 postgres postgres 40 Jul 30 11:22 /etc/pgpool-II-11/pcp.conf -rw-------. 1 postgres postgres 56 Jul 30 11:23 .pcppass
所以只有我輸入密碼才能工作。我也試過在沒有密碼的情況下按輸入鍵。
我嘗試檢查 strace -ff pcp_watchdog_info 並開始讀取文件 .pcppass 但我只能看到第一行。不知道它是繼續讀取文件還是關閉它。
stat("/var/lib/pgsql/.pcppass", {st_mode=S_IFREG|0600, st_size=56, ...}) = 0 open("/var/lib/pgsql/.pcppass", O_RDONLY) = 4 fstat(4, {st_mode=S_IFREG|0600, st_size=56, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f581f3d6000 read(4, "cia-db-vip:9898:pgpool:098f6bcd4"..., 4096) = 56 close(4) = 0 munmap(0x7f581f3d6000, 4096) = 0 write(3, "M\0\0\0\4", 5) = 5 select(4, [3], NULL, [3], NULL) = 1 (in [3]) read(3, "m\0\0\0\10\205^\v\341", 1024) = 9 write(3, "R\0\0\0,pgpool\000381d652cc9ef7891d4cb"..., 45) = 45 select(4, [3], NULL, [3], NULL) = 1 (in [3]) read(3, "E\0\0\0xSFATAL\0CXX000\0Mauthenticati"..., 1024) = 121 close(3) = 0 write(2, "FATAL: authentication failed fo"..., 98FATAL: authentication failed for user "pgpool" DETAIL: username and/or password does not match
我還嘗試重置 postgres 使用者 pgpool 密碼以進行測試,包括在 /etc/pgpool-II-11/pool_passwd 中,但我懷疑它是否重要,因為如果我輸入密碼,我實際上可以使用 pcp 命令。因此,使用者似乎與 postgres 使用者是分開的。
編輯:還嘗試將 SElinux 臨時設置為 permissive,但沒有幫助。
密碼不應該是 .pcppass 文件中的 pg_md5 編碼,只能在 pcp.conf 文件中。