Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • U kontaktu s
  • Povezivanje na postgresql iz Windowsa. PostgreSQL veza s bazom podataka

Povezivanje na postgresql iz Windowsa. PostgreSQL veza s bazom podataka

0

zapanjen sam. Imamo postgres 9.2 bazu podataka koju koristimo već neko vrijeme. Sada se moramo moći povezati s njim izvan naše mreže.

Dakle, postavljamo vanjsku IP adresu i testiramo da se možemo spojiti na port 5432 s udaljenog hosta putem telneta. Dakle, dokazuje da mrežna veza radi, vatrozidi itd. Sve je u redu.

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

vraćam se Psql: poslužitelj je neočekivano zatvorio vezu.

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

A u pg_hba.conf imamo redak koji glasi (samo za testiranje)
svladati sve sve 0.0.0.0/0 md5

I ponovno sam učitao bazu podataka da provjerim odabrane promjene.
Dakle, ovo bi trebalo omogućiti veze iz bilo kojeg izvora.

Verzija psql na poslužitelju baze podataka je 9.2.14, a na klijentu je 9.2.13.

Ima li kakvih prijedloga ili ideja?

  • 1 odgovor
  • Sortiranje:

    Aktivnost

1

Htio bih isprobati nekoliko stvari kako bih dobio više informacija:

    tail Postgres za prijavu na poslužitelj da vidite što se tamo događa kada se povežete.

    Pokrenite psql --version kako biste bili sigurni da više ili manje odgovara verziji poslužitelja. (Vidim da ste to već učinili, ali ostavit ću to ovdje za potomke.)

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

Ovo mi još uvijek zvuči kao mrežni problem. Koja je telnet naredba s kojom radite? "Vanjski IP" zvuči baš kao vi na AWS-u. Postavljanje daljinskog pristupa VPC-u zahtijeva mnogo koraka. Imate li neke druge usluge otvorene za van koje rade?

Također možete riješiti problem tako da isključite Postgres poslužitelj i upotrijebite nc za slušanje na 5432. Zatim se povežite na telnet i provjerite možete li slati podatke naprijed-natrag.

1

Paul, hvala na prijedlozima. Razvukao sam se i provjerio verzije. I bili ste u pravu pokušavajući se povezati s AWS-a. Ispostavilo se da je to bila razina koju sam koristio u balansiranju opterećenja samo da dopustim pristup IP-2 IP rasponima koje AWS objavljuje. Kad sam onemogućio irule, mogao sam se odmah povezati. Dakle, ovo mora biti nadrealna logika jer sam provjerio javni IP svoje EC2 instance i doista je bio naveden u irule putem CIDR obavijesti. -

Administracija sustava

Ovaj post je brzi vodič za početnike koji su prvi put instalirali PostgreSQL. Ovdje su sve informacije koje su vam potrebne za početak rada s PostgreSQL-om.

Veza na DBMS

Prva stvar koju trebate učiniti je dobiti pristup PostgreSQL-u, pristup kao superkorisnik.
Postavke provjere autentičnosti nalaze se u datoteci pg_hba.conf.
  1. lokalni all postgres peer
Ova linija kaže da se korisnik postgresa može spojiti na bilo koju lokalnu PostgreSQL bazu podataka putem utičnice. Ne morate unositi lozinku, operativni sustav će prenijeti korisničko ime i ono će se koristiti za autentifikaciju.
Povezujemo se:
  1. $ sudo -u postgres psql postgres postgres
Da biste se mogli povezati preko mreže, dodajte redak u pg_hdba.conf:
  1. # VRSTA BAZA PODATAKA METOD KORISNIČKE ADRESE
  2. hostssl sve sve 0.0.0.0/0 md5
Metoda provjere autentičnosti md5 znači da morate unijeti lozinku za povezivanje. Ovo nije baš zgodno ako često koristite psql konzolu. Ako želite nešto automatizirati, loša vijest je da psql ne prihvaća lozinku kao argument. Postoje dva načina rješavanja ovih problema: postavljanje odgovarajuće varijable okruženja i pohranjivanje lozinke u posebnu datoteku .pgpass.

Postavljanje varijable okoline PGPASSWORD

Moram odmah reći da je bolje ne koristiti ovu metodu, jer neki operativni sustavi dopuštaju običnim korisnicima da pregledaju varijable okruženja pomoću ps. Ali ako želite, onda morate napisati u terminalu:
  1. izvoz PGPASSWORD = mypasswd
Varijabla će biti dostupna u trenutnoj sesiji. Ako trebate postaviti varijablu za sve sesije, tada morate dodati redak iz primjera u datoteku .bashrc ili .bash_profile

Pohranjivanje lozinke u .pgpass datoteku

Ako govorimo o Linuxu, tada bi se datoteka trebala nalaziti u $ HOME (/ home / korisničko ime). Samo vlasnik (0600) mora imati dopuštenja za pisanje i čitanje. U datoteku morate napisati redove obrasca:
  1. ime hosta: port: baza podataka: korisničko ime: lozinka
U prva četiri polja možete napisati "*", što znači da nema filtriranja (potpuni odabir).

Dobivanje informacija za pomoć

\? - dati će sve dostupne naredbe zajedno s njihovim kratkim opisom,
\ h - popis svih dostupnih zahtjeva,
\ h CREATE - prikazat će pomoć za određeni zahtjev.

Upravljanje korisnicima DBMS-a

Kako mogu dobiti popis korisnika PostgreSQL-a? Ili možete postaviti upit prema tablici pg_user.
  1. SELECT * FROM pg_user;

Stvaranje novog PostgreSQL korisnika

Iz psql ljuske to možete učiniti naredbom CREATE.
  1. CREATE USER username SA lozinkom "password";
Ili možete koristiti terminal.
  1. createuser -S -D -R -P korisničko ime
Od vas će se tražiti lozinka.

Promijenite korisničku lozinku

  1. ALTER USER username WITH PASSWORD "lozinka";

Promjena korisničkih uloga

Da biste omogućili korisniku stvaranje baze podataka, pokrenite upit:
  1. ALTER ROLE korisničko ime WITH CREATEDB;

Upravljanje bazom podataka

Popis baza podataka u psql terminalu: Isto s Linux terminala:
  1. psql -l
Kreirajte bazu podataka iz psql-a (PostgreSQL terminal)
  1. CREATE DATABASE dbname OWNER dbadmin;
Izrada nove baze podataka pomoću terminala:
  1. createdb -O korisničko ime dbname;

Postavljanje prava pristupa bazi podataka

Ako je korisnik vlasnik (vlasnik) baze podataka, tada ima sva prava. Ali ako želite dati pristup drugom korisniku, to možete učiniti pomoću naredbe GRANT. Upit u nastavku omogućit će korisniku povezivanje s bazom podataka. Ali ne zaboravite na konfiguracijsku datoteku pg_hba.conf, ona također mora imati odgovarajuća dopuštenja za povezivanje.
  1. ODOBRITE POVEZIVANJE NA BAZI PODATAKA dbname TO dbadmin;

PostgreSQL je otvoreni izvorni, višeplatformski sustav upravljanja objektno-relacijskim bazama podataka. Ovaj članak će vam pokazati kako instalirati PostgreSQL na Ubuntu Linux, povezati se s njim i pokrenuti nekoliko jednostavnih SQL upita te kako postaviti sigurnosnu kopiju.

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

sudo apt-add-repository ppa: pitti / postgresql
sudo apt-dobi ažuriranje
sudo apt-get install postgresql-9.2

Pokušajmo raditi s DBMS-om kroz ljusku:

sudo -u postgres psql

Kreirajmo testnu bazu podataka i testnog korisnika:

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

Za izlaz iz ljuske unesite naredbu \ q.

Sada pokušajmo raditi s kreiranom bazom podataka u ime test_user:

psql -h lokalni host test_baze podataka test_user

Kreirajmo novu tablicu:

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

Imajte na umu da, za razliku od nekih drugih DBMS-ova, PostgreSQL nema stupce auto_increment. Umjesto toga, sekvence se koriste u postgresu. Za sada je dovoljno 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 vrijednost SLJEDEĆI ("user_ids"), postigli smo isti učinak kao auto_increment. Prilikom dodavanja novih zapisa u tablicu, možemo izostaviti id jer će se automatski generirati jedinstveni id. Nekoliko tablica može koristiti isti slijed. Tako možemo osigurati da se vrijednosti nekih polja u ovim tablicama ne preklapaju. U tom smislu, sekvence su fleksibilnije od auto_incrementa.

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

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

U tom se slučaju automatski generira slijed za polje id.

Sada s naredbom \d možete vidjeti popis svih dostupnih tablica, a uz pomoć \d korisnika možete vidjeti opis korisnika tablice. Ako ne dobijete informacije koje vas zanimaju, pokušajte s \ d + umjesto \ d. Popis baza podataka može se dobiti naredbom \l, a prelazak na određenu bazu podataka može se dobiti naredbom \c dbname. Za pomoć naredbi recite \? ...

Važno je napomenuti da PostgreSQL prema zadanim postavkama pretvara nazive tablica i stupaca u mala slova. Ako je ovo ponašanje nepoželjno, možete koristiti dvostruke navodnike:

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

Još jedna PostgreSQL značajka s kojom može biti teško započeti je takozvana "shema". Shema je nešto poput prostora imena za tablice, poput kataloga tablica unutar baze podataka.

Izrada sheme:

KREIRANJE SHEME rezervacije;

Prebacivanje na krug:

POSTAVI put_traži na rezervacije;

Možete vidjeti popis postojećih shema naredbom \ dn. Zadana je shema pod nazivom javna. U principu, možete uspješno koristiti PostgreSQL bez znanja o postojanju shema. Ali kada radite s naslijeđenim kodom, kao iu nekim rubnim slučajevima, znanje o shemama može biti vrlo korisno.

Inače, rad s PostgreSQL-om ne razlikuje se puno od rada s bilo kojim drugim relacijskim DBMS-om:

UMETNI U korisnike (prijava, lozinka)
VRIJEDNOSTI ("afiskon", "123456");
SELECT * FROM korisnika;

