Thread: Creating role using batch file in windows

Creating role using batch file in windows

From
Lukasz Brodziak
Date:
Hello,

What I need to do is create a batch file to be sent to client in which
I have to perform create role statement. Best thing would be if the
user didn't see what is happening in the console (is there a @echo off
equivalent for psql). Can anyone help me with this.

--
Łukasz Brodziak

Re: Creating role using batch file in windows

From
Thomas Kellerer
Date:
Lukasz Brodziak, 25.10.2010 15:49:
> Hello,
>
> What I need to do is create a batch file to be sent to client in which
> I have to perform create role statement. Best thing would be if the
> user didn't see what is happening in the console (is there a @echo off
> equivalent for psql). Can anyone help me with this.
>

The problem with a batch file is that you will need to provide the password for the superuser in clear text - which is
probablynot something you will want to do. 

But if that isn't a problem (and you actually know the superuser password of your client) then the following might
work:

------------- snip ---------------
@echo off
setlocal

set PGHOST=localhost
set PGUSER=postgres
set PGPASSWORD=the_super_secret_password

createuser role_1 1> nul 2>&1
createuser role_2 1> nul 2>&1
...

endlocal
------------- snip ---------------


Regards
Thomas

Re: Creating role using batch file in windows

From
Lukasz Brodziak
Date:
One more question. Does the SET PGPASSWORD sets pass for the role? If
not how to set the password for the role using the script provided.

2010/10/25 Thomas Kellerer <spam_eater@gmx.net>:
> Lukasz Brodziak, 25.10.2010 15:49:
>>
>> Hello,
>>
>> What I need to do is create a batch file to be sent to client in which
>> I have to perform create role statement. Best thing would be if the
>> user didn't see what is happening in the console (is there a @echo off
>> equivalent for psql). Can anyone help me with this.
>>
>
> The problem with a batch file is that you will need to provide the password
> for the superuser in clear text - which is probably not something you will
> want to do.
>
> But if that isn't a problem (and you actually know the superuser password of
> your client) then the following might work:
>
> ------------- snip ---------------
> @echo off
> setlocal
>
> set PGHOST=localhost
> set PGUSER=postgres
> set PGPASSWORD=the_super_secret_password
>
> createuser role_1 1> nul 2>&1
> createuser role_2 1> nul 2>&1
> ...
>
> endlocal
> ------------- snip ---------------
>
>
> Regards
> Thomas
>
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin
>



--
Łukasz Brodziak
II MU Bioinformatyka

Re: Creating role using batch file in windows

From
Thomas Kellerer
Date:
Lukasz Brodziak, 26.10.2010 08:58:
>> The problem with a batch file is that you will need to provide the password
>> for the superuser in clear text - which is probably not something you will
>> want to do.
>>
>> But if that isn't a problem (and you actually know the superuser password of
>> your client) then the following might work:
>>
>> ------------- snip ---------------
>> @echo off
>> setlocal
>>
>> set PGHOST=localhost
>> set PGUSER=postgres
>> set PGPASSWORD=the_super_secret_password
>>
>> createuser role_1 1>  nul 2>&1
>> createuser role_2 1>  nul 2>&1
>> ...
>>
>> endlocal
>> ------------- snip ---------------
>>
>>
> One more question. Does the SET PGPASSWORD sets pass for the role?

No, it sets the password for the superuser (the one that is needed to run createrole)

> If not how to set the password for the role using the script provided.

I don't think this can be specified with createuser, but you could use psql to run a single statememt.

Something like:

psql -c "create role new_role  with password 'new_roles_password'"

(You might need to play around with the quoting)
The environment variables are then used to establish the connection to the correct Postgres instance.

Regards
Thomas