I think I have found out something suspicious. I used tcpdump to monitor the traffic to and from port 5432, and it seems that the password the client on A sends out to the postmaster on B is "md54570471eccef21ae3c6e43033d8d2f66" While the MD5-ed password stored in system catalog (pg_shadow) is "md5c573460a3b356e4610bfae406e1d8a9f" And a MD5 string generated by md5 function in postgresql is: template1=# select md5('test_passwd'); md5 ---------------------------------- daac2bc8c6fe94375b59efb7b3effd33 (1 row) (As you can see, all 3 strings are different) Why the difference? Is there something missing ?? Thanks Wei