Since I don't use PostgreSQL as often as MySQL, I tend to forget simple commands for administering the database. Hopefully these notes will help as reference when working with PostgreSQL:
-
Login as "postgres" (SuperUser) to start using database:
# su - postgresCreate a new database:
$ createdb mydbDrop database:
$ dropdb mydbAccess database:
$ psql mydbGet help:
mydb=# \hQuit:
mydb=# \qRead command from file:
mydb=# \i input.sqlTo dump a database:
$ pg_dump mydb > db.outTo reload the database:
$ psql -d database -f db.outDump all database:
# su - postgres # pg_dumpall > /var/lib/pgsql/backups/dumpall.sqlRestore database:
# su - postgres # psql -f /var/lib/pgsql/backups/dumpall.sql mydbShow databases:
#psql -l or mydb=# \l;Show users:
mydb=# SELECT * FROM "pg_user";Show tables:
mydb=# SELECT * FROM "pg_tables";Set password:
mydb=# UPDATE pg_shadow SET passwd = 'new_password' where usename = 'username';Clean all databases (Should be done via a daily cron):
$ vacuumdb --quiet --all












Installing PL/pgSQL
Reference:
OnLamp
Set up remote access
Add the below line to /var/lib/pgsql/data/postgresql.conf to make postgresql database listen to external connections:
listen_addresses = '*'Edit /var/lib/pgsql/data/pg_hba.conf and add the appropriate permissions:
host all all 0.0.0.0/0 md5change postgresql database owner
template1=# ALTER DATABASE <dbname> OWNER TO <dbuser>;setup postgresql database to use passwords to connect
Edit "/var/lib/pgsql/data/pg_hba.conf" with:
local all all md5host all all 127.0.0.1/32 md5
local - socket connection
host - tcp connection
To connect via socket:
$ psql -U <username> -d <dbname>To connect via tcp:
$ psql -U <username> -h <hostname> -d <dbname>password reset
template1=# ALTER USER <dbuser> WITH PASSWORD '<password>';Viewing owner and permissions
\d -- view the owner\dp -- view permissions
create user and grant permissions
Create db user and grant permission to create databases.
# adduser <dbuser># su - postgres
$ createuser -d -S -R <dbuser>
Post new comment