Thread: Authentication Failure with pg_pconnect

Authentication Failure with pg_pconnect

From
Date:
I'm trying to get phpBB (php Bulletin Board System) running on my website
but it's install program is having problems authenticating with
postgreSQL.  I've tried to find out why it won't work and have pretty much
narrowed things down to this one function in the install script.  If the
following function doesn't seem flawed in any way, does anyone know why
php my throw this error even though username and password is correct and
user is logging in from localhost:

----
 Warning: pg_connect() [function.pg-connect]: Unable to connect to
PostgreSQL server: FATAL 1: IDENT authentication failed for user
"postgres" . in /var/www/html/phpBB2/db/postgres7.php on line 79
phpBB : Critical Error

Could not connect to the database
----

The line 79 it refers to is the line with the pg_pconnect call in the
following function:

----
    var $db_connect_id;
    var $query_result;
    var $in_transaction = 0;
    var $row = array();
    var $rowset = array();
    var $rownum = array();
    var $num_queries = 0;

    //
    // Constructor
    //
    function sql_db($sqlserver, $sqluser, $sqlpassword, $database,
$persistency = true)
    {
        $this->connect_string = "";

        if( $sqluser )
        {
            $this->connect_string .= "user=$sqluser ";
        }

        if( $sqlpassword )
        {
            $this->connect_string .= "password=$sqlpassword ";
        }

        if( $sqlserver )
        {
            if( ereg(":", $sqlserver) )
            {
                list($sqlserver, $sqlport) = split(":", $sqlserver);
                $this->connect_string .= "host=$sqlserver port=$sqlport ";
            }
            else
            {
                if( $sqlserver != "localhost" )
                {
                    $this->connect_string .= "host=$sqlserver ";
                }
            }
        }

        if( $database )
        {
            $this->dbname = $database;
            $this->connect_string .= "dbname=$database";
        }

        $this->persistency = $persistency;

        $this->db_connect_id = ( $this->persistency ) ?
pg_pconnect($this->connect_string) : pg_connect($this->connect_string);

        return ( $this->db_connect_id ) ? $this->db_connect_id : false;
    }
---------


PLEASE give me a hand here, at least point me towards people who might
know more.  I need to figure this out.

A. Leigh
dash@rogue-penguin.com




Re: Authentication Failure with pg_pconnect

From
"David Busby"
Date:
this doc has something for you in the "notes" section.
http://www.edoceo.com/liberum/?doc=postgresql


----- Original Message -----
From: <dash@melchior.rogue-penguin.com>
To: <pgsql-php@postgresql.org>
Sent: Monday, August 18, 2003 10:30
Subject: [PHP] Authentication Failure with pg_pconnect


> I'm trying to get phpBB (php Bulletin Board System) running on my website
> but it's install program is having problems authenticating with
> postgreSQL.  I've tried to find out why it won't work and have pretty much
> narrowed things down to this one function in the install script.  If the
> following function doesn't seem flawed in any way, does anyone know why
> php my throw this error even though username and password is correct and
> user is logging in from localhost:
>
> ----
>  Warning: pg_connect() [function.pg-connect]: Unable to connect to
> PostgreSQL server: FATAL 1: IDENT authentication failed for user
> "postgres" . in /var/www/html/phpBB2/db/postgres7.php on line 79
> phpBB : Critical Error
>
> Could not connect to the database
> ----
>
> The line 79 it refers to is the line with the pg_pconnect call in the
> following function:
>
> ----
> var $db_connect_id;
> var $query_result;
> var $in_transaction = 0;
> var $row = array();
> var $rowset = array();
> var $rownum = array();
> var $num_queries = 0;
>
> //
> // Constructor
> //
> function sql_db($sqlserver, $sqluser, $sqlpassword, $database,
> $persistency = true)
> {
> $this->connect_string = "";
>
> if( $sqluser )
> {
> $this->connect_string .= "user=$sqluser ";
> }
>
> if( $sqlpassword )
> {
> $this->connect_string .= "password=$sqlpassword ";
> }
>
> if( $sqlserver )
> {
> if( ereg(":", $sqlserver) )
> {
> list($sqlserver, $sqlport) = split(":", $sqlserver);
> $this->connect_string .= "host=$sqlserver port=$sqlport ";
> }
> else
> {
> if( $sqlserver != "localhost" )
> {
> $this->connect_string .= "host=$sqlserver ";
> }
> }
> }
>
> if( $database )
> {
> $this->dbname = $database;
> $this->connect_string .= "dbname=$database";
> }
>
> $this->persistency = $persistency;
>
> $this->db_connect_id = ( $this->persistency ) ?
> pg_pconnect($this->connect_string) : pg_connect($this->connect_string);
>
> return ( $this->db_connect_id ) ? $this->db_connect_id : false;
> }
> ---------
>
>
> PLEASE give me a hand here, at least point me towards people who might
> know more.  I need to figure this out.
>
> A. Leigh
> dash@rogue-penguin.com
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)


Re: Authentication Failure with pg_pconnect