Ako se sada pokušate spojiti na postgres s drugog stroja, nećete uspjeti:

psql -h 192.168.0.1 test_baze podataka test_user

Psql: ne mogu se spojiti na poslužitelj: Veza je odbijena
Radi li poslužitelj na hostu "192.168.0.1" i prihvaća li?
TCP/IP veze na portu 5432?

Da biste to popravili, dodajte redak:

listen_addresses = "localhost, 192.168.0.1"

... također u datoteku /etc/postgresql/9.2/main/postgresql.conf.

Pažnja : Ako radite u sustavu Windows, a još niste instalirali PostgreSQL i Debet Plus V12, tada možete preuzeti Debit Plus V12 sklop sa stranice za preuzimanje s unaprijed instaliranim PostgreSQL DBMS-om i povezanom bazom podataka (s osnovnom konfiguracijom za Ukrajinu). Inače, prvo morate instalirati PostgreSQL DBMS i Debet Plus V12 softverski paket, nakon čega možete konfigurirati vezu i uvesti PostgreSQL bazu podataka slijedeći ove upute.

Da biste povezali PostgreSQL bazu podataka, trebate učiniti sljedeće:

    Pokrenite "Debit Plus V12" i dodajte novu bazu (kontekstni izbornik "Dodaj novo").

    Ostavite potvrdni okvir "Dodaj postojeće na popis".

"DBMS" - POSTGRE.

"Poslužitelj baze podataka" - lokalni host.

"Naziv baze podataka" - navedite naziv baze podataka iz PostgreSQL DBMS-a malim latiničnim slovima (mala slova).

Bilješka: Obično se koristi jedna baza. Za posebne namjene baza podataka se može podijeliti na nekoliko, tada trebate označiti okvir pored "Koristi više baza podataka", kliknuti gumb "Dalje" i naznačiti korespondenciju "tagova" fizičkim bazama podataka. To može biti potrebno, na primjer, ako će se baze podataka nekoliko poduzeća odnositi na iste imenike (kontrastranke, stavke itd.). O ovom slučaju se dalje ne raspravlja.

"Direktorij postavki" - odredite put do osnovnih postavki za PostgreSQL (pogon \ DebetPlusV12 \ base \ pgdpbase).

Spremite promjene klikom na Završi.

    Pokrenite pgAdmin (PostgreSQL DBMS administrator), dodajte poslužitelj (File / Add Server ...) i dodajte novu bazu podataka (New Database ... izbornik).

Unesite naziv poslužitelja, localhost u polje Host, popunite ostala polja kako želite.

Unesite naziv baze podataka u polje "Naziv" (isto kao što je uneseno u polje "Poslužitelj" u postavkama za povezivanje s bazom podataka "Debet Plus V12").

    Za uvoz baze podataka iz arhive koristite "Vrati ..."

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

    Možete dodati korisnika dpadmin, koji je administrator, u Debit Plus V12 prema zadanim postavkama (bez lozinke).

Dodijelite sva prava ovom korisniku.

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

Osvježite popis baza (izbornik "Osvježi").

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

Na kartici "Odabir" kliknite gumb "Provjeri sve", a na kartici "Privilegije" označite potvrdni okvir "SVE" i kliknite gumb "Dodaj/Promijeni". Spremite promjene.

    Aktivirajte postavku veze s bazom podataka u softveru Debet Plus V12 (kontekstni izbornik "Učini aktivnim").

Sustav će tražiti lozinku za povezivanje s bazom podataka. Kliknite Da.

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

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

Ostavite sve potvrdne okvire prema zadanim postavkama (u stupcu "Ponovno indeksiranje" moraju postojati potvrdni okviri za sve tablice baze podataka).

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

    Pokrenite "Debit Plus V12" i dodajte novu bazu (kontekstni izbornik "Dodaj novo").

    Ostavite potvrdni okvir "Dodaj postojeće na popis":

U prvom polju navedite proizvoljan naziv baze podataka (naziv može biti različit na svakom radnom računalu).

"DBMS" - POSTGRE.

Poslužitelj baze podataka je naziv ili IP adresa poslužitelja.

Port poslužitelja baze podataka - odredite port poslužitelja baze podataka, prema zadanim postavkama 5432.

"Naziv baze podataka" - navedite naziv baze podataka latiničnim slovima malim slovima.

"Naziv sheme baze podataka" je dpbase.

Označite samo okvir "Koristi autorizaciju Debit Plus".

"Direktorij postavki" - odredite put do osnovnih postavki za PostgreSQL (mrežni put \ DebetPlusV12 \ base \ pgdpbase).

Spremite napravljene promjene klikom na gumb "Završi", a zatim aktivirajte bazu.

    Postavite parametre pokretanja (glavni izbornik "Postavke" / "Parametri pokretanja")

U prozoru koji se pojavi, u polje "Lozinka za promjenu postavki" unesite lozinku 150301 i kliknite na gumb "Prihvati".

Odredite put do mape JDebet na poslužitelju i kliknite na Spremi. Učinite bazu aktivnom i možete se baciti na posao.

Vrhunski povezani članci