Thread: psql and password

psql and password

From
Rudi Starcevic
Date:
Hi,

I'm wondering how I can create a database for a user from within a script.
I have Pg in 'password' mode.
To create this database I'm trying to pass in the password from the script.
For example :

echo myPgPassword | /usr/local/pgslq/bin/createdb yourNewPgDatabase

But it's not working.
I'm still prompted for the password.

My goal is to create the database then change ownership of the database.
The user can then log straight in using phpPgAdmin.

Can you see where I'm going wrong ?
Any suggestions ?
Perhaps I need to use 'Expect' or something ( this is a Debian box )

Thanks
Kind Regards
Rudi.





Re: psql and password

From
Rudi Starcevic
Date:
Hi,

Thanks for the suggestions,

I ended up using Perl and DBI.
First I create a new database,
then create a new user,
then change owership of the database to the new user,
then create and entry for Apache's htpasswd facility.

Then the new user logs into the new database with there new htpasswd 
account via phpPgAdmin.
Thanks again.
For those interested here's my script.

Cheers
Rudi.

Script :
#!/usr/bin/perl -w

use DBI;

$DBH = DBI ->connect("dbi:Pg:dbname=oasis;host=moon","postgres","rudi2000");


foreach $_ (@ARGV)
{   # get name and pwd   @data = split(/:/,$_);   $thisname = $data[0];   $thispwd  = $data[1];     # create a new user
 $sql = $DBH->prepare("CREATE USER $thisname WITH PASSWORD '$thispwd' 
 
NOCREATEDB NOCREATEUSER;");   $sql->execute();
   # create a new database   $sql = $DBH->prepare("CREATE DATABASE $thisname WITH 
TEMPLATE=template0;");   $sql->execute();
   # change database ownership   $sql = $DBH->prepare("UPDATE pg_database SET datdba = (SELECT 
usesysid FROM pg_shadow WHERE usename = '$thisname') WHERE datname = 
'$thisname';");   $sql->execute();     # create htpaswd account   system("/usr/local/apache/bin/htpasswd -b
/home/realmz/phpPgAdmin
 
$thisname $thispwd >> /root/scripts/htpasswd_log.txt 2>&1");
}

$DBH->disconnect;






Rudi Starcevic wrote:

> Hi,
>
> I'm wondering how I can create a database for a user from within a 
> script.
> I have Pg in 'password' mode.
> To create this database I'm trying to pass in the password from the 
> script.
> For example :
>
> echo myPgPassword | /usr/local/pgslq/bin/createdb yourNewPgDatabase
>
> But it's not working.
> I'm still prompted for the password.
>
> My goal is to create the database then change ownership of the database.
> The user can then log straight in using phpPgAdmin.
>
> Can you see where I'm going wrong ?
> Any suggestions ?
> Perhaps I need to use 'Expect' or something ( this is a Debian box )





Re: psql and password

From
Oliver Elphick
Date:
On Thu, 2002-03-28 at 01:47, Rudi Starcevic wrote:

> To create this database I'm trying to pass in the password from the script.
> For example :
>
> echo myPgPassword | /usr/local/pgslq/bin/createdb yourNewPgDatabase

Set the environment variable:

PGPASSWORD=myPgPassword /usr/local/pgslq/bin/createdb yourNewPgDatabase


--
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
    "Thou wilt keep him in perfect peace, whose mind is       stayed on thee; because he trusteth in thee."
                           Isaiah 26:3,4