MC' Napisano Marzec 5, 2009 Zgłoszenie Share Napisano Marzec 5, 2009 Witam, Jestem nowicjuszem w temacie więc proszę o wyrozumiałość Problem: Chcę móc zarządzać PostgreSQL za pomocą pgAdmina3. 1. Zainstalowałem postgtresql + pgadmin3 z repo. 2. zalogowałem się jako root (su -) 3. # service postgresql initdb - inicjalizuje tzw klaster wszystkich tworzonych baz danych 4. # /etc/init.d/postgresql start - uruchomienie bazy 5. # su - postgres i bez hasełko wchodzę sobie do -bash-3.2$ i po wydanieu psql <nazwa bazy> mogę sobie wejść do dowolnej bazy tj: np: \l List of databases Name | Owner | Encoding -----------+----------+---------- mydb | postgres | UTF8 postgres | postgres | UTF8 template0 | postgres | UTF8 template1 | postgres | UTF8 jak widać jestem sobie na razie userem postgres Jedyny plik pg_hba.conf to /usr/share/pgsql/pg_hba.conf.sample i wygląda on (nic tam nie zmieniałem od instalki) tak: @authcomment@ # TYPE DATABASE USER CIDR-ADDRESS METHOD @remove-line-for-nolocal@# "local" is for Unix domain socket connections only @remove-line-for-nolocal@local all all @authmethod@ # IPv4 local connections: host all all 127.0.0.1/32 @authmethod@ # IPv6 local connections: host all all ::1/128 @authmethod@ I teraz chciałbym sobie móc zarządzać wszystkimi bazami postgreSQL za pomocą pgAdmina3 bo wydaje mi się to wygodniejsze niż klepanie komendy: psql. Niestety gdy uruchamiam pgAdmina3 jako już użytkownik systemowy dostaję takie okienko: w name i host wpisuję localhost i klikam Ok.. niestey dostaję komunikat o błędzie który niestety jest pusty. Pewnie dlatego że na początku startu phAdmina3 mam infoa że "nie można otworzyć plku tips.txt". No ale koniec końców nie mogę sie połączyć z localhostem i to jest moją bolączką. Być może jakiegoś settinga nie ustawiłem ale już trochę szykam i nie widz tego . Z góry dzięki za wskazówki i pomoc Pozdro MC' Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Marzec 5, 2009 Zgłoszenie Share Napisano Marzec 5, 2009 Ten plik nie jest czytany, to tylko wzorzec. Prawdziwa kontrola HBA odbywa się przez plik /var/lib/pgsql/data/pg_hba.conf Skopiuj swój wzorzec w to miejsce i wypełnij, potem restartuj usługę. Domyślny plik kontroli dostępu zaczyna się tak: # PostgreSQL Client Authentication Configuration File # =================================================== # # Refer to the PostgreSQL Administrator's Guide, chapter "Client # Authentication" for a complete description. A short synopsis # follows. # # This file controls: which hosts are allowed to connect, how clients # are authenticated, which PostgreSQL user names they can use, which # databases they can access. Records take one of these forms: # # local DATABASE USER METHOD [OPTION] # host DATABASE USER CIDR-ADDRESS METHOD [OPTION] # hostssl DATABASE USER CIDR-ADDRESS METHOD [OPTION] # hostnossl DATABASE USER CIDR-ADDRESS METHOD [OPTION] # # (The uppercase items must be replaced by actual values.) # # The first field is the connection type: "local" is a Unix-domain socket, # "host" is either a plain or SSL-encrypted TCP/IP socket, "hostssl" is an # SSL-encrypted TCP/IP socket, and "hostnossl" is a plain TCP/IP socket. # # DATABASE can be "all", "sameuser", "samerole", a database name, or # a comma-separated list thereof. # # USER can be "all", a user name, a group name prefixed with "+", or # a comma-separated list thereof. In both the DATABASE and USER fields # you can also write a file name prefixed with "@" to include names from # a separate file. # # CIDR-ADDRESS specifies the set of hosts the record matches. # It is made up of an IP address and a CIDR mask that is an integer # (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies # the number of significant bits in the mask. Alternatively, you can write # an IP address and netmask in separate columns to specify the set of hosts. # # METHOD can be "trust", "reject", "md5", "crypt", "password", # "krb5", "ident", or "pam". Note that "password" sends passwords # in clear text; "md5" is preferred since it sends encrypted passwords. # # OPTION is the ident map or the name of the PAM service, depending on METHOD. # # Database and user names containing spaces, commas, quotes and other special # characters must be quoted. Quoting one of the keywords "all", "sameuser" or # "samerole" makes the name lose its special character, and just match a # database or username with that name. # # This file is read on server startup and when the postmaster receives # a SIGHUP signal. If you edit the file on a running system, you have # to SIGHUP the postmaster for the changes to take effect. You can use # "pg_ctl reload" to do that. # Put your actual configuration here # ---------------------------------- # # If you want to allow non-local connections, you need to add more # "host" records. In that case you will also need to make PostgreSQL listen # on a non-local interface via the listen_addresses configuration parameter, # or via the -i or -h command line switches. # # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only # local all all ident sameuser local all all md5 # # IPv4 local connections: # host all all 127.0.0.1/32 ident sameuser host all all 127.0.0.1/32 md5 # a potem idą rekordy dla poszczególnych układów host/db/user/mask. Komentarz zamieszczony w nim wystarcza, żeby z grubsza zrozumieć postać wpisów. Jeżeli chcesz mieć zdalne połączenie, to potrzebny jest rekord postaci host twojabaza twojuser 10.1.3.3/24 md5 (adres/maska wpisana dla przykładu, a md5 jako metoda kontroli hasła). Musisz też zadbać o przepuszczanie przez firewall pakietów przychodzących z tego adresu na port 5432. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
matlas Napisano Marzec 5, 2009 Zgłoszenie Share Napisano Marzec 5, 2009 Ja bym jeszcze haslo dla usera postgres ustawil, bo u mnie na serwie debianowym przy pustym pgadmin nie chcial sie polaczyc. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MC' Napisano Marzec 6, 2009 Autor Zgłoszenie Share Napisano Marzec 6, 2009 Ok plik /var/lib/pgsql/data/pg_hba.conf wygląda teraz tak: # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only #local all all ident sameuser local all all md5 # IPv4 local connections: #host all all 127.0.0.1/32 ident sameuser host all all 127.0.0.1/32 md5 # IPv6 local connections: #host all all ::1/128 ident sameuser host all all ::1/128 md5 host all kojo 127.0.0.1/32 md5 gdzie kojo to omój user systemowy na zależy mi tylko na połączeniu lokalnym do wszystkich baz postgresa przez PgAdmina3 Tak jak wspominał matlas przy próbie połączenia przez pgadmina3 na usera postgres (domyslnie nie ma on hasła ustawionego) dostaję komunikat: Wystąpił błąd: Error connecting to the server: fe_sendauth: no password supplied Próbowałem zmienić hasło dla usera systemowego postgres ale w systtem-config-users ten user ma podana jakieś gwiazdki ale one są wyszarzone i nie do zmiany Dziwne bo ja do tej pory przez su - postgres logowałem się bez hasła. Więc po kolei jest user systemowy postgres na którego wchodzę bez hasła by zalogować się do PostgreSQL i jest user w bazie danych postgres ? Hasła tego systemowego nie mogę zmienić a dla tego bazodanowego wydłubałem coś takeigo ALTER USER Postgres WITH PASSWORD '<newpassword>'; Czy o to chodzi? Podaczas wydania # psql -U postgres pyta mnie jednak o hasło a gdy wydam #su - postgres to przechodzi do bash$ powłoki postgresa .. dlaczego? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Marzec 6, 2009 Zgłoszenie Share Napisano Marzec 6, 2009 Tak, jest user postgres w systemie i jest w bazie. psql -U postgres uruchamia konsolę Postgresa dla użytkownika BAZODANOWEGO postgres. Jeśli masz na localhost kontrolę dostępu md5, to żąda hasła. Możesz podać trust lub sameuser, ale nie zalecam w ogóle, a dla użytkownika postgres zwłaszcza. su - postgres uruchamia powłokę systemową SYSTEMOWEGO użytkownika postgres. Z roota sesja su nie żąda hasła. Nie mieszaj przy haśle w systemie, postgres nie powinien się nigdy logować. On jest właścicielem procesu serwera. Natomiast hasło zmienione w psql lub innym kliencie dotyczy usera (czy szerzej: roli) bazodanowego. Komunikat ALTERUSER/ALTER ROLE świadczy o przyjęciu nowego hasła. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MC' Napisano Marzec 6, 2009 Autor Zgłoszenie Share Napisano Marzec 6, 2009 psql -U postgres uruchamia konsolę Postgresa dla użytkownika BAZODANOWEGO postgres. Jeśli masz na localhost kontrolę dostępu md5, to żąda hasła. Możesz podać trust lub sameuser, ale nie zalecam w ogóle, a dla użytkownika postgres zwłaszcza. Tak jak widzisz ustawiłem sobie md5 ale pyta mnie wtedy o hasło i było by ok gdybym ja znał to domyślne hasło.. bo sam niczego nie ustawiałem su - postgres uruchamia powłokę systemową SYSTEMOWEGO użytkownika postgres. Z roota sesja su nie żąda hasła. Nie mieszaj przy haśle w systemie, postgres nie powinien się nigdy logować. On jest właścicielem procesu serwera. Natomiast hasło zmienione w psql lub innym kliencie dotyczy usera (czy szerzej: roli) bazodanowego. Komunikat ALTERUSER/ALTER ROLE świadczy o przyjęciu nowego hasła. czyli co do bazy logować się powinienem nie przez #su - postgres $psql mydb tylko psql -U postgres ? Dryga rzecz to: jeśli dodałem sobie swojego systemowego usera do pliku konfiga tak jak powyżej to jak mam zrobić by po psql -U kojo logował mi się do powłoki bazy dla tego usera przez hasło systemowe? czy też powinienem w takim wypadku stworzyć sobie dodatkowo usera kojo w bazie i nadać mu prawa? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Marzec 6, 2009 Zgłoszenie Share Napisano Marzec 6, 2009 Tak jak widzisz ustawiłem sobie md5 ale pyta mnie wtedy o hasło i było by ok gdybym ja znał to domyślne hasło.. bo sam niczego nie ustawiałem ustaw uwierzytelnianie lokalne na trust lub sameuser, wejdź, ustal hasło, wyjdź, przestaw uwierzytelnianie na md5. czyli co do bazy logować się powinienem nie przez #su - postgres $psql mydb tylko psql -U postgres Tak Dryga rzecz to: jeśli dodałem sobie swojego systemowego usera do pliku konfiga tak jak powyżej to jak mam zrobić by po psql -U kojo logował mi się do powłoki bazy dla tego usera przez hasło systemowe? czy też powinienem w takim wypadku stworzyć sobie dodatkowo usera kojo w bazie i nadać mu prawa? Se ne da. Postgres nie korzysta z systemowego shadow. Opcja sameuser (i ident) pozwala na logowanie użytkownika o tej samej nazwie co zalogowany użytkownik systemowy (w opcji ident przemapowany wg określonych reguł), bez podawania hasła. Poczytaj w dokumentacji na postgresql.org Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MC' Napisano Marzec 7, 2009 Autor Zgłoszenie Share Napisano Marzec 7, 2009 ok wszystko poszło miodnie Mam tylko pytanie chcę sobie zrobić skrót na pulpicie by uruchamiał mi serwer postgresa. Chciałem mu ustawić takie polecenie: su - && /etc/init.d/postgresql start ale niestety to polecenie nie działa tak jak chciałem tj aby pojawiło się okienko z pytaniem o hasło roota i aby w tle startował server postgresa. Zastanawiam się jakby to można było zrobić. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Marzec 7, 2009 Zgłoszenie Share Napisano Marzec 7, 2009 W konsoli, prymitywnie: [Desktop Entry] Encoding=UTF-8 Name=postgres service Exec=su -c "/etc/init.d/postgresql start" Terminal=true Type=Application Categories=Application;Database;System; ale nie jest to najszczęśliwsze rozwiązanie. Lepiej napisać zgrabny skrypt od niezgrabnego aktywatora. Graficznie: poczytaj o consolehelper. nie pomogę, bo tego nie umiem. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi