Upgrade postgresql 8.4.13 to postrgesl 9.2 centos 5

postgresql  vai a:  PostgreSQL nel blog 

Esempio di upgrade di postgresql dalla versione 8.4.13 alla versione 9.2.6 in Centos 5.8.  L’upgrade di versione necessita della fase di dump/restore oppure dell’utilizzo di pg_upgrade ( questo dalla versione 9.0) per consentire la migrazione della base dati alla nuova versione.  Per poter utilizzare il pg_update deve essere supportata l’esecuzione in parallelo di postgresql come avviene in debian o Centos 6. Centos 5 putroppo non la supporta pertanto sarà necessario utilizzare il dump/restore.

Creare una directory di backups, procedere al dump degli oggetti globali (roles e tablespaces) e di tutto il server, volendo si possono salavare in automatico i singoli db:

mkdir /home/pgsqlbck
chown postgres:postgres /home/psqlbck
su - postgres
pg_dumpall --globals-only > /home/pgsqlbck/dump-data_globals.sql 
pg_dumpall > /home/pgsqlbck/dump-data_alldb.sql
exit

I singoli db di postgresql 8.4 possono essere copiati utilizzando lo script nel link di seguito

Script per il backup dei database di postgresql

Fermiamo il servver postgresql

service postgresql stop
Visto che si tratta di upgrade di versione con cambi nella struttura dei dati possiamo conservare la directory dei dati di PostreSQL /var/lib/pgsql/data oppure al termine dell’upgrade rimuoverla

Per installare la nuova versione di postgresql utilizziamo  il repository yum per rpm. Nella pagina sotto  linkata sono disponibili le varie combinazioni di distribuzione e versione postgresql

PostgreSQL RPM Repository (with Yum)

Installiamo il repository di postgresql 9.2 per  centos 5 – i386

cd /usr/local/src
wget http://yum.pgrpms.org/9.2/redhat/rhel-5-i386/pgdg-centos92-9.2-6.noarch.rpm
rpm -ivh pgdg-centos92-9.2-6.noarch.rpm

Adesso escludiamo postgrsql dal processo standard di update dei pacchetti editando il file etc/yum.repos.d/CentOS-Base.repo aggiungendo la riga

exclude=postgresql*'

nelle sezioni [base] [updates]

ad esempio nella sezione base il risultato sarà del tipo:

[base]                                                                                         
name=CentOS-$releasever - Base 
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os 
gpgcheck=1               
...
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5   
exclude=postgresql*

Controlliamo i pacchetti disponibili

yum list | grep ‘postgresql’

nella lista saranno presenti pacchetti  postgres84 versione installata e i pacchetti della versione 92  di postgresql

postgresql84.i386                        8.4.13-1.el5_8                installed
postgresql84-contrib.i386                8.4.13-1.el5_8                installed
.....
postgresql92.i386                        9.2.2-1PGDG.rhel5             pgdg92   
postgresql92-contrib.i386                9.2.2-1PGDG.rhel5             pgdg92   
postgresql92-debuginfo.i386              9.2.2-1PGDG.rhel5             pgdg92

adesso rimuoviamo la versione precedente postgresql84

yum remove postgresql84*

installiamo la versione postgresql92

yum install postgresql92 postgresql92-server postgresql92-contrib postgresql92-libs

inizializziamo la base dati e avviamo il server postgresql-9.2

service postgresql-9.2 initdb

service postgresql-9.2 start

le basi dati di postgresql in Cenrtos sono localizzate in /var/lib/psql

:</var/lib/pgsql>$ ls -lhG
drwx------ 4 postgres 4.0K Dec 28 12:20 9.2
drwx------ 12 postgres 4.0K Dec 28 11:21 data

/data per il postgresql base e ovviamente /9.2 per la versione che si sta installando

su - postgres
psql < /home/pgbck/dumpalldb.sql

