PostgreSQL: Difference between revisions
iwu |
mNo edit summary |
||
(11 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
= Initial set-up = | = Initial set-up = | ||
Install | Install (the default is v10.23 as of 2023-10-13) | ||
{{testedon|RHEL 8.8 (Ootpa)|2023-10-13}} | {{testedon|RHEL 8.8 (Ootpa)|2023-10-13}} | ||
Line 8: | Line 8: | ||
$ sudo yum module list | grep postgresql | $ sudo yum module list | grep postgresql | ||
$ sudo yum install @postgresql | $ sudo yum install @postgresql | ||
</syntaxhighlight> | |||
to install a specific version | |||
<syntaxhighlight lang="bash"> | |||
$ sudo yum install @postgresql:9.6 | |||
</syntaxhighlight> | |||
for the initial set-up | |||
<syntaxhighlight lang="bash"> | |||
$ sudo postgresql-setup --initdb | $ sudo postgresql-setup --initdb | ||
* Initializing database in '/var/lib/pgsql/data' | |||
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log | |||
</syntaxhighlight> | |||
for setting up a password for the postgres account | |||
<syntaxhighlight lang="bash"> | |||
$ sudo passwd postgres | |||
Changing password for user postgres. | |||
New password: | |||
Retype new password: | |||
passwd: all authentication tokens updated successfully. | |||
</syntaxhighlight> | |||
enable PostgreSQL server at the boot time | |||
<syntaxhighlight lang="bash"> | |||
$ sudo systemctl enable postgresql | |||
</syntaxhighlight> | |||
= Prerequisite for psql console = | |||
change to postgres user account | |||
<syntaxhighlight lang="bash"> | |||
$ sudo -iu postgres | |||
</syntaxhighlight> | |||
log into postgres console | |||
<syntaxhighlight lang="bash"> | |||
$ psql | |||
psql (10.23) | |||
Type "help" for help. | |||
postgres=# | |||
</syntaxhighlight> | |||
= Configuration = | |||
In order to force password when logging into postgresql console change <code>ident</code> to <code>scram-sha-256</code> in <code>/var/lib/pgsql/data/pg_hba.conf</code> for IP local connections entries. This is the HBA (Host-based Authentication) configuration file for PostgreSQL. Restart afterwards. | |||
== Create a new PostgreSQL user account and a new DB == | |||
Create a Linux user account | |||
<syntaxhighlight lang="bash"> | |||
$ sudo useradd puser | |||
$ sudo passwd puser | |||
</syntaxhighlight> | |||
log in as the admin PostgreSQL user | |||
<syntaxhighlight lang="bash"> | |||
$ sudo -iu postgres | |||
</syntaxhighlight> | |||
create a new PostgreSQL role for puser Linux user | |||
<syntaxhighlight lang="bash"> | |||
$ createuser --interactive --pwprompt | |||
</syntaxhighlight> | |||
while still logged in as postgres user (admin PostgreSQL user) create a new database named appdb for puser | |||
<syntaxhighlight lang="bash"> | |||
$ createdb -O puser appdb | |||
</syntaxhighlight> | </syntaxhighlight> | ||
= Usage = | |||
Log into PostgreSQL console using a specific user and DB | |||
<syntaxhighlight lang="bash"> | |||
$ sudo -iu puser | |||
$ psql -d appdata -U puser | |||
</syntaxhighlight> | |||
Create a new table | |||
<syntaxhighlight lang="psql"> | |||
puser=> CREATE TABLE demo( | |||
id serial PRIMARY KEY, | |||
email VARCHAR (100) UNIQUE NOT NULL, | |||
name VARCHAR (50) UNIQUE NOT NULL | |||
); | |||
</syntaxhighlight> | |||
{| class="wikitable sortable" | |||
|+ PostgreSQL console commands | |||
|- | |||
! Command !! Action !! Description or Notes | |||
|- | |||
| class="cli" | \q || Quit || | |||
|- | |||
| class="cli" | \conninfo || Connection information || Get current connection information | |||
|- | |||
| class="cli" | \d || List || List tables, views, and sequences | |||
|- | |||
| class="cli" | \dt || List tables || | |||
|} | |||
<syntaxhighlight lang="bash"> | |||
</syntaxhighlight> | |||
= Resources = | = Resources = | ||
[[Introduction to PostgreSQL for MySQL Users]] | [[Introduction to PostgreSQL for MySQL Users]] |
Latest revision as of 15:06, 13 October 2023
Initial set-up
Install (the default is v10.23 as of 2023-10-13)
- Last tested on 2023-10-13 (RHEL 8.8 (Ootpa))
$ sudo yum module list | grep postgresql
$ sudo yum install @postgresql
to install a specific version
$ sudo yum install @postgresql:9.6
for the initial set-up
$ sudo postgresql-setup --initdb
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
for setting up a password for the postgres account
$ sudo passwd postgres
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
enable PostgreSQL server at the boot time
$ sudo systemctl enable postgresql
Prerequisite for psql console
change to postgres user account
$ sudo -iu postgres
log into postgres console
$ psql
psql (10.23)
Type "help" for help.
postgres=#
Configuration
In order to force password when logging into postgresql console change ident
to scram-sha-256
in /var/lib/pgsql/data/pg_hba.conf
for IP local connections entries. This is the HBA (Host-based Authentication) configuration file for PostgreSQL. Restart afterwards.
Create a new PostgreSQL user account and a new DB
Create a Linux user account
$ sudo useradd puser
$ sudo passwd puser
log in as the admin PostgreSQL user
$ sudo -iu postgres
create a new PostgreSQL role for puser Linux user
$ createuser --interactive --pwprompt
while still logged in as postgres user (admin PostgreSQL user) create a new database named appdb for puser
$ createdb -O puser appdb
Usage
Log into PostgreSQL console using a specific user and DB
$ sudo -iu puser
$ psql -d appdata -U puser
Create a new table
puser=> CREATE TABLE demo(
id serial PRIMARY KEY,
email VARCHAR (100) UNIQUE NOT NULL,
name VARCHAR (50) UNIQUE NOT NULL
);
Command | Action | Description or Notes |
---|---|---|
\q | Quit | |
\conninfo | Connection information | Get current connection information |
\d | List | List tables, views, and sequences |
\dt | List tables |