
PostgreSql
Instalacja PostgreSQL
Instalacja z konsoli:
1
| sudo apt-get install postgresql |
Logowanie z konsoli
Aby zalogować się do konsoli administracyjnej serwera PostgreSQL należy użyć polecenia:
Gdzie:
‘sudo -u postgres’ – przełącza na użytkownika systemowego postgres.
‘psql’ – jest wywołaniem konsoli administracyjnej serwera PosrgreSQL.
Podczas instalacji PostgreSQL użytkownik postgres jest automatycznie dodawany do systemu, przez polecenia inicjalizowane z pakietów instalacyjnych. Aby dostać się do konsoli nowo zainstalowanego serwera PostgreSQL konieczne jest więc zmiana użytkownika systemowego, łączącego się z tym serwerem na użytkownika postgres.
Domyślne dane dostępowe dla nowo zainstalowanego systemu to:
Dalej przedstawiony zostanie opis zmiany hasła dla użytkownika postgres. Pozostawienie pustego hasła jest złym rozwiązaniem także na instalacjach testowych/developerskich.
Nowo zainstalowany PostgreSQL pozwala na dostęp poprzez konsole, aby administrować serwerem przy pomocy narzędzi zewnętrznych takich jak phpPgAdmin czy pgAdminIII konieczne będą małe akrobacje opisane w ‘Ustawienie dostępu dla nowo zainstalowanego serwera’
Zarządzanie stanem serwera
Zarządzanie stanami serwera odbywa się porzez polecenie:
Niektóre zmiany w ustawieniach serwera wymagają przeładowania jego konfiguracji poprzez opcję reload.
1
| sudo service postgresql reload |
Aby wyłączyć serwer możemy użyć opcji stop
1
| sudo service postgresql stop |
Aby uruchomić serwer używamy opcji start
1
| sudo service postgresql start |
Restart jest jednoznaczny z wyłączeniem i włączeniem serwera
1
| sudo service postgresql restart |
Ustawienie dostępu dla nowo zainstalowanego serwera
1. Przejście do terminala i uruchomienie psql:
1
| :~$ sudo su postgres psql |
Pojawia się znak zachęty psql:
2. Zmiana/Ustawienie hasła dla użytkownika:
1
| # ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres'; |
Istotne jest aby każde polecenie kończyć średnikiem. Samo użycie enter/return powoduje jedynie przejście do nowej linii i kontynuacje polecenia.
‘postgres’ to identyfikator domyślnego użytkownika z uprawnieniami administratora.
Domyślnie użytkownik ten nie posiada hasła. Zalecane jest więc nadanie mu hasła jak najszybciej po instalacji.
Powyższy przykład ustawia hasło, które jest identyczne z identyfikatorem użytkownika, co oczywiście w realnych zastosowaniach nie jest dobrym pomysłem.
4. Utworzenie nowej bazy danych:
1
| # CREATE DATABASE lesson1; |
‘lesson1′ jest tutaj identyfikatorem nowo tworzonej bazy danych. Podczas wyboru identyfikatora bazy danych należy unikać słów kluczowych związanych ze standardem SQL czy słów specjalnych dla serwera PostgreSQL. Dobra nazwa bazy może być związana z domeną, lub też powinna jak najlepiej oddawać to co sobą reprezentuje i nie należy obawiać się długich nazw.
5. Utworzenie nowego użytkownika:
1
| # CREATE USER dbuser WITH ENCRYPTED PASSWORD 'dbpass'; |
*dbuser to identyfikator nowo utworzonego użytkownika.
*dbpass to hasło
6. Przydzielenie wszystkich przywilejów dla użytkownika w ramach określonej bazy:
1
| # GRANT ALL PRIVILEGES ON DATABASE lesson1 TO dbuser; |
*ALL – oznacza wszystkie możliwe przywileje. Klauzule ta można zamienić na wybrane przywileje według dokumentacji.
*lesson1 – identyfikator bazy danych
*dbuser – identyfikator użytkownika
Pliki dostępowe dla PostgreSQL
Pliki konfiguracyjne PostgreSQL znajdują się w katalogu:
1
| /etc/postgresql/9.1/main/ |
Przy ustawieniach dostępu do serwera na szczególną uwagę zasługuje plik:
1
| /etc/postgresql/9.1/main/pg_hba.conf |
Zawiera on dość dobry opis z którym warto się zapoznać. Treści zaczynające się do znaków # są komentarzami nie mającymi wpływu na działanie serwera. Końcówka pliku zawiera klauzule ustawiające dostęp.
Przykładowo fragment pliku:
1 2
| # IPv4 local connections:
host all all 127.0.0.1/32 md5 |
Oznacza, że w przypadku wszystkich prób dostępu do serwera za pomocą interfejsu sieciowego, po adresie 127.0.0.1 serwer będzie dostarczane hasła przetwarzał funkcją haszującą md5. Odpowiada to wcześniej użytym komendom:
1
| [CREATE/UDPATE] USER dbuser WITH ENCRYPTED PASSWORD 'dbpass'; |
Gdzie ENCRYPTED odnosi się właśnie do metody hashującej md5. Także ustawienie hasła bez opcji encrypted w sytuacji kiedy autoryzacja dla danego przypadku ustawiona jest na md5 spowoduje, błędy podczas prób logowania. Jest to dość pospolity problem z którym zmagają się początkujący użytkownicy PostgreSQL.
Także komendy użyte podczas prac administracyjnych jak dodawanie użytkowników muszą uwzględniać ustawienia dostępu dla serwera zawarte w pg_hba.conf.
Klauzule dostępu w pliku pg_hba.conf mogą być rozbudowywane/zmieniane w miarę pojawiania się nowych użytkowników o różnych ustawieniach dostępu do serwera.
Instalacja pgAdmin3
Instalacja z konsoli:
1
| sudo apt-get install pgadmin3 |
pgAdmin3 jest aplikacją okienkową także jego instalacja wymaga serwera okien, który jest domyślnie dostępny w każdej instalacji ubuntu.
Po uruchomieniu programu należy wybrać opcję „Zdefiniuj połączenie dla serwera” i uzupełnić dane połączenia zgodnie z wcześniej ustawionymi identyfikatorami użytkownika, bazy danych i hasłem.
Instalacja phpPgAdmin
Instalacja z konsoli:
1
| sudo apt-get install phppgadmin |
phpPgAdmin jest programem działającym pod przeglądarką internetową także do jego uruchomienia potrzebny jest serwer ww oraz interpreter języka PHP.
Apache2:
1 2
| sudo apt-get install apache2
sudo vim /etc/apache2 httpd.conf |
umieszczamy:
i uaktualniamy konfigurację dla serwera:
1
| sudo /etc/init.d/apache2 reload |
PHP:
1
| sudo apt-get install php5 |
Program jest teraz dostępny pod domeną: http://localhost/phppgadmin/
phpPgAdmin domyślnie nie pozwala na logowanie się użytkownikom nie posiadającym hasła. Także użytkownik ‘postgres’ oraz inni użytkownicy, których identyfikatory (pgsql, postgres, root, administrator) wskazują na to, że są użytkownikami administracyjnymi, nie będą mogli się zalogować.
Konfigurację tego ograniczenia znaleźć można w pliku:
/etc/phppgadmin/config.inc.php
Przestawienie opcji:
1
| $conf['extra_login_security'] = true; |
rozwiąże problem z dostępem. Oczywiście jest to rozwiązanie dobre dla serwerów testowych/developerskich i ze względów bezpieczeństwa nie dopuszczalne dla serwerów produkcyjnych.
Załadowanie bazy zrzuconej uprzednio do pliku
1
| sudo -u postgres psql -U postgres -d dbname -f schema.sql |
gdzie:
postgres – urzytkownik systemowy
postgres – urzytkownik PostgreSQL
dbname – nazwa bazy
schema.sql – plik ze schematem bazy
psql
Wybrane opcje linii poleceń psql (używane podczas uruchamiania programu):
- U – Ustawia Użytkownika bazy danych (domyślnie: $PGUSER lub aktualnie zalogowany użytkownik systemu)
Wybrane komendy wewnętrzne psql (używane z poziomu programu):
\c – Lista wszystkich komend
\q – Wyjście
\set – Ustawia zmienną wewnętrzną serwera
\unset – Resetuje zmienną wewnętrzną serwera
\h [komenda] – Wyświetla pomoc (dokładny opis) dla wybranej komendy
\c[onnect] [bazwa|- [użytkownik]] – Łączy do nowej bazy danych
\l – Lista baz danych
\dn – Lista schematów
\encoding – Ustawia kodowanie (UTF8 jest tym co tygrysy lubią najbardziej)
Wybrane polecenia SQL
Wylistowanie użytkowników bazy
1
| select * from pg_shadow; |
lub
polecenia mogą przekierowywać wyjście na edytor vim. W takim wypadku należy wpisać :q i zatwierdzić poprzez enter.