Changes

Jump to navigation Jump to search
3,267 bytes added ,  19:19, 6 November 2024
m
Line 1: Line 1: −
== Install ==
+
==Install==
=== Debian/Ubuntu ===
+
===Debian/Ubuntu===
  sudo apt-get update
+
  sudo apt update
  sudo apt-get install postgresql postgresql-contrib
+
  sudo apt install postgresql postgresql-contrib
   −
== Remote access ==
+
==Data directory==
 +
<code>/var/lib/postgresql</code>
 +
<br />
 +
==Remote access==
 
1.- Modify pg_hba.conf to add Client Authentication Record<br />
 
1.- Modify pg_hba.conf to add Client Authentication Record<br />
 
To allow remote access edit: /etc/postgresql/9.4/main/pg_hba.conf
 
To allow remote access edit: /etc/postgresql/9.4/main/pg_hba.conf
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
  sudo -i -u postgres -H nano /var/lib/pgsql/data/postgresql.conf
+
  sudo -i -u postgres -H nano /etc/postgresql/9.4/main/postgresql.conf
 
set: listen_addresses = '*'
 
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==
 +
<nowiki>
 +
      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;</nowiki>
 +
 +
=== Drop all tables ===
 +
<syntaxhighlight lang="sql">
 +
DO $$ DECLARE
 +
    r RECORD;
 +
BEGIN
 +
    FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
 +
        EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(r.tablename) || ' CASCADE';
 +
    END LOOP;
 +
END $$;
 +
</syntaxhighlight>
 +
 +
==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==
 +
<syntaxhighlight lang="bash">
 +
g_dump -C -h localhost -U scrapy scrapydb > scrapydb_dump.sql
 +
</syntaxhighlight>
 +
 +
===Dump one database to another database===
 +
<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
 +
</syntaxhighlight>
 +
 +
==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<br />
 +
 +
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:
 +
<nowiki>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';</nowiki>

Navigation menu