Komme i gang med PostgreSQL. Postgresql Ekstern tilkobling Administrere databasebrukere

PostgreSQL er en objektrelasjonell DBMS på tvers av plattformer med åpen kildekoden. I denne artikkelen lærer du hvordan du installerer PostgreSQL på Ubuntu Linux, kobler til den og kjører et par enkle SQL-spørringer, samt hvordan du setter opp sikkerhetskopier.

For å installere PostgreSQL 9.2 på Ubuntu 12.10, kjør følgende kommandoer:

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

La oss prøve å jobbe med DBMS gjennom skallet:

sudo -u postgres psql

La oss lage en testdatabase og en testbruker:

CREATE DATABASE test_database;
LAG BRUKER test_bruker MED passord "qwerty" ;
GIR ALLE PÅ DATABASE test_database TIL test_user;

For å gå ut av skallet, skriv inn kommandoen \q .

La oss nå prøve å jobbe med den opprettede databasen på vegne av test_user:

psql -h localhost test_database test_user

La oss lage en ny tabell:

CREATE SEQUENCE user_ids;
CREATE TABLE-brukere (
id INTEGER PRIMÆR NØKKEL STANDARD NEXTVAL ("user_ids") ,
pålogging CHAR(64) ,
passord CHAR(64));

Vær oppmerksom på at, i motsetning til noen andre DBMS-er, har ikke PostgreSQL kolonner med egenskapen auto_increment. I stedet bruker Postgres sekvenser. På for øyeblikket Det er nok å vite at ved å bruke nextval-funksjonen kan vi få unike tall for en gitt sekvens:

VELG NEXTVAL ("bruker_id" );

Ved å sette standardverdien for id-feltet til brukertabellen til NEXTVAL("bruker-ID"), har vi oppnådd samme effekt som auto_increment gir. Når vi legger til nye poster i tabellen, trenger vi ikke å spesifisere id, fordi en unik id vil bli generert automatisk. Flere tabeller kan bruke samme sekvens. På denne måten kan vi garantere at verdiene til enkelte felt i disse tabellene ikke overlapper hverandre. Slik sett er sekvenser mer fleksible enn auto_increment.

Den nøyaktig samme tabellen kan lages ved å bruke bare én kommando:

LAG TABELL brukere2 (
id SERIE PRIMÆR NØKKEL ,
pålogging CHAR(64) ,
passord CHAR(64));

I dette tilfellet opprettes sekvensen for id-feltet automatisk.

Ved å bruke \d kommandoen kan du nå se en liste over alle tilgjengelige tabeller, og ved å bruke \d brukere kan du se en beskrivelse av brukertabellen. Hvis du ikke får informasjonen du leter etter, prøv \d+ i stedet for \d . Du kan få en liste over databaser med kommandoen \l, og bytte til en bestemt database med kommandoen \c dbname. For å vise kommandohjelp, si \?

.

Det er viktig å merke seg at PostgreSQL konverterer tabell- og kolonnenavn til små bokstaver som standard. Hvis du ikke vil ha denne oppførselen, kan du bruke doble anførselstegn:

LAG TABELL "annen tabell" ("someValue" VARCHAR (64 ) );

En annen funksjon ved PostgreSQL som kan forårsake vanskeligheter når du begynner å jobbe med dette DBMS er de såkalte "skjemaene". Et skjema er noe som et navneområde for tabeller, som en katalog med tabeller i en database.

Opprette et skjema:

LAG SCHEMA bestillinger;

Bytt til opplegg:

SET søk_sti TIL bestillinger;

Du kan se en liste over eksisterende skjemaer ved å bruke \dn-kommandoen. Standardskjemaet er kalt offentlig. I prinsippet kan du med hell bruke PostgreSQL uten å vite om eksistensen av skjemaer. Men når du jobber med eldre kode, og i noen edge-tilfeller, kan det være veldig nyttig å vite om skjemaer.

Ellers er det ikke mye forskjellig å jobbe med PostgreSQL fra å jobbe med andre relasjons-DBMS:
INSERT INTO brukere (pålogging, passord)
VERDIER ("afiskon", "123456");

VELG * FRA brukere;

Hvis du nå prøver å koble til Postgres fra en annen maskin, vil du mislykkes:

psql -h 192.168.0.1 testdatabase testbruker
Psql: kunne ikke koble til serveren: Tilkoblingen ble nektet
Kjører serveren på vert "192.168.0.1" og godtar

TCP/IP-tilkoblinger på port 5432?

For å fikse dette, legg til linjen:

listen_addresses = "localhost,192.168.0.1"

...til filen /etc/postgresql/9.2/main/postgresql.conf også. : Oppmerksomhet Hvis du jobber med Windows OS og ennå ikke har installert PostgreSQL og Debit Plus V12, kan du laste ned Debit Plus V12-sammenstillingen fra nedlastingssiden med en forhåndsinstallert PostgreSQL DBMS og en tilkoblet database (med en grunnleggende konfigurasjon for Ukraina) . Ellers må du først installere PostgreSQL DBMS og programvarepakke

