Programmatically changing passwords

Programmatically changing passwords

am 10.08.2006 06:12:41 von David Leangen

Hello!

I am trying to build an RPM package that will put my Postgres
installation into a known (usable) state, without requiring any
interaction.

To this effect, I need to do the following:

1. set password for superuser
2. createuser user
3. createdb -O user dbname


No problems with (3) above. But for (1) and (2), how can I set the
passwords programmatically, since createuser does not let me do this
(requires interactive prompt from user)?


Thank you!


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Re: Programmatically changing passwords

am 10.08.2006 06:54:54 von Tom Lane

David Leangen writes:
> I am trying to build an RPM package that will put my Postgres
> installation into a known (usable) state, without requiring any
> interaction.

> To this effect, I need to do the following:

> 1. set password for superuser

Basically, you can't. The entire concept of RPM is built around
the assumption that there is no user interaction during an RPM
install or update. (Do "yum update" after not having done it for
awhile ... watch several hundred package updates go by ... now
imagine that each one of those felt that it could demand some input
from you. Multiply by 10 if doing a system install from scratch.)

The standard RPM-ization of Postgres does not actually have any
superuser password set at all: you pretty much have to be root
to get into the database the first time. Considering you also
have to be root to install the package or start the service,
I don't see any fundamental problem with that.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

Re: Programmatically changing passwords

am 10.08.2006 06:59:52 von Joshua Drake

David Leangen wrote:
>
> Hello!
>
> I am trying to build an RPM package that will put my Postgres
> installation into a known (usable) state, without requiring any
> interaction.
>
> To this effect, I need to do the following:
>
> 1. set password for superuser
> 2. createuser user
> 3. createdb -O user dbname
>
>
> No problems with (3) above. But for (1) and (2), how can I set the
> passwords programmatically, since createuser does not let me do this
> (requires interactive prompt from user)?

ALTER USER foo with encrypted password 'bar';
CREATE USER foo;
CREATE DATABASE bar owner foo;


>
>
> Thank you!
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq
>


--

=== The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive PostgreSQL solutions since 1997
http://www.commandprompt.com/



---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Re: Programmatically changing passwords

am 10.08.2006 07:11:04 von David Leangen

Thank you. Reply below.

On Aug 10, 2006, at 13:54, Tom Lane wrote:

> David Leangen writes:
>> I am trying to build an RPM package that will put my Postgres
>> installation into a known (usable) state, without requiring any
>> interaction.
>
>> To this effect, I need to do the following:
>
>> 1. set password for superuser
>
> Basically, you can't. The entire concept of RPM is built around
> the assumption that there is no user interaction during an RPM
> install or update.

Yes, that is my point. After having installed the standard postgresql
package, I would then install my custom-postgres-config package. In
this package, I tinker with the default configuration so I can put
postgres into a known state programmatically, without any user
interaction.

The problem is that createuser doesn't allow for this: it prompts the
user for a password, which does not work in this situation, as you
pointed out.



---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Re: Programmatically changing passwords

am 10.08.2006 07:12:22 von David Leangen

Thank you! Reply below.

On Aug 10, 2006, at 13:59, Joshua D. Drake wrote:

> David Leangen wrote:
>> Hello!
>> I am trying to build an RPM package that will put my Postgres
>> installation into a known (usable) state, without requiring any
>> interaction.
>> To this effect, I need to do the following:
>> 1. set password for superuser
>> 2. createuser user
>> 3. createdb -O user dbname
>> No problems with (3) above. But for (1) and (2), how can I set the
>> passwords programmatically, since createuser does not let me do
>> this (requires interactive prompt from user)?
>
> ALTER USER foo with encrypted password 'bar';
> CREATE USER foo;
> CREATE DATABASE bar owner foo;


That makes perfect sense, but how can I do this from the shell? Is
there an easy way to wrap these so I can send them to postgres from
the shell?


Thank you!



---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Re: Programmatically changing passwords

am 10.08.2006 07:36:17 von Tom Lane

David Leangen writes:
> Yes, that is my point. After having installed the standard postgresql
> package, I would then install my custom-postgres-config package. In
> this package, I tinker with the default configuration so I can put
> postgres into a known state programmatically, without any user
> interaction.

> The problem is that createuser doesn't allow for this: it prompts the
> user for a password, which does not work in this situation, as you
> pointed out.

I rather doubt that: the default RPM installation uses ident
authentication. Which has got plenty of downsides, but unexpected
password prompts is not one of them. Perhaps you are making your
configuration changes in a bad order?

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Re: Programmatically changing passwords

am 10.08.2006 07:36:36 von Thomas Pundt

On Thursday 10 August 2006 07:12, David Leangen wrote:
| > ALTER USER foo with encrypted password 'bar';
| > CREATE USER foo;
| > CREATE DATABASE bar owner foo;
|
| That makes perfect sense, but how can I do this from the shell? Is
| there an easy way to wrap these so I can send them to postgres from
| the shell?

yes; the following should work:

#!/bin/bash
psql <<_EOT_
ALTER USER foo with encrypted password 'bar';
CREATE USER foo;
CREATE DATABASE bar owner foo;
_EOT_


Ciao,
Thomas

--
Thomas Pundt ---- http://rp-online.de/ ----

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Re: Programmatically changing passwords

am 10.08.2006 08:06:52 von David Leangen

Awesome, thank you!

That is exactly what I needed.

Didn't know it was that simple... duh!


On Aug 10, 2006, at 14:36, Thomas Pundt wrote:

> On Thursday 10 August 2006 07:12, David Leangen wrote:
> | > ALTER USER foo with encrypted password 'bar';
> | > CREATE USER foo;
> | > CREATE DATABASE bar owner foo;
> |
> | That makes perfect sense, but how can I do this from the shell? Is
> | there an easy way to wrap these so I can send them to postgres from
> | the shell?
>
> yes; the following should work:
>
> #!/bin/bash
> psql <<_EOT_
> ALTER USER foo with encrypted password 'bar';
> CREATE USER foo;
> CREATE DATABASE bar owner foo;
> _EOT_
>
>
> Ciao,
> Thomas
>
> --
> Thomas Pundt ---- http://rp-online.de/
> ----
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend