Skocz do zawartości

Problem Z Postgresql


TomekK

Rekomendowane odpowiedzi

Witam,

Teoretycznie wszystko sie instaluje poprawnie (yum install postgresql), ale nie potrafie tego nidzie na dysku odnalezc. Skrypt startujacy (wgrany recznie z archiwum jakie otrzymalem od firmy) wywala problem: "Brak dostpu". Instalowalem zgodnie z HOWTO znalezionym na tym forum (jakis link zewnetrzny). Opcja yum erase dziala po zainstalowaniu, wiec teoretycznie gdzies to powinno byc. Ale skad problem Brak dostepu.

 

Przepraszam za brak polskich znakow, ale nie mam ich w Fedorze (klawiatura "polski", a i tak nie ma :(). Ale nie poddam sie!! :)

Przeszukalem forum, ale podobnego problemu nikt chyba tutaj nie poruszal.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chodzi o postgresql, to raczej nie pomogę.

W sprawie polskich liter zobacz co pokazują polecenia

cat /etc/sysconfig/i18n
locale

Chociaż w sumie lepiej by było w tym temacie nowy wątek założyć zgodnie z zasadą "jeden problem - jeden wątek" <_<

Odnośnik do komentarza
Udostępnij na innych stronach

Teoretycznie wszystko sie instaluje poprawnie (yum install postgresql), ale nie potrafie tego nidzie na dysku odnalezc. Skrypt startujacy (wgrany recznie z archiwum jakie otrzymalem od firmy) wywala problem: "Brak dostpu". Instalowalem zgodnie z HOWTO znalezionym na tym forum (jakis link zewnetrzny). Opcja yum erase dziala po zainstalowaniu, wiec teoretycznie gdzies to powinno byc. Ale skad problem Brak dostepu.

 

Pakiet postgresql zawiera biblioteki i klienta. Są one niezbędne, ale nie pozwalają na uruchomienie własnej bazy. Serwer postgresql'a zainstalujesz z pakietu postgresql-server.

Zawartość zainstalowanego pakietu listuje się przez rpm -ql nazwa-pakietu, a niezainstalowanego dodatkowo z opcją -p.

Jeżeli chodzi o samą bazę, to domyślnie jest ona umieszczana w /var/lib/pgsql.

 

Oprócz instalacji, przyczyną braku dostępu może być też firewall.

Odnośnik do komentarza
Udostępnij na innych stronach

Zainstalowałem ten postgresql-server i dzięki temu mam już kilka katalogów (pgsql), ale nadal nie mam katalogu PGDATA (lub nie wiem gdzie go szukać) i nie wiem gdzie jest domyślne miejsce instalacji programów. Niestety skrypt startujący nadal nie rusza (po wpisaniu polecenia mam "Brak dostępu"). Czy nadal czegoś mogę nie mieć zainstalowanego? Próbuję uruchomić to cały czas z roota.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli zainstalowałeś serwer, to włącz go:

/etc/init.d/postgresql start

Na pewno Ci powie, że klaster bazy danych nie jest zainicjowany, i podpowie jak go utworzyć. Domyślnie zrobi go w /var/lib/pgsql/data

Pozostaje jeszcze utworzenie właściciela dla Twojej bazy, być może także samej bazy, konfiguracja praw dostępu w pg_hba.conf, i można działać.

 

Odnośnik do komentarza
Udostępnij na innych stronach

Otrzymałem coś takiego:

 

[root@localhost ~]# /etc/init.d/postgresql start

/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
                                                           [ZAWIÓDŁ]
[root@localhost ~]# service postgresql initdb
[root@localhost ~]# /etc/init.d/postgresql start
Uruchamianie usługi postgresql:                            [  OK  ]

 

Czy jest już wszystko wporządku?

 

 

____

 

Chyba jednak nie... Ręce mi opadają, bo polecenie "create user" zostaje przedstawione jako "command not found". Jestem już bliżej niż dalej, ale ciągle nie mogę z tą bazą się połączyć..

Odnośnik do komentarza
Udostępnij na innych stronach

[root@localhost ~]# service postgresql initdb

[root@localhost ~]# /etc/init.d/postgresql start

Uruchamianie usługi postgresql: [ OK ][/code]

 

Czy jest już wszystko wporządku?

Tak: zainicjowałeś klaster postgresq i uruchomiłeś serwer.

Chyba jednak nie... Ręce mi opadają, bo polecenie "create user" zostaje przedstawione jako "command not found". Jestem już bliżej niż dalej, ale ciągle nie mogę z tą bazą się połączyć..

Trzeba jeszcze co nieco pokonfigurować:

