wprowadzenie

PostgreSQL jest potężnym systemem zarządzania obiektowo-relacyjnymi bazami danych, udostępnianym na elastycznej licencji w stylu BSD. PostgreSQL zawiera wiele zaawansowanych funkcji, jest bardzo szybki i Zgodny ze standardami.

PostgreSQL posiada powiązania dla wielu języków programowania, takich jak C, C++, Python, Java, PHP, Ruby… Może być używany do zasilania wszystkiego, od prostych aplikacji internetowych po ogromne bazy danych z milionami rekordów.,

Instalacja klienta

Jeśli chcesz połączyć się tylko z zewnętrznym serwerem PostgreSQL, nie instaluj głównego pakietu PostgreSQL, ale zamiast tego zainstaluj pakiet klienta PostgreSQL. Aby to zrobić, użyj następującego polecenia

 sudo apt-get install postgresql-client

następnie łączysz się z serwerem za pomocą następującego polecenia

 psql -h server.domain.org database user

Po wprowadzeniu hasła uzyskujesz dostęp do PostgreSQL za pomocą poleceń liniowych., Możesz na przykład wstawić następujący

 SELECT * FROM table WHERE 1;

zakończysz połączenie za pomocą

 \q

instalacja

aby zainstalować serwer lokalnie użyj wiersza poleceń i wpisz:

 sudo apt-get install postgresql postgresql-contrib

spowoduje to instalację najnowsza wersja dostępna w wydaniu Ubuntu i powszechnie używane dodatki do niej.

Zobacz „Linki zewnętrzne” poniżej, aby uzyskać nowsze wersje.,

instalowanie PostGIS, języków proceduralnych, interfejsów klienckich, itp

dodatkowe pakiety zawierają środowiska uruchomieniowe języka proceduralnego, dodatki takie jak PostGIS, interfejsy klienckie języka, takie jak psycopg2 dla Pythona, itp. Możesz uzyskać listę za pomocą:

 apt-cache search postgres

Administracja

pgAdmin III jest przydatnym GUI dla PostgreSQL, jest niezbędny dla początkujących. Aby go zainstalować, wpisz w wierszu poleceń:

 sudo apt-get install pgadmin3

Możesz również użyć menedżera pakietów Synaptic z menu administracyjnego systemu> aby zainstalować te pakiety.,

podstawowa konfiguracja serwera

aby rozpocząć, musimy ustawić hasło użytkownika (roli) PostgreSQL o nazwie „postgres”; w przeciwnym razie nie będziemy mogli uzyskać dostępu do serwera zewnętrznie. Jako lokalny użytkownik Linuksa” postgres”, możemy łączyć się i manipulować serwerem za pomocą polecenia psql.

w terminalu wpisz:

sudo -u postgres psql postgres

łączy się jako rola o tej samej nazwie co użytkownik lokalny, tj. „postgres”, z bazą danych o nazwie „postgres” (pierwszy argument psql).,

Ustaw hasło dla roli bazy danych „postgres” za pomocą polecenia:

\password postgres

i podaj hasło po wyświetleniu monitu. Tekst hasła zostanie ukryty w konsoli ze względów bezpieczeństwa.

wpisz Control+d lub \q, aby wyjść z monitu posgreSQL.

Utwórz bazę danych

aby utworzyć pierwszą bazę danych, którą nazwiemy „mydb”, wystarczy wpisać:

 sudo -u postgres createdb mydb

zainstaluj Oprzyrządowanie serwera (dla PgAdmin) dla Postgresql 8.4 lub 9.3

PgAdmin wymaga instalacji dodatku dla pełnej funkcjonalności., Dodatek” adminpack”, który nazywa Oprzyrządowanie serwera, jest częścią postgresql-contrib, więc musisz zainstalować ten pakiet, jeśli jeszcze tego nie zrobiłeś:

 sudo apt-get install postgresql-contrib

następnie, aby aktywować rozszerzenie dla „”Postgresql 8.4″”, uruchom pakiet adminpack.skrypt sql, po prostu wpisz:

 sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql

Dla „Postgresql 9.3″+ zainstaluj „rozszerzenie adminpack” w bazie danych „postgres”:

 sudo -u postgres psql CREATE EXTENSION adminpack;

Alternatywna Konfiguracja serwera

Jeśli nie zamierzasz łączyć się z bazą danych z innych maszyn, ta alternatywna konfiguracja może być prostsza.,

