> For the complete documentation index, see [llms.txt](https://docs.ititanhosting.ro/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ititanhosting.ro/docs/romana/vps/linux/cum-instalezi-postgresql-pe-ubuntu.md).

# Cum instalezi PostgreSQL pe Ubuntu

PostgreSQL este o baza de date relationala open-source puternica. Este cunoscuta pentru fiabilitate, functii avansate si performanta buna. Daca ai nevoie de o baza de date care maneaza interogari complexe si seturi mari de date, PostgreSQL este o alegere solida.

### Pasul 1: Actualizeaza si instaleaza

```bash
sudo apt update
sudo apt install postgresql postgresql-contrib -y
```

Pachetul `postgresql-contrib` adauga utilitare si extensii suplimentare.

### Pasul 2: Verifica daca ruleaza

```bash
sudo systemctl status postgresql
```

Ar trebui sa vezi "active (exited)" sau "active (running)". PostgreSQL porneste automat dupa instalare.

### Pasul 3: Intelege utilizatorul implicit

PostgreSQL creaza un utilizator de sistem numit `postgres` in timpul instalarii. Pentru a lucra cu baza de date, treci la acest utilizator:

```bash
sudo -i -u postgres
```

Acum poti accesa linia de comanda PostgreSQL:

```bash
psql
```

Esti acum in shell-ul interactiv PostgreSQL. Tasteaza `\q` pentru a iesi, sau `\?` pentru a vedea toate comenzile.

### Pasul 4: Creaza o baza de date si un utilizator

Cat timp esti logat ca utilizatorul `postgres`, creaza un utilizator dedicat si o baza de date pentru aplicatia ta:

```bash
-- Din promptul psql
CREATE USER myapp_user WITH PASSWORD 'parola_puternica';

CREATE DATABASE myapp_db OWNER myapp_user;

GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;

\q
```

Apoi iesi de la utilizatorul de sistem postgres:

```bash
exit
```

### Pasul 5: Configureaza accesul remote (optional)

Implicit, PostgreSQL asculta doar pe localhost. Daca ai nevoie sa te conectezi de pe alt calculator, editeaza fisierul de configurare:

```bash
sudo nano /etc/postgresql/16/main/postgresql.conf
```

Gaseste linia care spune `#listen_addresses = 'localhost'` si schimba-o in:

```
listen_addresses = '*'
```

Apoi actualizeaza fisierul de autentificare:

```bash
sudo nano /etc/postgresql/16/main/pg_hba.conf
```

Adauga aceasta linie la sfarsit pentru a permite conexiuni bazate pe parola de la orice IP:

```
host    myapp_db    myapp_user    0.0.0.0/0    md5
```

Pentru mai multa securitate, inlocuieste `0.0.0.0/0` cu IP-ul tau specific.

### Pasul 6: Reporneste PostgreSQL

```bash
sudo systemctl restart postgresql
```

Daca folosesti UFW, permite portul PostgreSQL:

```bash
sudo ufw allow 5432/tcp
```

### Pasul 7: Testeaza conexiunea

De pe calculatorul tau local, testeaza conectarea la baza de date remote:

```bash
psql -h adresa-ip-server -U myapp_user -d myapp_db
```

Introdu parola cand esti intrebat si ar trebui sa intri.

### Comenzi psql utile

| Comanda          | Ce face                                |
| ---------------- | -------------------------------------- |
| `\\l`            | Listeaza toate bazele de date          |
| `\\c numebd`     | Conecteaza-te la o baza de date        |
| `\\dt`           | Arata tabelele in baza de date curenta |
| `\\du`           | Listeaza utilizatorii/rolurile         |
| `\\d nume_tabel` | Descrie un tabel                       |
| `\\q`            | Iesire din psql                        |
| `\\?`            | Listeaza toate comenzile               |

### Backup si restore

Backup pentru o baza de date:

```bash
pg_dump myapp_db > myapp_db_backup.sql
```

Restore dintr-un backup:

```bash
psql myapp_db < myapp_db_backup.sql
```

### Probleme comune

**"Connection refused"** Verifica daca PostgreSQL ruleaza si asculta pe adresa corecta. Verifica setarea `listen_addresses` din postgresql.conf.

**"Peer authentication failed"** Asta se intampla cand incerci sa te conectezi ca un utilizator Linux diferit. Foloseste `sudo -u postgres psql` sau treci la utilizatorul de sistem postgres.

**"FATAL: password authentication failed"** Reseteaza parola:

```bash
sudo -u postgres psql -c "ALTER USER myapp_user WITH PASSWORD 'parola_noua';"
```

### Concluzie

PostgreSQL este acum instalat si pregatit. Fie ca rulezi o aplicatie web, un server de joc sau o unealta de analiza, iti va gestiona datele in mod fiabil.
