By default the posgresql-server
install will create a postgres
Linux
user account and the server will run under that user. And also
PostgreSQL server will default have a DB user named postgres
as well,
and this DB user does not have a password! There is a distinction
between Linux user vs PostgreSQL database user, and mostly you need to
work with DB user only. After the install, you may change the password
for DB postgres
like this:
bash> sudo -u postgres psql
postgres=# \password postgres
# It should prompt you to enter password for `postgres` DB user.
When developing application, I like to create a dedicated DB user to
match my login account and create database there instead of using the
default postgres
user. You may create a new DB user that match to your
current Linux account user (eg: zemian
) like this:
bash> sudo -u postgres createdb -s -P zemian
# It should prompt you to enter password for `zemian` DB user. The `-s` option is to for superuser privileges.
Now that you have a DB user zemian
, you may create a default database
for it.
bash> createdb --username=zemian zemian
Now you may invoke psql
under zemian
Linux user session without any
parameters and it should log you in!
bash> psql
zemian=# CREATE TABLE test(id serial, name VARCHAR(20), message VARCHAR(500));
NOTICE: CREATE TABLE will create implicit sequence "test_id_seq" for serial column "test.id"
CREATE TABLE
zemian=# \d test
Table "public.test"
Column | Type | Modifiers
---------+------------------------+---------------------------------------------------
id | integer | not null default nextval('test_id_seq'::regclass)
name | character varying(20) |
message | character varying(500) |
zemian=# INSERT INTO test(name, message) VALUES('Hello', 'World');
INSERT 0 1
zemian=# INSERT INTO test(name, message) VALUES('Hello2', 'World2');
INSERT 0 1
zemian=# SELECT * FROM test;
id | name | message
----+--------+---------
1 | Hello | World
2 | Hello2 | World2
(2 rows)