"Debit Plus V12", hvoretter du kan sette opp tilkoblingen og importere PostgreSQL-databasen ved å følge disse instruksjonene.

    For å koble til en PostgreSQL-database, må du utføre følgende trinn: Start "Debit Plus V12" og legg til (kontekstmenyen"Legg til ny")

    Legg igjen en hake i boksen "Legg til eksisterende i listen".

"DBMS" - POSTGRE.

"Databaseserver" - localhost.

"Databasenavn" - spesifiser navnet på databasen fra PostgreSQL DBMS med små latinske bokstaver (små bokstaver).

Note: Vanligvis brukes én base. For spesielle formål kan databasen deles inn i flere, så må du merke av i boksen ved siden av "Bruk flere databaser", klikk på "Neste" -knappen og angi korrespondansen mellom "taggene" til de fysiske databasene. Dette kan for eksempel være nødvendig hvis databasene til flere foretak skal referere til samme kataloger (motparter, varer osv.). Denne saken diskuteres ikke videre.

"Innstillingskatalog" - spesifiser banen til databaseinnstillingene for PostgreSQL (stasjon\DebetPlusV12\base\pgdpbase).

Lagre endringene ved å klikke på "Ferdig"-knappen.

    Kjør pgAdmin (PostgreSQL DBMS-administrator), legg til en server (Fil/Legg til server...) og legg til en ny database ("Ny database..."-meny).

Skriv inn servernavnet, localhost i Host-feltet, fyll ut de resterende feltene etter ønske.

Skriv inn navnet på databasen i "Navn"-feltet (det samme som angitt i "Server"-feltet i innstillingene for tilkobling til "Debit Plus V12"-databasen).

    For å importere en database fra et arkiv, bruk "Gjenopprett..."-menyen

Angi banen til databasearkivet dpbase.bakup (stasjon\DebetPlusV12\base\pgdpbase).

    Du kan legge til brukeren dpadmin, som er administrator i Debit Plus V12 som standard (uten passord).

Tildel alle rettigheter til denne brukeren.

Note : Du kan ikke legge til dpadmin-brukeren, så når du aktiverer databasen, må du skrive inn postgres-administratornavnet.

Oppdater listen over databaser (menyen "Oppdater").

Note : Hvis du ikke vil tilordne «Superbruker»-rettigheter til brukeren, tilordne rettigheter til «Tabeller» og «Visninger». For å gjøre dette, velg det korresponderende objektet og velg "Grant Wizard" kontekstmenyelementet.

På "Utvalg"-fanen klikker du på "Sjekk alle"-knappen, og på "Privileges"-fanen, merker du av for "ALLE" og klikker på "Legg til/endre"-knappen. Lagre endringene dine.

    Aktiver i Debit Plus V12-programvaren (kontekstmeny "Gjør aktiv").

Systemet vil be om et passord for å koble til databasen. Klikk Ja.

Oppmerksomhet! Hvis en slik melding ikke vises, start oppdateringen av databasestrukturene ved å velge menypunktet "Verktøy" / "Oppdater databasestrukturer".

Som et resultat vil følgende vindu vises:

La alle avmerkingsbokser være standard (det må være hakemerker i "Reindex"-kolonnen for alle databasetabeller).

Etter å ha fullført endringen, kan du begynne å jobbe.

    Start "Debit Plus V12" og legg til en ny base (kontekstmeny "Legg til ny").

    Legg igjen et merke i feltet "Legg til eksisterende i liste":

I det første feltet, skriv inn et vilkårlig navn for databasen (navnet kan være forskjellig på hver fungerende datamaskin).

"DBMS" - POSTGRE.

"Databaseserver" - navnet eller IP-adressen til serveren.

"Databaseserverport" - spesifiser databaseserverporten, standard er 5432.

"Databasenavn" - skriv inn navnet på databasen med små latinske bokstaver.

"Databaseskjemanavn" - dpbase.

Kryss kun av for "Bruk Debet Plus-autorisasjon".

"Innstillingskatalog" - spesifiser banen til databaseinnstillingene for PostgreSQL (nettverksbane\DebetPlusV12\base\pgdpbase).

Lagre endringene ved å klikke på "Fullfør"-knappen, og gjør deretter databasen aktiv.

    Angi startalternativer (hovedmeny "Innstillinger" / "Oppstartsalternativer")

I vinduet som vises, i feltet "Passord for å endre innstillinger", skriv inn passordet 150301 og klikk på "Godta".

Spesifiser banen til JDebet-mappen på serveren og klikk lagre. Gjør databasen aktiv og du kan begynne å jobbe.

