I have just installed postgres 8.4 on Ubuntu 9.10 and it has never asked me to create a superuser. Is there a default superuser and its password? If not, how do I create a new one?
5 Answers
CAUTION The answer about changing the UNIX password for "postgres" through "$ sudo passwd postgres" is not preferred, and can even be DANGEROUS!
This is why: By default, the UNIX account "postgres" is locked, which means it cannot be logged in using a password. If you use "sudo passwd postgres", the account is immediately unlocked. Worse, if you set the password to something weak, like "postgres", then you are exposed to a great security danger. For example, there are a number of bots out there trying the username/password combo "postgres/postgres" to log into your UNIX system.
What you should do is follow Chris James's answer:
sudo -u postgres psql postgres # \password postgres Enter new password: To explain it a little bit. There are usually two default ways to login to PostgreSQL server:
By running the "psql" command as a UNIX user (so-called IDENT/PEER authentication), e.g.:
sudo -u postgres psql. Note thatsudo -udoes NOT unlock the UNIX user.by TCP/IP connection using PostgreSQL's own managed username/password (so-called TCP authentication) (i.e., NOT the UNIX password).
So you never want to set the password for UNIX account "postgres". Leave it locked as it is by default.
Of course things can change if you configure it differently from the default setting. For example, one could sync the PostgreSQL password with UNIX password and only allow local logins. That would be beyond the scope of this question.
- 17so, how do you lock user postgres back?bettersayhello– bettersayhello2012-07-04 04:30:32 +00:00Commented Jul 4, 2012 at 4:30
- 4@ultrajohn - depends on distribution you use, but you can edit /etc/passwd and put * instead of the passwordlzap– lzap2012-09-12 09:50:55 +00:00Commented Sep 12, 2012 at 9:50
- 4
/etc/shadowis where the password is kept @lzap.Gringo Suave– Gringo Suave2012-09-20 18:56:30 +00:00Commented Sep 20, 2012 at 18:56 - 2Right, you can either set /sbin/nologin in /etc/passwd or put * instead of the password in /etc/shadow.lzap– lzap2012-09-21 09:37:52 +00:00Commented Sep 21, 2012 at 9:37
- 43passwd --lock postgresStéphane– Stéphane2013-07-25 18:04:07 +00:00Commented Jul 25, 2013 at 18:04
Enter on the command line:
$ sudo -u postgres psql postgres postgres=# \password postgres You'll see:
Enter new password: Enter it again: - 10This is what's needed to use a tool like pgadminIII (when setting up a server profile) immediately after Postgres itself is installed. Thanks!limist– limist2011-07-10 16:55:11 +00:00Commented Jul 10, 2011 at 16:55
You manipulate postgres through the user postgres, as so:
# su - postgres $ createdb mydb $ psql -s mydb # create user someuser password 'somepassword'; # GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser; - 5@ThierryLam You must be root to
suto the postgres user without entering a password. On most systems the Postgres Unix account is locked (no password will work), which means only root maysuto that account.voretaq7– voretaq72013-11-07 22:59:02 +00:00Commented Nov 7, 2013 at 22:59 - 2Use
sudoinstead ofsu.reinierpost– reinierpost2014-08-08 13:30:20 +00:00Commented Aug 8, 2014 at 13:30 - 12I had to run
sudo su - postgres:\Jim Schubert– Jim Schubert2014-10-08 14:08:02 +00:00Commented Oct 8, 2014 at 14:08 - 3@Jim Schubert: you can also run
sudo -u postgres.reinierpost– reinierpost2014-11-24 09:28:30 +00:00Commented Nov 24, 2014 at 9:28 - 2sudo -u postgres psql - works also so you can do it in one step.Ominus– Ominus2017-11-20 13:35:11 +00:00Commented Nov 20, 2017 at 13:35
In Windows, do the following (IMPORTANT: Use a Windows administrator account):
After installation, open
<PostgreSQL PATH>\data\pg_hba.conf.Modify these two lines, and change "md5" to "trust":
host all all 127.0.0.1/32 md5host all all ::1/128 md5Restart the PostgreSQL service (might not be necessary).
(Optional) Open a command prompt, and change code page to 1252:
cmd.exe /c chcp 1252Log in to PostgreSQL. Non password will be needed (notice the uppercase -U parameter):
psql -U postgres(Optional, recommended for security reasons) Change the
postgresuser's password:\password postgresand change "trust" back to "md5" in
pg_hba.conf.
If you are trying to access the PostgreSQL shell, you can type:
psql -U postgres my_database
Where my_database is your database name.