domyślnie w Ubuntu Postgresql jest skonfigurowany tak, aby używać uwierzytelniania 'ident sameuser' dla dowolnych połączeń z tego samego komputera. Sprawdź doskonałą dokumentację Postgresql, aby uzyskać więcej informacji, ale zasadniczo oznacza to, że jeśli Twoja nazwa użytkownika Ubuntu to ” foo „i dodajesz” foo ” jako użytkownik Postgresql, możesz połączyć się z bazą danych bez konieczności podawania hasła.,

ponieważ jedynym użytkownikiem, który może połączyć się ze świeżą instalacją jest użytkownik postgres, oto jak utworzyć konto bazy danych (które jest w tym przypadku również superużytkownikiem bazy danych) o tej samej nazwie, co nazwa logowania, a następnie utworzyć hasło dla użytkownika:

 sudo -u postgres createuser --superuser $USER sudo -u postgres psql
 postgres=# \password $USER

programy klienckie domyślnie łączą się z lokalnym hostem używając nazwy użytkownika Ubuntu i spodziewaj się znaleźć bazę danych o tej nazwie., Aby było to naprawdę łatwe, użyj nowych uprawnień administratora nadanych powyżej, aby utworzyć bazę danych o tej samej nazwie, co nazwa logowania:

 sudo -u postgres createdb $USER

podłączenie do własnej bazy danych, aby wypróbować jakiś SQL, powinno być teraz tak proste, jak:

 psql

tworzenie dodatkowej bazy danych jest równie łatwe, więc na przykład po uruchomieniu tego:

 create database amarokdb;

możesz śmiało powiedzieć amarokowi, aby używał PostgreSQL do przechowywania swojego katalogu muzycznego., Nazwa bazy danych to amarokdb, nazwa użytkownika to twoja własna nazwa logowania, a nawet nie potrzebujesz hasła dzięki 'ident sameuser', więc możesz zostawić to puste.

używając interfejsu graficznego pgAdmin III

aby zorientować się, co potrafi PostgreSQL, możesz zacząć od uruchomienia klienta graficznego. W terminalu typu:

 pgadmin3

zostanie wyświetlony interfejs pgAdmin III. Kliknij przycisk” Dodaj połączenie do serwera ” (lewy górny róg). W nowym oknie dialogowym wprowadź adres 127.0.0.1 (host lokalny jest domyślny, więc można go pominąć.,), opis serwera, domyślną bazę danych („mydb” w powyższym przykładzie), nazwę użytkownika („postgres”) i hasło. Potrzebny jest jeszcze jeden krok, aby pgAdmin III mógł połączyć się z serwerem, czyli edytować pg_hba.plik conf i zmień metodę uwierzytelniania z peer na md5 (nie będzie działać, jeśli nie ustawiłeś hasła):

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

i zmień linię

# Database administrative login by Unix domain socketlocal all postgres peer

na

# Database administrative login by Unix domain socketlocal all postgres md5

teraz powinieneś ponownie załadować zmiany konfiguracji serwera i połączyć się pgAdmin III na serwer bazy danych PostgreSQL.,

sudo /etc/init.d/postgresql reload

za pomocą tego GUI możesz rozpocząć tworzenie i zarządzanie bazami danych, odpytywać bazę danych, uruchamiać SQl itp.

Zarządzanie serwerem

aby dowiedzieć się więcej o zarządzaniu PostgreSQL (ale bez specyfiki Ubuntu), zapoznaj się z oficjalną dokumentacją PostgreSQL

Zarządzanie użytkownikami i prawami

zarządzanie użytkownikami jest szczegółowo omówione w rozdziale uwierzytelnianie klienta dokumentacji PostgreSQL.

aby zarządzać użytkownikami, musisz najpierw edytować /etc/postgresql/current/main/pg_hba.,conf i zmodyfikować domyślną konfigurację, która jest bardzo zablokowana i bezpieczna. Na przykład, jeśli chcesz, aby postgres zarządzał własnymi użytkownikami (Nie powiązanymi z użytkownikami systemowymi), dodasz następującą linię:

8<-------------------------------------------# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 10.0.0.0 255.255.255.0 md58<-------------------------------------------

co oznacza, że w Twojej sieci lokalnej (10.0.0.0/24 – zastąp własną siecią lokalną !), użytkownicy postgres mogą łączyć się poprzez sieć z bazą danych podając klasyczny użytkownik / hasło pary.

oprócz umożliwienia użytkownikowi połączenia się przez sieć z bazą danych na serwerze, musisz włączyć PostgreSQL do nasłuchiwania w różnych sieciach., Aby to zrobić, otwórz plik / etc/postgresql/current/main / postgresql.conf w ulubionym edytorze i zmienić listen_addresses jak poniżej:

listen_addresses = '*'

