I'm running PostgreSQL on mt Windows 7 machine. To run a database I type:
C:\psql -Upostgres mydb
and this works, but it would be nice if I could leave off the -U
stuff, but then Postgres thinks I'm trying to log in as 'Eric', since that is my user profile.
So I need to add a user to Postgres, obviously. But how? If I try:
C:\createuser Eric
Postgres thinks I'm trying to add a user Eric as the user Eric whi开发者_Python百科ch fails. Adding the -U
flag doesn't seem to work here.
What am I missing? My command window is in administrator mode, and there is no sudo
available, obviously.
In pgadmin you can create a new "Login Role" and name it Eric and give it permissions graphically, or from command line you can do something like this
psql -U postgres -c "CREATE ROLE Eric LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE;" mydb
see http://developer.postgresql.org/pgdocs/postgres/sql-createrole.html for information on the CREATE ROLE options.
Just to add more information. From official documentation: you can specify the user under which createuser utility logs in to postgres via environment variable:
PGUSER
One liner for powershell:
& { $env:PGUSER="postgres"; .\createuser.exe Eric}
The documentation for createuser
indicates that a -U
switch is accepted:
-U username
--username username
User name to connect as (not the user name to create).
This is what I would expect to use (although I've never tried to set up PostgreSQL on Windows, only on unices).
This worked for me --username Shweta;
Now to create a database create database db;
The simplest case is to use the Windows command line and as I understand that the user posgres
is present:
psql -U postgres -c "CREATE ROLE shpp;"
psql -U postgres -c "ALTER ROLE shpp WITH LOGIN;"
psql -U postgres -c "ALTER USER shpp CREATEDB;"
psql -U postgres -c "ALTER USER shpp WITH PASSWORD 'shpp';"
In my shpp
example, this is the name and password of the new user.
精彩评论