PostgreSQL
Deployment
Installing PostgreSQL on Fedora
sudo dnf install postgresql
Running on MacOS with Homebrew
Homebrew creates data directories in /usr/local/var/postgres
.
To get launchd to start postgresql now and restart it at login:
brew services start postgresql
Or, if you don’t want/need a background service you can just run:
pg_ctl -D /usr/local/var/postgres start
Then to connect:
psql -d postgres
Using the psql
command line tool
Connecting to an instance with psql
To connect to a PostgreSQL instance, first install the psql
command line tool for your operating system. Then:
psql --password --host dbhost1 --port 5432 --username scott megacorp
psql -W -h dbhost1 -p 5432 -U scott megacorp
Special commands you need to know
Once you’re connected to the database, execute SQL or use the following commands:
\dt
- list tables\d table_name
- describe table\l
- list databases\c database_name
- connect to database\q
- quit
Users and permissions
List all roles:
\du
Create user:
CREATE USER james WITH ENCRYPTED PASSWORD 'l0velypass';
Create a database:
CREATE DATABASE testdb;
Grant privileges:
GRANT ALL PRIVILEGES ON DATABASE testdb TO james;
Troubleshooting
“ERROR: could not serialize access due to read/write dependencies among transactions … Reason code: Canceled on identification as a pivot, during write … The transaction might succeed if retried.”
- Possible transaction conflict. Try using
SELECT ... FOR UPDATE SKIP LOCKED
within a transaction to ensure that any rows to be modified are locked first and the client is not blocked waiting for rows locked by other transactions.