słuchać na wszystkich interfejsach sieciowych. Inne opcje można znaleźć w dokumentach listen_addresses.

aby utworzyć bazę danych z użytkownikiem, który ma pełne prawa do bazy danych, użyj następującego polecenia:

sudo -u postgres createuser -D -A -P myusersudo -u postgres createdb -O myuser mydb

pierwsza linia poleceń tworzy użytkownika bez praw do tworzenia bazy danych (-D) bez praw do dodawania-A) i poprosi o podanie hasła (-P)., Druga linia poleceń tworzy bazę danych 'mydb z' myuser ' jako właścicielem.

Ten mały przykład będzie prawdopodobnie odpowiadał większości Twoich potrzeb. Więcej informacji można znaleźć na odpowiednich stronach podręcznika ekranowego lub w dokumentacji online.

ponowne uruchomienie serwera

Po skonfigurowaniu sieci / użytkowników może być konieczne ponowne załadowanie serwera, oto sugerowane polecenie, aby to zrobić.

sudo /etc/init.d/postgresql reload

niektóre zmiany ustawień w postgresql.,conf wymaga pełnego restartu, który zakończy aktywne połączenia i przerywa niezakontraktowane transakcje:

sudo /etc/init.d/postgresql restart

Czytaj dalej

Jeśli nie jesteś zaznajomiony z SQL, możesz chcieć przyjrzeć się temu potężnemu językowi, chociaż niektóre proste zastosowania PostgreSQL mogą nie wymagać tej wiedzy (np. prosty projekt Django).

strona PostgreSQL zawiera wiele informacji na temat korzystania z tej bazy danych. W szczególności samouczek jest użytecznym punktem wyjścia, ale możesz pominąć krok instalacji, ponieważ już go zainstalowałeś za pomocą pakietów Ubuntu.,

Rozwiązywanie problemów

fe_sendauth: Nie podano hasła

Twój pg_hba.conf określa, że uwierzytelnianie md5 ma być używane do tego połączenia na podstawie hosta origin, metody połączenia i żądanej nazwy użytkownika/bazy danych, ale aplikacja nie podała hasła.

zmień tryb uwierzytelniania lub ustaw hasło dla użytkownika, z którym się łączysz, a następnie określ to hasło w ustawieniach połączenia aplikacji.,

FATAL: rola „myusername” nie istnieje

domyślnie PostgreSQL łączy się z użytkownikiem PostgreSQL o tej samej nazwie co bieżący użytkownik Uniksa. Nie utworzyłeś użytkownika PostgreSQL o tej nazwie w swojej bazie danych.

Utwórz odpowiedniego użytkownika lub określ inną nazwę Użytkownika, z którą chcesz się połączyć. W narzędziach wiersza poleceń robi to flaga-U.

FATAL: baza danych „myusername” nie istnieje

istnieje użytkownik o nazwie „myusername”, ale nie ma bazy danych o tej samej nazwie.,

domyślnie PostgreSQL łączy się z bazą danych o tej samej nazwie, co użytkownik, z którym się łączysz, ale nie tworzy automatycznie bazy danych, jeśli nie istnieje.

Utwórz bazę danych lub określ inną bazę danych, z którą chcesz się połączyć.

FATAL: peer authentication failed for user „myusername”

łączysz się z localhost przez gniazdo unix. Istnieje użytkownik o nazwie „myusername” , ale obecny użytkownik Uniksa nie jest taki sam jak ta nazwa użytkownika., PostgreSQL jest ustawiony na używanie uwierzytelniania „peer” na gniazdach unix dla tego połączenia user / db, więc wymaga dopasowania nazw użytkowników unix i postgresql.

łącz się z użytkownikiem Uniksa, który odpowiada żądanemu użytkownikowi PostgreSQL-być może z sudo-u theusername psql – lub zmień pg_hba.conf, aby użyć innego trybu uwierzytelniania, takiego jak ” md5 ” dla tej nazwy użytkownika.,

nie można połączyć się z serwerem: brak takiego pliku lub katalogu

taki błąd (prawdopodobnie z inną ścieżką gniazd Unixowych, w zależności od instalacji):

 psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

może oznaczać wiele rzeczy:

* serwer nie działa;

* serwer ma inne unix_socket_directories do domyślnych w Twoim kliencie.libpq, albo z powodu różnych domyślnych kompilacji, albo niedopasowanych ustawień;

* serwer nasłuchuje na innym „porcie”., PostgreSQL emuluje porty TCP / IP na gniazdach Uniksa, używając numeru portu jako przyrostka dla pliku gniazda, np. 5432.

