Difference between revisions of "PostgreSQL"
Rafahsolis (talk | contribs) Tag: visualeditor |
Rafahsolis (talk | contribs) m (→Install) 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: | |
| − | + | host all all 127.0.0.1/32 md5 | |
| − | + | # IPv6 local connections: | |
| − | + | 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 ( | |
| − | + | 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> | |
==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 | |
| − | + | 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> | |
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';