Početak rada s PostgreSQL-om. Postgresql Udaljena veza Upravljanje korisnicima baze podataka

PostgreSQL je višeplatformski objektno-relacijski DBMS sa otvorenim izvorni kod. U ovom članku ćete naučiti kako instalirati PostgreSQL na Ubuntu Linux, povezati se s njim i pokrenuti nekoliko jednostavnih SQL upita, kao i kako postaviti sigurnosne kopije.

Da biste instalirali PostgreSQL 9.2 na Ubuntu 12.10, pokrenite sljedeće naredbe:

sudo apt-add-repository ppa:pitti/postgresql
sudo apt-get update
sudo apt-get install postgresql-9.2

Pokušajmo raditi sa DBMS-om kroz ljusku:

sudo -u postgres psql

Kreirajmo testnu bazu podataka i test korisnika:

CREATE DATABASE test_baza podataka;
KREIRAJTE KORISNIKA test_user SA lozinkom "qwerty" ;
ODOBRITE SVE U BAZI PODATAKA test_baza podataka test_user;

Da biste izašli iz ljuske, unesite naredbu \q.

Sada pokušajmo da radimo sa kreiranom bazom podataka u ime test_user:

psql -h lokalni host test_baze podataka test_user

Kreirajmo novu tabelu:

CREATE SEQUENCE user_ids;
CREATE TABLE korisnika (
id INTEGER PRIMARNI KLJUČ ZADANO SLJEDEĆI ("user_ids") ,
login CHAR(64) ,
lozinka CHAR(64));

Imajte na umu da, za razliku od nekih drugih DBMS-ova, PostgreSQL nema kolone sa svojstvom auto_increment. Umjesto toga, Postgres koristi sekvence. On trenutno Dovoljno je znati da pomoću funkcije nextval možemo dobiti jedinstvene brojeve za dati niz:

SELECT NEXTVAL ("user_ids") ;

Postavljanjem zadane vrijednosti za polje id tablice korisnika na NEXTVAL("user_ids"), postigli smo isti efekat koji daje auto_increment. Prilikom dodavanja novih zapisa u tabelu, ne moramo specificirati id, jer će jedinstveni id biti generisan automatski. Više tabela može koristiti isti niz. Na ovaj način možemo garantirati da se vrijednosti nekih polja u ovim tabelama neće preklapati. U tom smislu, sekvence su fleksibilnije od auto_incrementa.

Potpuno ista tabela se može kreirati samo jednom naredbom:

CREATE TABLE korisnici2 (
id SERIJSKI PRIMARNI KLJUČ ,
login CHAR(64) ,
lozinka CHAR(64));

U ovom slučaju, sekvenca za polje id se kreira automatski.

Sada pomoću naredbe \d možete vidjeti listu svih dostupnih tabela, a koristeći \d users možete vidjeti opis tablice korisnika. Ako ne dobijete informacije koje tražite, pokušajte \d+ umjesto \d . Možete dobiti listu baza podataka pomoću naredbe \l i prebaciti se na određenu bazu podataka pomoću naredbe \c dbname. Za prikaz pomoći komande, recite \?

.

Važno je napomenuti da PostgreSQL podrazumevano konvertuje imena tabela i kolona u mala slova. Ako ne želite ovakvo ponašanje, možete koristiti dvostruke navodnike:

CREATE TABLE "drugaTabela" ("someValue" VARCHAR (64) ) ;

Još jedna karakteristika PostgreSQL-a koja može izazvati poteškoće pri započinjanju rada sa ovim DBMS-om su takozvane „šeme“. Šema je nešto poput imenskog prostora za tabele, kao direktorijum sa tabelama unutar baze podataka.

Kreiranje šeme:

CREATE SCHEMA rezervacije;

Prebacite se na šemu:

SET search_path TO bookings;

Možete pogledati listu postojećih šema koristeći naredbu \dn. Podrazumevana šema je nazvana javna. U principu, možete uspješno koristiti PostgreSQL bez znanja o postojanju shema. Ali kada radite sa naslijeđenim kodom, iu nekim rubnim slučajevima, poznavanje shema može biti vrlo korisno.

Inače, rad sa PostgreSQL-om se ne razlikuje mnogo od rada sa bilo kojim drugim relacionim DBMS-om:
UMETNI U korisnike (login, lozinka)
VRIJEDNOSTI ("afiskon" , "123456" ) ;

SELECT * FROM korisnika;

Ako sada pokušate da se povežete na Postgres sa druge mašine, nećete uspeti:

psql -h 192.168.0.1 test_baze podataka test_user
Psql: ne mogu se povezati na server: Veza odbijena
Da li server radi na hostu "192.168.0.1" i prihvata

TCP/IP veze na portu 5432?

Da to popravite, dodajte redak:

listen_addresses = "localhost,192.168.0.1"

...u /etc/postgresql/9.2/main/postgresql.conf fajl takođe. : Pažnja Ako radite na Windows OS-u i još niste instalirali PostgreSQL i Debit Plus V12, tada sa stranice za preuzimanje možete preuzeti Debit Plus V12 sklop sa unaprijed instaliranim PostgreSQL DBMS-om i povezanom bazom podataka (sa osnovnom konfiguracijom za Ukrajinu) . U suprotnom, prvo morate instalirati PostgreSQL DBMS i softverski paket