najpierw upewnij się, że serwer jest uruchomiony. Na Ubuntu, ps-u postgres-f pokaże Ci wszystkie procesy działające jako użytkownik postgres – chcesz zobaczyć wiele procesów o nazwie postgres.

teraz upewnij się, że serwer nasłuchuje tam, gdzie klient myśli, że jest. Aby sprawdzić katalog gniazd serwera PostgreSQL:

 sudo -u postgres psql -c "SHOW unix_socket_directories;"

lub w starszych wersjach PostgreSQL, unix_socket_directory jako parametr zmienił nazwę., Aby wyświetlić port serwera (który dotyczy zarówno gniazd TCP/IP, jak i unix):

 sudo -u postgres psql -c "SHOW port;"

Jeśli nie możesz nawet połączyć się z psql pod unixowym użytkownikiem postgres, możesz sprawdzić katalog gniazd za pomocą lsof:

 $ sudo lsof -U -a -c postgres COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 6565 postgres 5u unix 0xffff88005a049f80 0t0 183009 /tmp/.s.PGSQL.5432 postgres 6566 postgres 1u unix 0xffff88013bc22d80 0t0 183695 socket postgres 6566 postgres 2u unix 0xffff88013bc22d80 0t0 183695 socket

w tym przypadku pierwsza linia To lokalizacja gniazd. Ten serwer posiada Socket directory / tmp z portem 5432.,

Jeśli twój klient szuka w innym katalogu gniazd, prawdopodobnie próbujesz połączyć się przez gniazda unix z domyślną ścieżką gniazd i/lub z domyślnym portem, a libpq, do którego jest podłączony twój Klient, ma inną skompilowaną ścieżkę gniazd unix i/lub port niż uruchomiony PostgreSQL. Najprawdopodobniej twój LD_LIBRARY_PATH lub /etc/ld.so.conf ma inne libpq przed tym, które przyszło z twoją wersją PostgreSQL. Generalnie nie ma to większego znaczenia, możesz po prostu nadpisać katalog gniazd.,

aby określić alternatywny katalog gniazd i/port do połączenia, określ katalog gniazd jako parametr hosta w opcjach połączenia, np. aby połączyć się jako użytkownik bob z serwerem nasłuchującym w /tmp na porcie 5433:

 psql -h /tmp -p 5433 -U bob ...

lub w postaci łańcucha połączeń:

 psql "host=/tmp port=5433 user=bob ..."

to samo działa z każdym klientem, który używa libpq (wszystkie narzędzia klienckie PostgreSQL, Plus np. psycopg2, PG gem w Ruby/Rails, Postgres i PDO PHP, DBB::PG Perla, itd.)., Nie działa na klientach innych niż libpq, takich jak PgJDBC, py-postgresql, itp., ale większość z nich w ogóle nie obsługuje gniazd uniksowych. Zapoznaj się z dokumentacją klienta dla klientów innych niż libpq.

oficjalne pliki do pobrania PostgreSQL

projekt PostgreSQL udostępnia oficjalną listę miejsc pobierania, w tym repozytorium oprogramowania Ubuntu, na swojej stronie pobierania. W szczególności użytkownicy Ubuntu mogą uzyskać nowsze wersje PostgreSQL niż te spakowane w ich wydaniu Ubuntu za pomocą apt-get via apt.postgresql.org.

wsparcie i usługi związane z PostgreSQL znajdują się na stronie usługi i wsparcie.,

EnterpriseDB

strona PostgreSQL Linux downloads zawiera sekcję „Instalator Graficzny” stworzoną przez EnterpriseDB. Pobierasz instalator, zmieniasz jego właściwości, aby umożliwić jego uruchomienie jako polecenie (ma .run extension), i uruchom go z wiersza polecenia jak w ” sudo whatever.run”.

kończysz z

  • skonfigurowaną instancją serwera DB, która rozpoczyna się z Twoim serwerem
  • pgAdmin III UI client application

zauważ, że zainstalowane oprogramowanie nie będzie zintegrowane z Centrum Oprogramowania Ubuntu., W rezultacie nie otrzymasz żadnych aktualizacji zabezpieczeń z Ubuntu. Jednak zainstalowana wersja będzie ściśle pasować do najnowszej wersji Ubuntu.

pod klucz Linux

oparte na Ubuntu urządzenie PostgreSQL jest jednym z najprostszych sposobów na rozpoczęcie pracy z PostgreSQL na Ubuntu. Jest częścią rodziny wstępnie zintegrowanych urządzeń Linuksowych pod klucz opartych na Ubuntu 10.04.1 (Lucid LTS).