Difference between revisions of "PostgreSQL"

From RHS Wiki
Jump to navigation Jump to search
Tag: visualeditor
Tag: visualeditor
Line 4: Line 4:
 
  sudo apt install postgresql postgresql-contrib
 
  sudo apt install postgresql postgresql-contrib
  
 +
== Data directory ==
 +
<code>/var/lib/postgresql</code>
 +
<br />
 
==Remote access==
 
==Remote access==
 
1.- Modify pg_hba.conf to add Client Authentication Record<br />
 
1.- Modify pg_hba.conf to add Client Authentication Record<br />
Line 10: Line 13:
 
Example:
 
Example:
 
  <nowiki> TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
 
  <nowiki> TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
+
 
# IPv4 local connections:
+
  # IPv4 local connections:
host    all            all            127.0.0.1/32            md5
+
  host    all            all            127.0.0.1/32            md5
# IPv6 local connections:
+
  # IPv6 local connections:
host    all            all            ::1/128                md5</nowiki>
+
  host    all            all            ::1/128                md5</nowiki>
  
 
2.- Change the Listen Address in postgresql.conf
 
2.- Change the Listen Address in postgresql.conf
Line 30: Line 33:
 
==CREATE TABLE / DROP TABLE==
 
==CREATE TABLE / DROP TABLE==
 
  <nowiki>
 
  <nowiki>
    CREATE TABLE table_name (
+
      CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
+
      column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
+
      column_name2 col_type (field_length),
    column_name3 col_type (field_length)
+
      column_name3 col_type (field_length)
);
+
  );
+
 
    DROP TABLE table_name;</nowiki>
+
      DROP TABLE table_name;</nowiki>
 
==List users==
 
==List users==
 
  \du
 
  \du
Line 60: Line 63:
 
  ALTER TABLE table_name DROP column_name5;
 
  ALTER TABLE table_name DROP column_name5;
  
== Dump database ==
+
==Dump database==
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
g_dump -C -h localhost -U scrapy scrapydb > scrapydb_dump.sql
 
g_dump -C -h localhost -U scrapy scrapydb > scrapydb_dump.sql
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Dump one database to another database ===
+
===Dump one database to another database===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
g_dump -C -h localhost -U scrapy scrapydb | psql -h ec2-54-77-228-53.eu-west-1.compute.amazonaws.com -U scrapy scrapydb
 
g_dump -C -h localhost -U scrapy scrapydb | psql -h ec2-54-77-228-53.eu-west-1.compute.amazonaws.com -U scrapy scrapydb
Line 109: Line 112:
 
Fix:
 
Fix:
 
  <nowiki>update pg_database set datallowconn = TRUE where datname = 'template0';
 
  <nowiki>update pg_database set datallowconn = TRUE where datname = 'template0';
\c template0
+
  \c template0
update pg_database set datistemplate = FALSE where datname = 'template1';
+
  update pg_database set datistemplate = FALSE where datname = 'template1';
drop database template1;
+
  drop database template1;
create database template1 with template = template0 encoding = 'UTF8';
+
  create database template1 with template = template0 encoding = 'UTF8';
update pg_database set datistemplate = TRUE where datname = 'template1';
+
  update pg_database set datistemplate = TRUE where datname = 'template1';
\c template1
+
  \c template1
update pg_database set datallowconn = FALSE where datname = 'template0';</nowiki>
+
  update pg_database set datallowconn = FALSE where datname = 'template0';</nowiki>

Revision as of 07:00, 3 May 2022

Install

Debian/Ubuntu

sudo apt update
sudo apt install postgresql postgresql-contrib

Data directory

/var/lib/postgresql

Remote access

1.- Modify pg_hba.conf to add Client Authentication Record
To allow remote access edit: /etc/postgresql/9.4/main/pg_hba.conf

sudo -i -u postgres -H nano /etc/postgresql/9.4/main/pg_hba.conf

Example:

 TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
  
  # IPv4 local connections:
  host    all             all             127.0.0.1/32            md5
  # IPv6 local connections:
  host    all             all             ::1/128                 md5

2.- Change the Listen Address in postgresql.conf

sudo -i -u postgres -H nano /etc/postgresql/9.4/main/postgresql.conf

set: listen_addresses = '*'

Crate users

From postgres shell account type:

createuser --interactive

To change the user password:

ALTER USER postgres WITH ENCRYPTED PASSWORD 'P@$$worD1';

Create database

From the postgres user shell:

createdb test1

CREATE TABLE / DROP TABLE

      CREATE TABLE table_name (
      column_name1 col_type (field_length) column_constraints,
      column_name2 col_type (field_length),
      column_name3 col_type (field_length)
  );
  
      DROP TABLE table_name;

List users

\du

List databases

\list or \l

List tables

\d
\dt

ADD, QUERY, DELETE from table

Add

INSERT INTO table_name (column_name1, column_name2, column_name3, column_name4) 
VALUES ('value1', 'value2', 'value3', 'value4');

Query

SELECT * FROM table_name;

Delete

DELETE FROM table_name WHERE column_name = 'value1';

Update

UPDATE table_name SET column_name1= 'value32' WHERE column_name2 = 'value2';

ALTER TABLE

ALTER TABLE table_name ADD column_name5 date;
ALTER TABLE table_name DROP column_name5;

Dump database

g_dump -C -h localhost -U scrapy scrapydb > scrapydb_dump.sql

Dump one database to another database

g_dump -C -h localhost -U scrapy scrapydb | psql -h ec2-54-77-228-53.eu-west-1.compute.amazonaws.com -U scrapy scrapydb

Import .sql dump file

psql databasename < data_base_dump
pg_restore -h localhost -U postgres -d mapper -1 /tmp/mapper_before_refactoring_2018_11_13.sql

Error creating UTF-8 database

02:39:35: Error: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) SUGERENCIA: Use the same encoding as in the template database, or use template0 as template.


Create user, database and password

  • Create the user
postgres@hostname:~$ createuser

Enter name of role to add: username Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) n Shall the new role be allowed to create more new roles? (y/n) n CREATE ROLE

  • Create the DB
postgres@hostname:~$ createdb databasename

CREATE DATABASE postgres@hostname:~$

  • Grant access for the user to the DB
postgres@hostname:~$ psql
postgres=# alter user username with encrypted password 'password';

ALTER ROLE

postgres=# grant all privileges on database databasename to username;

GRANT postgres@hostname:~$

Fix:

update pg_database set datallowconn = TRUE where datname = 'template0';
  \c template0
  update pg_database set datistemplate = FALSE where datname = 'template1';
  drop database template1;
  create database template1 with template = template0 encoding = 'UTF8';
  update pg_database set datistemplate = TRUE where datname = 'template1';
  \c template1
  update pg_database set datallowconn = FALSE where datname = 'template0';