“Debit Plus V12”, nakon čega možete postaviti vezu i uvesti PostgreSQL bazu podataka, slijedeći ove upute.

    Da biste povezali PostgreSQL bazu podataka, morate izvršiti sljedeće korake: Pokrenite "Debit Plus V12" i dodajte (kontekstni meni"Dodaj novo")

    Ostavite kvačicu u polju "Dodaj postojeće na listu".

"DBMS" - POSTGRE.

"Poslužitelj baze podataka" - localhost.

“Naziv baze podataka” - navedite naziv baze podataka iz PostgreSQL DBMS malim slovima latinice (mala slova).

Napomena: Obično se koristi jedna baza. Za posebne namjene, baza podataka se može podijeliti na nekoliko, tada morate označiti kućicu pored „Koristi više baza podataka“, kliknuti na dugme „Dalje“ i navesti korespondenciju „tagova“ sa fizičkim bazama podataka. Ovo može biti potrebno, na primjer, ako će se baze podataka nekoliko preduzeća odnositi na iste imenike (kontrastranke, artikle, itd.). O ovom slučaju se dalje ne raspravlja.

“Direktorij postavki” - odredite putanju do postavki baze podataka za PostgreSQL (drive\DebetPlusV12\base\pgdpbase).

Sačuvajte promjene klikom na dugme “Gotovo”.

    Pokrenite pgAdmin (PostgreSQL DBMS administrator), dodajte server (File/Add Server...) i dodajte novu bazu podataka (meni "Nova baza podataka...").

Unesite naziv servera, localhost u polje Host, popunite preostala polja po želji.

Unesite naziv baze podataka u polje “Naziv” (isto kao što je uneseno u polje “Server” u postavkama za povezivanje na bazu podataka “Debit Plus V12”).

    Da biste uvezli bazu podataka iz arhive, koristite meni “Vrati...”.

Odredite putanju do arhive baze podataka dpbase.bakup (drive\DebetPlusV12\base\pgdpbase).

    Možete dodati korisnika dpadmin, koji je po defaultu administrator u Debit Plus V12 (bez lozinke).

Dodijelite sva prava ovom korisniku.

Napomena : Ne možete dodati dpadmin korisnika, tada ćete prilikom aktivacije baze podataka morati unijeti ime postgres administratora.

Osvježite listu baza podataka (meni “Osvježi”).

Napomena : Ako korisniku ne želite dodijeliti prava “Superuser”, tada dodijelite prava “Tabelama” i “Pregledima”. Da biste to učinili, odaberite odgovarajući objekt i odaberite stavku kontekstnog izbornika "Čarobnjak za dodjelu".

Na kartici „Izbor“ kliknite na dugme „Proveri sve“, a na kartici „Privilegije“ označite „SVE“ i kliknite na dugme „Dodaj/promeni“. Sačuvajte promjene.

    Aktivirajte postavku veze sa bazom podataka u softveru Debit Plus V12 (kontekstni meni „Učini aktivnim“).

Sistem će tražiti lozinku za povezivanje sa bazom podataka. Kliknite na Yes.

Pažnja! Ako se takva poruka ne pojavi, počnite ažurirati strukture baze podataka odabirom stavke izbornika “Alati” / “Ažuriranje struktura baze podataka”.

Kao rezultat, pojavit će se sljedeći prozor:

Ostavite sve okvire za potvrdu kao zadane (moraju postojati kvačice u koloni “Reindex” za sve tabele baze podataka).

Nakon završetka modifikacije, možete početi s radom.

    Pokrenite “Debit Plus V12” i dodajte novu bazu (kontekstni meni “Dodaj novo”).

    Ostavite kvačicu u polju "Dodaj postojeće na listu":

U prvo polje unesite proizvoljno ime za bazu podataka (naziv može biti različit na svakom radnom računaru).

"DBMS" - POSTGRE.

“Server baze podataka” - naziv ili IP adresa servera.

“Port servera baze podataka” - navedite port servera baze podataka, default je 5432.

“Naziv baze podataka” - unesite naziv baze podataka malim slovima latinice.

"Naziv šeme baze podataka" - dpbase.

Označite samo polje “Koristi Debit Plus autorizaciju”.

“Direktorij postavki” - odredite putanju do postavki baze podataka za PostgreSQL (mrežna staza\DebetPlusV12\base\pgdpbase).

Sačuvajte promene klikom na dugme „Završi“, a zatim aktivirajte bazu podataka.

    Postavite opcije pokretanja (glavni meni “Postavke” / “Opcije pokretanja”)

U prozoru koji se pojavi, u polju „Lozinka za promjenu postavki“ unesite lozinku 150301 i kliknite na dugme „Prihvati“.

Odredite putanju do JDebet foldera na serveru i kliknite na sačuvaj. Učinite bazu podataka aktivnom i možete početi s radom.