En sårbarhet (CVE-2019-18634) er identifisert i sudo-verktøyet, som brukes til å organisere utføringen av kommandoer på vegne av andre brukere, som lar deg øke privilegiene dine i systemet. Problem […]

Utgivelsen av WordPress 5.3 forbedrer og utvider blokkredigeringsprogrammet introdusert i WordPress 5.0 med en ny blokk, mer intuitiv interaksjon og forbedret tilgjengelighet. Nye funksjoner i editoren […]

Etter ni måneder med utvikling er FFmpeg 4.2 multimediepakken tilgjengelig, som inkluderer et sett med applikasjoner og en samling biblioteker for operasjoner på forskjellige multimedieformater (opptak, konvertering og […]

  • Nye funksjoner i Linux Mint 19.2 Kanel

    Linux Mint 19.2 er en langsiktig støtteutgivelse som vil bli støttet frem til 2023. Den kommer med oppdatert programvare og inneholder forbedringer og mange nye […]

  • Linux Mint 19.2-distribusjon utgitt

    Utgivelse presentert Linux-distribusjon Mint 19.2, den andre oppdateringen til Linux Mint 19.x-grenen, basert på Ubuntu 18.04 LTS-pakkebasen og støttet til 2023. Distribusjonen er fullt kompatibel [...]

  • Nye BIND-tjenesteutgivelser er tilgjengelige som inneholder feilrettinger og funksjonsforbedringer. Nye utgivelser kan lastes ned fra nedlastingssiden på utviklerens nettsted: […]

    Exim er en meldingsoverføringsagent (MTA) utviklet ved University of Cambridge for bruk i Unix-systemer koblet til Internett. Den er fritt tilgjengelig i henhold til [...]

    Etter nesten to år med utvikling presenteres utgivelsen av ZFS på Linux 0.8.0, implementering filsystemet ZFS, pakket som en modul for Linux-kjernen. Modulen er testet med Linux-kjerner fra 2.6.32 til […]

    IETF (Internet Engineering Task Force), som utvikler Internett-protokoller og arkitektur, har fullført RFC for ACME (Automatic Certificate Management Environment)-protokollen […]

    Den ideelle sertifiseringsmyndigheten Let’s Encrypt, som kontrolleres av fellesskapet og gir sertifikater gratis til alle, oppsummerte resultatene fra det siste året og snakket om planene for 2019. […]

    0

    Jeg stusser. Vi har en postgres 9.2 database som vi har brukt en stund. Nå må vi kunne koble til den fra utenfor nettverket vårt.

    Så vi konfigurerer den eksterne IP-adressen og tester at vi kan koble til port 5432 fra den eksterne verten via telnet. Så dette beviser at nettverkstilkoblingen fungerer, brannmurer osv. er bra.

    Når jeg prøver å koble til:
    PSQL -h db.host.com -d dbname -p 5432 -U bruker

    Jeg kommer tilbake Psql: Serveren lukket tilkoblingen uventet.

    Jeg sjekket det
    listen_addresses = "*" er satt i postgresql.conf

    Og i pg_hba.conf har vi en linje som leser (kun for testformål)
    vert alle alle 0.0.0.0/0 md5

    Og jeg lastet inn databasen på nytt for å teste de valgte endringene.
    Så dette bør tillate tilkoblinger fra alle kilder.

    Psql-versjonen på databaseserveren er 9.2.14, og på klienten er den 9.2.13.

    Noen forslag eller ideer?

    • 1 svar
    • Sortering:

      Aktivitet

    1

    Jeg vil prøve noen ting for å få mer informasjon:

      Postgres tail logger inn på serveren for å se hva som skjer der når den er tilkoblet.

      Kjør psql --version for å sikre at den stemmer mer eller mindre med serverversjonen. (Jeg ser at du allerede har gjort dette, men jeg lar det være her for ettertiden.)

      Kjør strace psql.... for å se hvor langt det går til feil.

    Dette høres fortsatt ut som et nettverksproblem for meg. Hva er telnet-kommandoen du jobber med? "Ekstern IP" høres det samme ut som du ville gjort på AWS. Innstillinger ekstern tilgang til VPC tar mange skritt. Har du noen andre tjenester åpne for utsiden som kjører?

    Du kan også feilsøke ved å slå av Postgres-serveren og bruke nc til å lytte på 5432. Deretter telnet og se om du kan sende data frem og tilbake.

    1

    Paul, takk for forslagene. Jeg gjorde en strekning og sjekket versjonene. Og du hadde rett, jeg prøvde å koble til fra AWS. Det viste seg at det var nivået jeg brukte i belastningsbalanseren for kun å tillate tilgang til IP-2-områdene til IP-ene som AWS publiserer. Da jeg deaktiverte irule, kunne jeg koble til umiddelbart. Så dette må være surrealistisk logikk siden jeg sjekket den offentlige IP-en til EC2-forekomsten min, og den ble faktisk oppført i irule via CIDR-varsling. -

    Forbindelse