From
Gerd Terlutter
Date:
dash@www.rogue-penguin.com wrote:
> I'm trying to get phpBB (php Bulletin Board System) running on my website
> but it's install program is having problems authenticating with
> postgreSQL.  I've tried to find out why it won't work and have pretty much
> narrowed things down to this one function in the install script.  If the
> following function doesn't seem flawed in any way, does anyone know why
> php my throw this error even though username and password is correct and
> user is logging in from localhost:
>
> ----
>  Warning: pg_connect() [function.pg-connect]: Unable to connect to
> PostgreSQL server: FATAL 1: IDENT authentication failed for user
> "postgres" . in /var/www/html/phpBB2/db/postgres7.php on line 79
> phpBB : Critical Error
>
> Could not connect to the database
> ----
>
> The line 79 it refers to is the line with the pg_pconnect call in the
> following function:
>
> ----
>     var $db_connect_id;
>     var $query_result;
>     var $in_transaction = 0;
>     var $row = array();
>     var $rowset = array();
>     var $rownum = array();
>     var $num_queries = 0;
>
>     //
>     // Constructor
>     //
>     function sql_db($sqlserver, $sqluser, $sqlpassword, $database,
> $persistency = true)
>     {
>         $this->connect_string = "";
>
>         if( $sqluser )
>         {
>             $this->connect_string .= "user=$sqluser ";
>         }
>
>         if( $sqlpassword )
>         {
>             $this->connect_string .= "password=$sqlpassword ";
>         }
>
>         if( $sqlserver )
>         {
>             if( ereg(":", $sqlserver) )
>             {
>                 list($sqlserver, $sqlport) = split(":", $sqlserver);
>                 $this->connect_string .= "host=$sqlserver port=$sqlport ";
>             }
>             else
>             {
>                 if( $sqlserver != "localhost" )
>                 {
>                     $this->connect_string .= "host=$sqlserver ";
>                 }
>             }
>         }
>
>         if( $database )
>         {
>             $this->dbname = $database;
>             $this->connect_string .= "dbname=$database";
>         }
>
>         $this->persistency = $persistency;
>
>         $this->db_connect_id = ( $this->persistency ) ?
> pg_pconnect($this->connect_string) : pg_connect($this->connect_string);
>
>         return ( $this->db_connect_id ) ? $this->db_connect_id : false;
>     }
> ---------
>
>
> PLEASE give me a hand here, at least point me towards people who might
> know more.  I need to figure this out.
>
> A. Leigh
> dash@rogue-penguin.com
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>

have you tried echo $this->connect_string ?

--
--------------------------------------------------------
# Gerd Terlutter        | Mueller+Blanck Software GmbH #
# gerd@MplusB.de        | Gutenbergring 38             #
# gerd.terlutter@web.de | D-22848 Noderstedt           #
# tel:0171/6992579      | tel:+49 40 500 171-1         #
# Buero:040/500171-17   | fax:+49 40 500 171-71        #
--------------------------------------------------------



Re: Authentication Failure with pg_pconnect

From
"scott.marlowe"
Date:
On Mon, 18 Aug 2003 dash@melchior.rogue-penguin.com wrote:

> I'm trying to get phpBB (php Bulletin Board System) running on my website
> but it's install program is having problems authenticating with
> postgreSQL.  I've tried to find out why it won't work and have pretty much
> narrowed things down to this one function in the install script.  If the
> following function doesn't seem flawed in any way, does anyone know why
> php my throw this error even though username and password is correct and
> user is logging in from localhost:
>
> ----
>  Warning: pg_connect() [function.pg-connect]: Unable to connect to
> PostgreSQL server: FATAL 1: IDENT authentication failed for user
> "postgres" . in /var/www/html/phpBB2/db/postgres7.php on line 79
> phpBB : Critical Error

Stop, do not pass go, do not collect $200.00

Note the error is that "IDENT authentication failed"

Look up ident authentication:

http://www.postgresql.org/docs/7.3/static/auth-methods.html#AUTH-IDENT

Note that the username of the client (in this case, likely either httpd or
nobody) is what postgresql inspects.  your connection string doesn't
matter since postgresql is now looking for a user account by the name of
whatever user your web server runs under.

http://www.postgresql.org/docs/7.3/static/auth-methods.html

tells us the ways to authenticate, and you're likely looking at using
trust, password, md5.

md5 is a good choice, or, if no one else will be writing apps on the
machine, trust is fast, but there's no actual authentication going on with
that method.



Re: Authentication Failure with pg_pconnect

From
Bruno Wolff III
Date:
On Tue, Aug 19, 2003 at 09:50:33 -0600,
  "scott.marlowe" <scott.marlowe@ihs.com> wrote:
>
> Note that the username of the client (in this case, likely either httpd or
> nobody) is what postgresql inspects.  your connection string doesn't
> matter since postgresql is now looking for a user account by the name of
> whatever user your web server runs under.

This isn't exactly true. The id given in the connection string is
the one that is to be used for the postgres connection. The username of
the client is checked to see if it is an allowed system user for the
postgres user. It is common to force them to match, but other options
are possible.