* nasłuchiwanie -- patrz /var/lib/pgsql/data/postgresql.conf (domyślnie słucha tylko z localhosta, jeżeli ci to wystarcza to nie musisz nic więcej)

* założyć użytkownika właściciela Twojej bazy -- za pomocą polecenia create, ale to jest polecenie SQL a nie shella systemowego. Musisz je wydać albo przez klienta, albo przez makro. Domyślnym, firmowym klientem administracyjnym postgresa jest konsolowy psql. Makro tworzące użytkowników nazywa się createuser, możesz je wywołać z shella systemowego.

* zabezpieczyć dostęp do bazy -- plik /var/lib/pgsql/data/pg_hba.conf

* umożliwić dojście do bazy przez firewall, o ile potrzebujesz połączeń z zewnątrz. Plik /etc/sysconfig/iptables

* jeszcze warto dodać wpisy dla postgres w /etc/hosts.allow i hosts.deny

 

Odnośnik do komentarza
Udostępnij na innych stronach

Coraz lepiej :).

 

Potrzebuję połączeń z innych komputerów w sieci dlatego prosiłbym Cię o podanie co należy uzupełnić w pliku iptables.

Jak mogę sprawdzić czy baza danych jest dostępna z drugiego komputera w sieci (WinXP)? Gdy próbuję zalogować się do niej jako użytkownik postgres bez hasła mam Connection TIMEOUT.

 

 

Tak wygląda po zalogowaniu się do psql:

 

[root@localhost ~]# psql -U postgres
Welcome to psql 8.3.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \l
        List of databases
   Name    |  Owner   | Encoding 
-----------+----------+----------
postgres  | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(3 rows)

 

I teraz chciałbym dostać się przykładowo do bazy template1. Jak to można uczynić (z drugiego komputera w sieci)?

Odnośnik do komentarza
Udostępnij na innych stronach

I teraz chciałbym dostać się przykładowo do bazy template1. Jak to można uczynić (z drugiego komputera w sieci)?

1. W /var/lib/pgsql/data/postgresql.conf znajdź i zmodyfiluj wpis

listen_addresses = ...

tak by obejmował nasłuch z Twoich stacji

2. Radzę nie testować na użytkowniku postgres, tylko na innym, o mniejszych uprawnieniach. Założysz go

create user nazwa password 'haslo';

3. W /var/lib/pgsql/data/pg_hba.conf wpisz rekordy uniemożliwiające dostęp nieuprawnionym użytkownikom i z nieuprawnionych hostów

4. restartuj postgresql

5. W firewallu odblokuj pakiet tcp przychodzące na port 5432 ze stacji, z których chcesz mieć dostęp do bazy

6. Restartuj iptables

7. Spróbuj się zalogować ze zdalnej stacji

 

Powodzenia

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Zakładając że kompy w sieci wewnętrznej mają IP 192.168.1.1-10, to

iptables -A INPUT -p tcp -m tcp -s 192.168.1.0/24 --dport 5432 -m state --state NEW -j ACCEPT

powinno wystarczyć. Oczywiście jeśli kompy dostają IP tylko od 1-10, to maska tak duża też nie jest potrzebna, wtedy wystarczy 192.168.1.0/28

Odnośnik do komentarza
Udostępnij na innych stronach

Wpisałem to, ale jak teraz sprawdzić czy porty zostały odblokowane? Terminal nic nie wyświetlił.

 

Mam już wszystko praktycznie poustawiane, ale nadal nie wiem gdzie tkwi problem. Potrafię utworzyć użytkownika z hasłem, stworzyć bazę danych przypisaną do niego, ale problem pojawia się w momencie połączenia się z nią. Za nic w świecie się to nie udaje. Jak sprawdzić czy jest ona jakoś widziana?

 

Jeśli to coś pomoże to dodam, że przez Putty mogę zalogować się na komputer z Fedorą. Nie ma z tym problemu. Jedynie problem pojawia się przy dostaniu się do bazy danych. Program wysyła jakieś swoje zapytania i uzyskuje Timeout.

 

 

Dodane 29.08.2008r.:

Odblokowalem porty poleceniem:

iptables -A INPUT -p tcp -m tcp -s 192.168.1.0/24 --dport 5432 -m state --state NEW -j ACCEPT

Teoretycznie powinno być wporządku, ale nie wiem jak sprawdzić czy faktycznie zostały odblokowane. IP komputera z którego się łączę to 192.168.1.215. W plikach konfiguracyjnych postgresa mam pozwolenia dla wszystkich użytkowników z sieci i zewnątrz. Co jeszcze może być nie tak?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...