OK, here's a little trick you may not be aware of. pg_connect("dbname=mydb user=stan"); will open a local unix domain socket. pg_connect("host=127.0.0.1 dbname=mydb user=stan"); will open a local TCP/IP connection on the loopback interface. In order for this to work, your postgresql.conf must have this line changed: #tcpip_socket = false to tcpip_socket = true and your pg_hba.conf needs a line like this: host all all 127.0.0.1 255.0.0.0 trust So it's likely the "secure by default" mentality of postgresql that's biting you here.