Ripristinare le modifiche ai files di configurazione /var/lib/pgsql/data/*.conf
in particolare postgresql.conf e pg_hba.conf

il file pg_hba.conf con le vecchie impostazioni relative alla autenticazione dei client, cioè il file che controllare quale host accede è a che cosa, può essere copiato dal precedente cluster che era stato rinominato:

cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/9.2/data/pg_hba.conf

per essere in linea con le nuove caratteristiche di postgresql 9.2 appendiamo il seguente nuovo blocco commentato, presente di default nel file pg_hba.conf della versione 9.2

# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident

La modifica può essere apportata utilizzando echo con comandi riportati di seguito. Possiamo usare tail -f pg_hba.conf su altro temrinale per seguire le modifiche in real time apportate a pg_hba.conf

:
cd /var/lib/pgsql/9.2/data
su postgres
echo '# Allow replication connections from localhost, by a user with the' >> pg_hba.conf 
echo '# replication privilege.' >> pg_hba.conf
echo '#local   replication     postgres                                peer' >> pg_hba.conf
echo '#host    replication     postgres        127.0.0.1/32            ident' >> pg_hba.conf 
echo '#host    replication     postgres        ::1/128                 ident' >> pg_hba.conf

possiamo anche modificare il permesso ident in peer della condizione

:
# TYPE  DATABASE        USER            ADDRESS                 METHOD                                                               

# "local" is for Unix domain socket connections only                                                                                 
local   all             all                                     ident

in

:                                                                            
local   all             all                                     peer 

riavviamo

service postgresql-9.1 restart

controlliamo il risultato scorrendo la lista dei db importati

su - postgres

vacuumdb --all --analyze-only
psql
\l

controlliamo e Impostiamo l’avvio automatico e il runlevel per il servizio postgresql 9.2

$ chkconfig --list | grep postgresql*
postgresql-9.2 	0:off	1:off	2:off	3:off	4:off	5:off	6:off

ora impostiamo l’avvio automatico con

chkconfig --level 35 postgresql-9.2 on

Altri post e risorse:

Annunci

postgresql : Eseguire una SQL UPDATE query di test

In diverse circostanze risutla utile eseguire una query di UPDATE in modalità test senza che le modifiche vengano salvate e  diventino persistenti.

Per realizzare una query UPDATE di tipo test in postgresql può essere usato il seguente schema:

BEGIN;
UPDATE .........  ;
SELECT  .......   ;
ROLLBACK  ;

Di seguito un esempio pratico

BEGIN;
UPDATE esf SET 
 "IDUser" = esf.itemid WHERE 
 esf.email IN ( SELECT esf.email 
 -- SELECT contacts.itemid, contacts.confirmdate, contacts.email, esf.itemid AS e_itemid, esf.email AS e_email
 FROM contacts
 LEFT JOIN esf ON contacts.email::text = esf.email::text
 WHERE contacts.email::text = esf.email::text
 ORDER BY esf.createddate ) ;
SELECT"IDUser" FROM esf WHERE "IDUser" > 0 ;
ROLLBACK;

Esempio semplice

BEGIN ;
UPDATE esf SET "Organization" = company ;
SELECT "Organization" FROM esf WHERE "Organization" is NOT NULL ;
ROLLBACK ;

Altro esempio di sql query di test utilizzando query tools di pgadmin3 in postgresql  con le istruzioni di test roolback incluso disabilitare con il comment  —

Query tool pgadmin3

-- BEGIN; 

UPDATE esf SET 
   "itemid" = contacts.itemid 
   FROM contacts 
   WHERE esf.email = contacts.email AND
   esf.email IN 
   ( SELECT esf.email       
       FROM contacts 
       LEFT JOIN esf ON contacts.email::text = esf.email::text
       WHERE contacts.email::text = esf.email::text AND esf.id < 2000
       ORDER BY esf.createddate ) ;  

-- SELECT"itemid" FROM esf WHERE "itemid" < 22000 ; 

-- ROLLBACK;

sql UPDATE comando base

UPDATE contacts
SET firstname=name, lastname= name
WHERE firstname IS NULL AND name IS NOT NULL AND itemid < 100
 UPDATE sales
 SET payterms =
       CASE
          WHEN (SELECT SUM(qty) FROM sales s1
              WHERE sales.stor_id = s1.stor_id) < 10
             THEN 'On Billing'
         WHEN (SELECT SUM(qty) FROM sales s1
               WHERE sales.stor_id = s1.stor_id) < 100
              THEN 'Net 30'
        ELSE 'Net 60'
        END

INSERT INTO sitepage
SELECT sitepage_backup.*
FROM sitepage_backup
WHERE sitepage_backup."IDpage" = 442

Pagina riepilogativa

Query SQL  – PostgreSQL

Postgresql 

query di tipo plpgsql 

Creare eliminare database e tabelle

ssh tunnel per accedere a servizi http, postgresql, samba in remoto

Con i tunnels ssh è possibile trasportare sessioni TCP all’interno di connessioni criptate.  In questo modo possiamo mettere in sicurezza comunicazioni che si svolgono in chiaro oppure raggiungere computers e/o servizi che sono posti dietro firewalls. In questo primo post i comandi per generare tunnels per accedere in sicurezza ai servizi http, postgresq, samba su computers remoti e i comandi per visualizzare e chiudere i processi ssh attivi.

Comininciamo con l’ elencare le connessioni “ssh” attive.
Per lanciare taluni comandi come root verrà utilizzato il comando sudo tipico di Ubuntu si può optare anche per passare a root con  sudo su.

sudo ps -afx | grep [s]sh     # preferibile

o

sudo netstat -anpt | grep -E "ssh"

per chiudere  una connessione ssh basta killare  il processo  indivudato con  sudo ps -afx | grep  [s]sh .

kill 6726   # se il processo è dell'utente     
o    
sudo kill 6726   # va bene per tutti i processi

per chiudere tutti le connessioni ssh possiamo fare il “killall” di tutti i processi ssh

sudo killall ssh

Tunnel ssh per accedere a un web server – http  port  80

1) Il computer remoto ospita un web server ma il suo firewall blocca la porta 80 la porta 22 è accessibile.
Effettuiamo una connessione ssh è utilizziamo un local port forwarding ( -L )  per navigare il web server del computer remoto.

ssh -fNgq root@192.168.1.9 -L 8080:localhost:80

-L porta-locale:host-remoto:port-remota  (-L  Local port forwarding )
-f ssh va in background (demonize)
-g permette al computer remoto di connettersi alle porte locali inoltrate
-q quiet mode. Molti warning e messaggi vengono soppressi
-N informa OpenSSH che non si intende eseguire un commando nel host remoto
-v verbose

quindi facciamo puntare il browser all’indirizzo 127.0.0.1:8080

2) Il firewall della nostra rete impedisce l’accesso a un sito specifico (es. http://www.inter.it) è disponibile tuttavia un computer raggiungibile via ssh che non ha questa limitazione. Possiamo utilizzare quest’ultimo computer (agirà da “gate”) per raggiungere il web server bloccato.

ssh -nFg  root@192.168.1.9  -L 8081:inter.it:80

o

 ssh -fN root@192.168.1.9 -L 8081:79.125.120.241:80   # host remoto specificato con IP

sempre -L (Local port forwarding) :  – L local-port-listen:remote-host:remote-port    192.168.1.9 ( gate )

Se il sito web utilizza rewriting potrebbero esserci poblemi nel visualizzare correttamente la pagina.

Tunnel ssh  per utilizzare un server postgresql remoto 

1)  utilizzare  postgresql in sicurezza utilizzando un tunnel ssh
[ local machine]    ——–>  [ 182.193.135.162 ]

ssh -fNg  pluto@182.193.135.162  -L54321:localhost:5432 
psql  -p 54321 postgres postgres

2) utilizzare  il server postgresql 10.0.1.49 passando per  gate
[local machine] ——–> [182.193.135.165 – gate] ———> [10.0.1.49: server postgresql- remote LAN]

ssh -fNg    -L54321:10.0.1.149:5432 root5@182.193.135.162 
psql -p 54321 -h 127.0.0.1 -U postgres

in pgadmin editiamo host= 127.0.0.1 e port= 54321

altro post  Tunnel via ssh per gestire il server postgresql con pgAdmin

Tunnel ssh per protocollo samba  – samba(smb)  porte 139 o 445

1)  creare un tunnel ssh per raggiungere dal pc ubuntu il serverr windows 2008 attraverso il gate centos
[ local-machine(ubuntu 12.04) ]  ——>  [ 28.93.35.65 gate (centos) ] ———>   [10.0.1.103: windows server 2008 ]

Prima di aprire il tunnel ssh fermare il service samba attivo nel pc locale con ubuntu

sudo service smbd  stop 

Dettagli su samba sono disponibili in Samba in debian squeeze e ubuntu linux via terminale.

Per aprire il tunnel sarebbe utile conoscere la porta. Comunque poichè in genere si tratta della porte 445 o 139  non resca che provare prima 445 e poi 139 .Apriamo il “ssh tunnel for samba( Local port forwarding )”

ssh -fNgq -L 139:10.0.1.103:139  user-centos@28.93.35.65

oppure

ssh -fNgq -L 445:10.0.1.103:445  user-centos@28.93.35.65

-L port-local:host-remote:port-remote  (-L  Local port forwarding )

Ora possiamo usare  nautilus o pcmanfs per gestire il  smb share  o smbclient oppure effettuare il  mount con smbmount.

Il file manager accederà alle cartelle del server windows remoto con un indirizzo di questo tipo

smb://127.0.0.1/dir-share-server

per utilizzare smbclient usiamo il comando:

smbclient --user=user-windows2008  //127.0.0.1/WWW

se tutto ok questo è il prompt atteso

 
:~$ smbclient --user=masterzyn //127.0.0.1/WWWe
Enter masterzyn's password: 
Domain=[HOSTxx-172-001] OS=[Windows Server 2008 R2 Standard 7601 Service Pack 1] Server=[Windows Server 2008 R2 Standard 6.1]
smb: \>

e per visualizzare le cartelle del server windows 2008 provare con:

 
smb: \> ls

possiamo anche montare le cartelle remote con smbmount
creiamo un mount point (ex. /mnt/smb3)  and then we have to use smbmount to do the mounting

sudo mkdir /mnt/smb3

sudo smbmount //127.0.0.1/WWW /mnt/smb3   -o username=user-window2008

Terminare connessione ssh

Elencare le connessioni ssh attive con pgrep

 
sudo pgrep -lf ssh 
807 /usr/sbin/sshd -D
1848 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/startlubuntu
1857 /usr/bin/gnome-keyring-daemon --start --components=ssh
20895 ssh -fNgq -L 54320:localhost:5432 root@28.93.35.65
22493 ssh -fNgq -C -L 54321:localhost:5432 root@28.93.35.66

oppure con netstat

 
sudo netstat -anpl | grep  [s]sh
[sudo] password for maurizio: 
tcp        0      0 0.0.0.0:54320           0.0.0.0:*               LISTEN      20895/ssh       
tcp        0      0 0.0.0.0:54321           0.0.0.0:*               LISTEN      20900/ssh       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      807/sshd        
tcp        0      0 127.0.0.1:54321         127.0.0.1:55211         ESTABLISHED 20900/ssh       
tcp        0      0 127.0.0.1:54320         127.0.0.1:49669         ESTABLISHED 20895/ssh       
tcp        0      0 192.168.1.6:57730     182.93.35.161:22        ESTABLISHED 20895/ssh       
tcp        0      0 127.0.0.1:54320         127.0.0.1:49667         ESTABLISHED 20895/ssh       
tcp        0      0 127.0.0.1:54320         127.0.0.1:49668         ESTABLISHED 20895/ssh       
tcp        0      0 127.0.0.1:54321         127.0.0.1:55210         ESTABLISHED 20900/ssh       
tcp        0      0 127.0.0.1:54321         127.0.0.1:55206         ESTABLISHED 20900/ssh       
tcp        0      0 192.168.1.6:58023     182.93.35.162:22        ESTABLISHED 20900/ssh       
tcp6       0      0 :::54320                :::*                    LISTEN      20895/ssh       
tcp6       0      0 :::54321                :::*                    LISTEN      20900/ssh       
tcp6       0      0 :::22                   :::*                    LISTEN      807/sshd        
unix  2      [ ACC ]     STREAM     LISTENING     11001    1848/ssh-agent      /tmp/ssh-r7iPA7SsOYBY/agent.1811
unix  2      [ ACC ]     STREAM     LISTENING     11889    1857/gnome-keyring- /run/user/maurizio/keyring-Y

quindi per terminare con kill il processo ssh sulla porta 54321 ID 20900

sudo kill 20900

Risorse:


					

Postgresql running in parallel postgresql 9.1 and 8.4 on Centos 6.3 64 bit

postgresql  go to:  PostgreSQL nel blog 

We want to install postgreSQL 9.1.3 and postgreSQL 8.4.12 on Centos 6.3 Server and we want that they run in parallel.

First of all we install postgreSQL 8.4 that is default postgresql server in Centos 6.3

Install postgresql 8.4

 su -
yum install postgresql  postgresql-server postgresql-libs postgresql-contrib

Than we initialize and start postgresql 8.4.12

service postgresql initdb 
service postgresql start

check that everything is OK

su - postgresql  
pslq -l

we have to see a list of 3 databases

Now we configure postgresql 8.4 service to start at boot

su -
chkconfig --level 234 postgresql on

Open postgresql port 5432 in Iptables Firewall

 
echo '-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT' >>  /etc/sysconfig/iptables

or with editor:
vi -w /etc/sysconfig/iptables
# add next commit row
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5432 -j ACCEPT

restart iptables firewall

service iptables restart

Configure psotgresql 8.4

set superuser postgres passsword

# switch to postgres user

  su - postgres

# open postgresql cli as postgres and connect to the postgres database

  psql postgres

# set the password of user postgres using alter

 ALTER USER postgres WITH PASSWORD 'your-postgres-password';

Setting pg_hba.conf
pg_hba.conf say postgresql which users can access which databases and how they can do. ( centos/redhat location /var/lib/pgsql/data/pg_hab.conf)

so we change METHOD to md5 for IPv4 and IPv5 local connections
then we can add other ipv4 connection as

host    all         all         192.168.0.0/24        md5

at the end we can have something like this

# TYPE DATABSE USER CIDR-ADDRESS METHOD # local for domain socket only local all postgres ident # IPv4 connections host all postgres md5 host all all 127.0.0.1/32 md5 host all all 192.168.0.0/24 md5 # IPv6 host all all ::1/128 md5

In order for the change to take effect we have to
reload pg_hba.conf
from the postgresql cli

 postgres=# select pg_reload_conf();

from the shell as postgres user ( su – postgres )

pg_ctl reload

Setting postgresq.conf
In this file we can configure remote access to postgresql (centos/redhat location: /var/lib/pgsql/data/postgresql.conf – )

look for listen_address in connections and authentication section.
to enable remote connections uncomment and change listen_address that by default is ‘localhost’ so access is limited to local machine.
So at the and listen_addresses look like

listen_addresses = '*'

It is possible to set the listen_address to specific IPs using a comma separate list.

Now if you want you can change post value

port=  5432

If port change you have to change iptables firewall setting and restart postgresql.

we can check changes in postgesql cli :

# show listen_addresses;
# show port;

we can also do another check as root with

netstat -nxl | grep PGSQL

Install postgresql 9.1.4

First of all stop postgresq 8.4.3 server

su - 
service postgresql stop

Download and install the yum rpm PostgreSQL Repository

wget http://yum.pgrpms.org/9.1/redhat/rhel-6-x86_64/pgdg-centos91-9.1-4.noarch.rpm

rpm -i pgdg-centos91-9.1-4.noarch.rpm

We can use yum list to check the package now available.

yum list postgresql*

you have to see many postgresql91 packages

As done in postgresql 8.4 we install, inizialize and start postgresql 9.1.

yum install postgresql91  postgresql91-server postgresql91-libs postgresql91-contrib

service postgresql-9.1 initdb

service postgresql-9.1 start

check that everything is OK

su - postgresql  
pslq -l

now we configure postgresql 9.1 to start at boot

chkconfig postgresql on

Set postgresql 9.1 environment

the default home directory for the user postgres is at /var/lib/pgsql.
We change the bash_profile for the user postgres to add path for executable/binary directory. Default file has only path for data directory and look like this:

[ -f /etc/profile ] && source /etc/profile PGDATA=/var/lib/pgsql/9.1/data export PGDATA

after we add path for binary it look like this

[ -f /etc/profile ] && source /etc/profile  
PGDATA=/var/lib/pgsql/9.1/data  
export PGDATA  
PATH=/usr/pgsql-9.1/bin:$PATH:$HOME/bin:
export PATH

As we want run postgresql 9.1 on 5433 port

Open postgresql port 5433 in Iptables Firewall

echo '-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5433 -j ACCEPT' >>  /etc/sysconfig/iptables

or with editor:
vi -w /etc/sysconfig/iptables
# add next commit row
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5433 -j ACCEPT

restart iptables firewall

service iptables restart

Configure psotgresql 9.1 server

set superuser postgres passsword

su - postgres 
psql postgres  
ALTER USER postgres WITH PASSWORD 'your-postgres-password';

Setting postgresq.conf
(centos/redhat location: /var/lib/pgsql/9.1/data/postgresql.conf – )

to enable remote connections uncomment and change listen_address.

listen_addresses = '*'

Usually to change port value (ex:5433 ) we have to uncomment and to modify
# port= 5432
to
port= 5433
in Centos 6.3 we have to do another step we have to create the file /etc/sysconfig/pgsql/postgresql-9.1 with
PGPORT=5433
export PGPORT

touch /etc/sysconfig/pgsql/postgresql-9.1

echo 'PGPORT=5433' >> /etc/sysconfig/pgsql/postgresql-9.2
echo 'export PGPORT' >> /etc/sysconfig/pgsql/postgresql-9.2

Setting pg_hba.conf
we copy the pg_hba.conf from postgresql 8.4 ( before we save orginal conf )

su - postgres
mv /var/lib/pgsql/9.1/data/pg_hba.conf /var/lib/pgsql/9.1/data/pg_hba.conf.base
cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/9.1/data/pg_hba.conf

We arrive at the end so we can restart the postgresql servers

postgresql 9.1 server on 5433 port

service postgresql-9.1 restart

postgresql 8.4 server on 5432 port

service postgresql-9.1 start

Now we have binaries 9.1 as default postgresql binaries. Usually for me it can be a good choice but if is necessary to use specific 8.4 binary we can use binary full path. It would be possible to use “alternatives” to switch version.

Ex to run psql:
postgresql 8.4 psql
/usr/bin/psql
while psql postgres 9.1 is
/usr/pgsql-9.1/bin/psql

Postgres blog’s post:

Tunnel via ssh per gestire il server postgresql con pgAdmin3

[201209 Aggiornamento] Altri tunnels:  ssh tunnel per accedere a servizi http, postgresql, samba in remoto

Tunnel via ssh per amministrare il server postgresql con pgAdmin

premessa è bene che l’autenticazione non sia di tipo ident per le connessioni del
localuser del server postgres.
Pentanto nel file pd_hda.conf di postgres (installazione standard di RedHat o Centos
/lib/pgsql/data/pg_hda.conf è preferibile settare l’opzione METHOD per gli indirizzi 127.0.0.1
da ident impostazione standard a md5

METHOD
host all all 127.0.0.1/32 md5

Utilizzo di ssh per creare il tunnel

Il server sql postgres comunica sulla porta 5432
pertanto qualora la porta locale 5432 fosse disponibile è possibile
utilizzare la stessa porta.
Il tunnel sarà impostato con il seguente comando

ssh -fNg -L 5432:localhost:5432 pluto@83.45.193.165

qualora la porta 5432 del computer locale non fosse disponibile è possibile indirizza verso altra porta
ad esempio la 8888 oppure la 5433 in questo caso il comando diventa:

ssh -fNg pluto@83.45.193.165 -L 8888:localhost:5432

quindi per la console interattiva

$ psql -h 127.0.0.1 -p 8888 postgres postgres

per pgdmin3 impostare host=127.0.0.1, port=8888 quindi user e database desiderati

Utilizzo di putty per creare il tunnel

Il programma putty disponibile sia per windows che per linux
offre un interfaccia grafica agevole per creare connessioni anche ti tipo ssh.

I passa da seguire sono:

  • impostare Hostname digitando l’indirizzo Ip o il nome del server da raggiungere.
  • selezionare SSH come Connection Type
  • indicare l’eventuale nome per salvare la sessione ( scelta consigliata )
  • utilizzare l’opzione Tunnels per impostare il tunnel ssh.
  • L’opzione Tunnels si trova nel menu SSH della category Connection dell’elenco a sinistra.
    Controllare che sia selezionato Local.
    Nel campo Source port inserire la porta del server nel nostro caso 5432
    Nel campo Destination inserire localhost:5432
    Quindi premere Add.
    Salvare e aprire la connessione.

Risorse:


 

Postgresql Character Sets

La tabella con i sets di caratteri disponibili in postgresql come si può notare se si seleziona utf8 è possibile utilizzare qualsiasi linguaggio.

PostgreSQL Character Sets

Name Description Language Server? Bytes/Char Aliases
BIG5 Big Five Traditional Chinese No 1-2 WIN950Windows950
EUC_CN Extended UNIX Code-CN Simplified Chinese Yes 1-3
EUC_JP Extended UNIX Code-JP Japanese Yes 1-3
EUC_JIS_2004 Extended UNIX Code-JP, JIS X 0213 Japanese Yes 1-3
EUC_KR Extended UNIX Code-KR Korean Yes 1-3
EUC_TW Extended UNIX Code-TW Traditional Chinese, Taiwanese Yes 1-3
GB18030 National Standard Chinese No 1-2
GBK Extended National Standard Simplified Chinese No 1-2 WIN936Windows936
ISO_8859_5 ISO 8859-5, ECMA 113 Latin/Cyrillic Yes 1
ISO_8859_6 ISO 8859-6, ECMA 114 Latin/Arabic Yes 1
ISO_8859_7 ISO 8859-7, ECMA 118 Latin/Greek Yes 1
ISO_8859_8 ISO 8859-8, ECMA 121 Latin/Hebrew Yes 1
JOHAB JOHAB Korean (Hangul) No 1-3
KOI8R KOI8-R Cyrillic (Russian) Yes 1 KOI8
KOI8U KOI8-U Cyrillic (Ukrainian) Yes 1
LATIN1 ISO 8859-1, ECMA 94 Western European Yes 1 ISO88591
LATIN2 ISO 8859-2, ECMA 94 Central European Yes 1 ISO88592
LATIN3 ISO 8859-3, ECMA 94 South European Yes 1 ISO88593
LATIN4 ISO 8859-4, ECMA 94 North European Yes 1 ISO88594
LATIN5 ISO 8859-9, ECMA 128 Turkish Yes 1 ISO88599
LATIN6 ISO 8859-10, ECMA 144 Nordic Yes 1 ISO885910
LATIN7 ISO 8859-13 Baltic Yes 1 ISO885913
LATIN8 ISO 8859-14 Celtic Yes 1 ISO885914
LATIN9 ISO 8859-15 LATIN1 with Euro and accents Yes 1 ISO885915
LATIN10 ISO 8859-16, ASRO SR 14111 Romanian Yes 1 ISO885916
MULE_INTERNAL Mule internal code Multilingual Emacs Yes 1-4
SJIS Shift JIS Japanese No 1-2 MskanjiShiftJISWIN932Windows932
SHIFT_JIS_2004 Shift JIS, JIS X 0213 Japanese No 1-2
SQL_ASCII unspecified (see text) any Yes 1
UHC Unified Hangul Code Korean No 1-2 WIN949Windows949
UTF8 Unicode, 8-bit all Yes 1-4 Unicode
WIN866 Windows CP866 Cyrillic Yes 1 ALT
WIN874 Windows CP874 Thai Yes 1
WIN1250 Windows CP1250 Central European Yes 1
WIN1251 Windows CP1251 Cyrillic Yes 1 WIN
WIN1252 Windows CP1252 Western European Yes 1
WIN1253 Windows CP1253 Greek Yes 1
WIN1254 Windows CP1254 Turkish Yes 1
WIN1255 Windows CP1255 Hebrew Yes 1
WIN1256 Windows CP1256 Arabic Yes 1
WIN1257 Windows CP1257 Baltic Yes 1
WIN1258 Windows CP1258 Vietnamese Yes 1 ABCTCVNTCVN5712VSCII

Risorse:

PostgreSQL: Documentation: 9.1: Character Set Support

 

postgresql abilitare accesso remoto linux ubuntu centos debian

Osservo che ritorna con una certa frequenza la domanda come abilitare l’accesso remoto in postgresql versioni 8.x e 9.x. La questione degli accesso remoto è basilare in quanto attiene anche al livello della sicurezza. In via generale l’accesso remoto in postgres è controllato dai due file postgresql.conf e pg_hba.conf.
La posizione di questi file varia a seconda delle distribuzioni ad esempio in centos/redahat fedora i due files sono posizionati nella data_directory con i postgresql in debian /ubuntu

/var/lib/pgsql/data

In debian/ubuntu si trovano si trovano in etc il percorso è del tipo
/etc/postgresql/num-versione/main

postgresql.conf    Il file postgresql tra i vari parametri che controlla Gli indirizzi ip “ascoltati” da postgresql sono rappresentati con listen_address.
Il valore  di default di listen_adress è “localhost” ed è indicato con

listen_address = 'localhost"

Questo significa che l’accesso a postgresql è consentito di default solo all’elaboratore che ha in esecuzione il server sql. Per consentire l’accesso da pc remoto a postgresql bisogna inanzitutto cambiare il valore “localhost” ad esempio è possibile utilizzare “*”per consentire l’accesso a tutti.

listen_address = '*"

E possibile indicare anche un lista di indirizzi o domini.

Una volta consentito l’ascolto su tutti gli indirizzi si utilizza il file pg_hba.conf per indicare a postgresql quali users possono accedere a quali databases e come possono farlo.

# TYPE  DATABSE     USER       CIDR-ADDRESS           METHOD

# local for domain socket only 
local   all         postgres                          ident
# IPv4 connections  
# TYPE  DATABSE     USER       CIDR-ADDRESS           METHOD

# local for domain socket only 
local   all         postgres                          ident
# IPv4 connections  
host    all         postgres                          md5 
host    all         all         127.0.0.1/32          md5 
host    all         all         192.168.0.0/24        md5
# IPv6 
host    all         all         ::1/128               md5

Due esemplificazioni  l’utente postgres su local può accedere a tutti i database senza specificare  password (metodo ident)  .
Tutti gli users degli hosts della sottorete 192.168.0.0/24 possono accedere a tutti i databases in postgresql ( a patto ovviamente che il database annoveri tra i suoi utenti l’user che accede )  con metodo di cifratura md5 e pertanto con password.

Attenzione: ricordare che postgresql analizzando il file  pg_hba quando trova la prima riga che soddisfa le condizioni della connessione non processa le righe successive.

Ovviamente sono possibili impostazioni più sofisticate di quelle dell’esempio anche considerati i diversi metodi di autenticazioni e le casistiche che si possono presentare. E’ tuttavia buona norma limitare l’accesso al database alla sola sottorete locale. Del resto è sempre possibilie creare un tunnel ssh per accedere così da agire come  si operasse in locale.

Controllare le connessioni

PostgreSQL ascolta le connessioni utilizzando il sockets unix ( in genere in /tmp ).
Pertanto si può effettuare il controllo con:

netstat -nxl | grep PGSQL

ad esempio in Ubuntu

$ netstat -nxl | grep PGSQL
unix 2 [ ACC ] STREAM LISTENING 10109 /var/run/postgresql/.s.PGSQL.5432

Altre risorse: