Update 'PostgreSqlUbuntu'
parent
c8a5abfab2
commit
735f43352e
127
PostgreSqlUbuntu.md
Normal file
127
PostgreSqlUbuntu.md
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
# Install PostgreSQL
|
||||||
|
|
||||||
|
`sudo apt install postgresql postgresql-contrib`
|
||||||
|
|
||||||
|
response:
|
||||||
|
The following additional packages will be installed:\
|
||||||
|
libllvm10 postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common ssl-cert sysstat\
|
||||||
|
Suggested packages:\
|
||||||
|
postgresql-doc postgresql-doc-12 libjson-perl openssl-blacklist isag\
|
||||||
|
The following NEW packages will be installed:\
|
||||||
|
libllvm10 postgresql postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common\
|
||||||
|
postgresql-contrib ssl-cert sysstat\
|
||||||
|
0 upgraded, 9 newly installed, 0 to remove and 10 not upgraded.
|
||||||
|
|
||||||
|
After installing PostgreSQL, the commands below can be used to stop, start, enable and check its status:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo systemctl stop postgresql.service
|
||||||
|
sudo systemctl start postgresql.service
|
||||||
|
sudo systemctl enable postgresql.service
|
||||||
|
sudo systemctl status postgresql.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Viewing the server version\
|
||||||
|
`/usr/lib/postgresql/12/bin/postgres -V`\
|
||||||
|
response:\
|
||||||
|
postgres (PostgreSQL) 12.2 (Ubuntu 12.2-4)
|
||||||
|
|
||||||
|
## Create PostgreSQL Linux User Password
|
||||||
|
|
||||||
|
After installing PostgreSQL, it’s a good idea to create / change the default PostgreSQL user password
|
||||||
|
|
||||||
|
`sudo passwd postgres`
|
||||||
|
|
||||||
|
You should be prompted to create a new Linux password for postgres user.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
New password:
|
||||||
|
Retype new password:
|
||||||
|
passwd: password updated successfully
|
||||||
|
```
|
||||||
|
|
||||||
|
## CONNECTIONS AND AUTHENTICATION
|
||||||
|
|
||||||
|
### postgresql.conf
|
||||||
|
|
||||||
|
Most global configuration settings are stored in postgresql.conf, which is created automatically when you install PostgreSQL. Open this file in your preferred text editor:\
|
||||||
|
`sudo nano /etc/postgresql/10/main/postgresql.conf`
|
||||||
|
|
||||||
|
By default, Postgres only listens on localhost. However, by editing the listen_addresses-section and replacing localhost with an IP, you can force Postgres to listen on another IP. Use '*' to listen on all IP addresses, restrict access via firewall.\
|
||||||
|
`listen_addresses= '*'`
|
||||||
|
|
||||||
|
### pg_hba.conf
|
||||||
|
|
||||||
|
It’s now time to open the (in)famous pg_hba.conf configuration file, located at /etc/postgresql/10/main/pg_hba.conf:
|
||||||
|
|
||||||
|
`sudo nano /etc/postgresql/10/main/pg_hba.conf`
|
||||||
|
|
||||||
|
HBA stands for host-based authentication. Basically, this file is used to control how PostgreSQL users are authenticated.\
|
||||||
|
`host all all 127.0.0.1/32 md5`\
|
||||||
|
This line allows "all" users to login using TCP/IP ("host") from the localhost "127.0.0.1/32" to "all" databases, if they succeed in password authentication using the "md5" method. There are more password authentication methods (md5, scram-sha-256, gss, ldap, …) than we can cover, so let’s just get back to simpler examples.
|
||||||
|
|
||||||
|
In most cases the access is restricted to localhost and the clients vlan e.g.:
|
||||||
|
|
||||||
|
```ini
|
||||||
|
# existing entry, allows connections from localhost
|
||||||
|
host all all 127.0.0.1/32 md5
|
||||||
|
|
||||||
|
# new entry to allow connections from 192.168.101.1/24 subnet,
|
||||||
|
host all all 192.168.101.1/24 md5
|
||||||
|
|
||||||
|
# ip of your webserver
|
||||||
|
host all all xxx.xxx.xxx.xxx/32 md5
|
||||||
|
```
|
||||||
|
|
||||||
|
## App database setup
|
||||||
|
|
||||||
|
let’s connect as the superuser “postgres” to make the changes:\
|
||||||
|
`sudo su -l postgres`
|
||||||
|
|
||||||
|
Then use the psql command in an interactive shell when you want to create and manage PostgreSQL databases:\
|
||||||
|
`psql`
|
||||||
|
|
||||||
|
On psql shell, run below command to change database admin password:\
|
||||||
|
`alter user postgres password 'new_db_admin_password';`
|
||||||
|
|
||||||
|
Create a admin user called tethys_admin with new password:\
|
||||||
|
`postgres=# create user tethys_admin with encrypted password 'new_password_here';`
|
||||||
|
|
||||||
|
Create an app user called tethys_app with new password:\
|
||||||
|
`postgres=# create user tethys_app with encrypted password 'new_password_here';`
|
||||||
|
|
||||||
|
then create a database called tethys via psql:\
|
||||||
|
`postgres=# create database tethys;`\
|
||||||
|
use postgres ist default owner of db tethys
|
||||||
|
|
||||||
|
exit psql:\
|
||||||
|
`\q`
|
||||||
|
|
||||||
|
and re-login into tethys db:\
|
||||||
|
`psql -d tethys -U postgres -p 5432`
|
||||||
|
|
||||||
|
create a schemma 'gba' for all tethys tabels with full authorization for the user 'tethys_admin':\
|
||||||
|
`tethys=# CREATE SCHEMA IF NOT EXISTS gba AUTHORIZATION tethys_admin;`
|
||||||
|
|
||||||
|
grant select, insert, update and delete privileges for the user 'tethys_app':\
|
||||||
|
|
||||||
|
```sql
|
||||||
|
grant usage on schema gba to tethys_app;
|
||||||
|
|
||||||
|
grant select, insert, update, delete on all tables in schema gba to tethys_app;
|
||||||
|
alter default privileges for role tethys_admin in schema gba grant select, insert, update, delete on tables to tethys_app;
|
||||||
|
|
||||||
|
grant usage on all sequences in schema gba to tethys_app;
|
||||||
|
alter default privileges for role tethys_admin in schema gba grant usage on sequences to tethys_app;
|
||||||
|
|
||||||
|
grant execute on all functions in schema gba to tethys_app;
|
||||||
|
alter default privileges for role tethys_admin in schema gba grant execute on functions to tethys_app;
|
||||||
|
```
|
||||||
|
|
||||||
|
exit psql:\
|
||||||
|
`\q`
|
||||||
|
|
||||||
|
switch back to your os user:\
|
||||||
|
`exit`
|
||||||
|
|
||||||
|
[go mack to main installation](https://github.com/geolba/tethys/wiki#step-4-download-and-install-tethys)
|
Loading…
Reference in New Issue
Block a user