Identifikovana je ranjivost (CVE-2019-18634) u uslužnom programu sudo, koji se koristi za organizovanje izvršavanja komandi u ime drugih korisnika, što vam omogućava da povećate svoje privilegije u sistemu. Problem […]

Izdanje WordPress 5.3 poboljšava i proširuje uređivač blokova uveden u WordPress 5.0 novim blokom, intuitivnijom interakcijom i poboljšanom pristupačnošću. Nove funkcije u uređivaču […]

Nakon devet mjeseci razvoja, dostupan je multimedijalni paket FFmpeg 4.2 koji uključuje set aplikacija i kolekciju biblioteka za rad na različitim multimedijskim formatima (snimanje, pretvaranje i […]

  • Nove funkcije u Linux Mint 19.2 Cimet

    Linux Mint 19.2 je izdanje za dugoročnu podršku koje će biti podržano do 2023. godine. Dolazi sa ažuriranim softver i sadrži poboljšanja i mnoga nova […]

  • Objavljena distribucija Linux Mint 19.2

    Predstavljeno izdanje Linux distribucija Mint 19.2, drugo ažuriranje Linux Mint 19.x grane, zasnovano na bazi paketa Ubuntu 18.04 LTS i podržano do 2023. Distribucija je potpuno kompatibilna [...]

  • Dostupna su nova BIND servisna izdanja koja sadrže ispravke grešaka i poboljšanja karakteristika. Nova izdanja mogu se preuzeti sa stranice za preuzimanje na web stranici programera: […]

    Exim je agent za prijenos poruka (MTA) razvijen na Univerzitetu Cambridge za korištenje u Unix sistemi povezan na internet. Dostupan je besplatno u skladu sa [...]

    Nakon skoro dvije godine razvoja, predstavljeno je izdanje ZFS-a na Linux 0.8.0, implementacija sistem datoteka ZFS, upakovan kao modul za Linux kernel. Modul je testiran sa Linux kernelima od 2.6.32 do […]

    IETF (Internet Engineering Task Force), koji razvija internet protokole i arhitekturu, završio je RFC za ACME (Automatic Certificate Management Environment) protokol […]

    Neprofitno certifikacijsko tijelo Let’s Encrypt, koje je pod kontrolom zajednice i koje besplatno daje certifikate svima, sumiralo je rezultate prošle godine i govorilo o planovima za 2019. […]

    0

    Zapanjen sam. Imamo postgres 9.2 bazu podataka koju koristimo već neko vrijeme. Sada moramo biti u mogućnosti da se povežemo na njega izvan naše mreže.

    Tako da konfigurišemo eksternu IP adresu i testiramo da se možemo povezati na port 5432 sa udaljenog hosta preko telneta. Dakle, ovo dokazuje da mrežna veza radi, zaštitni zidovi itd. su dobri.

    Kada pokušam da se povežem sa:
    PSQL -h db.host.com -d dbname -p 5432 -U korisnik

    Vratit ću se Psql: Server je neočekivano prekinuo vezu.

    Provjerio sam to
    listen_addresses = "*" je postavljeno u postgresql.conf

    A u pg_hba.conf imamo red koji glasi (samo u svrhu testiranja)
    host sve sve 0.0.0.0/0 md5

    I ponovo sam učitali bazu podataka da testiram njene odabrane promjene.
    Dakle, ovo bi trebalo omogućiti veze iz bilo kojeg izvora.

    Verzija psql-a na serveru baze podataka je 9.2.14, a na klijentu je 9.2.13.

    Ima li nekih prijedloga ili ideja?

    • 1 odgovor
    • sortiranje:

      Aktivnost

    1

    Htio bih isprobati nekoliko stvari da dobijem više informacija:

      Postgres tail logiraj se na server da vidi šta se tamo dešava kada je povezan.

      Pokrenite psql --version da biste bili sigurni da se više ili manje podudara s verzijom servera. (Vidim da ste to već uradili, ali ostaviću to ovde za potomke.)

      Pokrenite strace psql.... da vidite koliko daleko ide do neuspjeha.

    Ovo mi i dalje zvuči kao mrežni problem. Koja je telnet komanda sa kojom radite? „Spoljna IP adresa“ zvuči isto kao i na AWS-u. Postavke daljinski pristup do VPC-a treba mnogo koraka. Imate li neke druge otvorene vanjske usluge koje su otvorene?

    Također možete riješiti problem tako što ćete isključiti Postgres server i koristiti nc za slušanje 5432. Zatim telnet i provjerite možete li slati podatke naprijed-nazad.

    1

    Paul, hvala na prijedlozima. Povukao sam se i provjerio verzije. I bili ste u pravu, pokušao sam da se povežem sa AWS-a. Ispostavilo se da je to bio nivo koji sam koristio u balansatoru opterećenja da dozvoli pristup samo IP-2 rasponima IP adresa koje AWS objavljuje. Kada sam onemogućio irule, mogao sam odmah da se povežem. Dakle, ovo mora da je nadrealna logika jer sam provjerio javni IP moje EC2 instance i zaista je bio naveden u irule putem CIDR obavijesti. -

    Veza