northwest
(northwest)
27 Lipiec 2008 18:56
#1
Witam,
kombinuje nad zrobieniem automatu do tworzenia kopi zapasowych bazy danych w PostgreSQL.
W necie wyczytałem że można z poziomu konsoli wywołać jakieś polecenie i zrobi się kopia automatycznie:
pg_dump -c -O -U postgres test -h localhost -p 5432 --disable-dollar-quoting -i > plik.sql
to polecenie zwraca mi błąd dostępu (Permission denided)
jak zostawie samo:
pg_dump -U postgres to polecenie działa (ale nie tworzy pliku z kopią bazy)…
w pgAdminie jak sprawdzam to właściccielem bazy jest postgres… czyli powinno działać…
wiecie może dlaczego??
Northwest
system
(system)
27 Lipiec 2008 20:23
#2
pg_dump -U postgres > plik.sql
Zadziała tak samo tylko że wynik trafi do pliku “plik.sql”
northwest
(northwest)
27 Lipiec 2008 21:16
#3
ten sam błąd -> odmowa dostępu :///
system
(system)
27 Lipiec 2008 21:51
#4
Więc nasuwa się jedyne wyjaśnienie tego zjawiska: masz już plik o nazwie plik.sql i jest to plik z atrybutami tylko do odczytu.
northwest
(northwest)
28 Lipiec 2008 09:24
#5
Takie polecenie:
pg_dump -U postgres -W - działa prawidłowo, jak podam hasło skrypt startuje
ale już takie coś: pg_dump -U postgres >baza.sql powoduję odmowę dostępu…
takiego pliku na 100% nie mam (to jest PostgreSQL na Windowsie). jakąkolwiek nazwę podam - zawsze jest błąd…
system
(system)
28 Lipiec 2008 09:31
#6
echo "TwojeHaslo" | pg_dump -U postgres -W > baza.sql
Airborn
(Airborn)
28 Lipiec 2008 11:58
#7
a może problem istnieje gdzieś w przekazywaniu strumienia do pliku, czemu nie skorzystać w tym celu z odpowiednich opcji pg_dump
pg_dump -U postgres -O -f plik.sql -W nazwa_bazy
system
(system)
28 Lipiec 2008 13:54
#8
Bo kolega jak mniemam chcę pełny automat, czyli to powinno też zadziałać:
echo "TwojeHaslo" | pg_dump -U postgres -O -f plik.sql -W
northwest
(northwest)
29 Lipiec 2008 15:05
#9
Ta baza stoi na Windows Vista - czyli echo chyba nie zadziała…
pg_dump -U postgres -O -f plik.sql -W nazwa_bazy - to polecenie wyświetla monit o hasło, i po poprawnym wprowadzeniu hasła nic nie wyświetla, pliku znaleźć też nie mogę - ale błędu nie ma:)
system
(system)
30 Lipiec 2008 12:53
#10
Spróbuj w poleceniu podać pełną ścieżkę do pliku “plik.sql”.
system
(system)
30 Lipiec 2008 21:48
#12
Czy masz uprawnienie administratora? Sprawdź czy masz możliwość tworzenia plików w folderze którego ścieżkę próbowałeś podać. Np otwórz notatnik i zachowaj jako …
northwest
(northwest)
30 Lipiec 2008 22:07
#13
faktycznie, nadałem nowe uprawnienia i teraz tworzy plik - ale nie zapisuje w nim danych z bazy danych
pg_dump -U username -d database > file.dmp
ale nie ma już błędu “dostęp zabroniony”
Airborn
(Airborn)
30 Lipiec 2008 22:40
#14
nie przekazuj do pliku, korzystaj z przełącznika -f
pg_dump -U username -d database -f nazwa_pliku
northwest
(northwest)
31 Lipiec 2008 04:40
#15
pg_dump -U username -d database -f nazwa_pliku - w tej formie polecenie nie działa (program chce jako pierwszy argument “-f”)
pg_dump -f ja.txt -U postgres -d test - znowu robi to samo co wcześniejsze polecenie, tzn. uruchamia się i “stoi”… z tym że nie tworzy pliku…
system
(system)
31 Lipiec 2008 08:23
#16
echo “haslo” | pg_dump -U username -d database -W > file.dmp
teraz zadziała bo nareszcie masz uprawnienia
northwest
(northwest)
31 Lipiec 2008 09:29
#17
echo “moje_haslo” | pg_dump -W -U postgres -d moja_baza > file.dmp
po odpaleniu tego mam monit o hasło. Po podaniu hasła program sobie chodzi i nic nie robi - nawet błędu nie wywala…
Tworzy sie tylko pusty plik…
Airborn
(Airborn)
31 Lipiec 2008 09:51
#18
prawdę powiedziawszy to przychodzi mi do głowy tylko to, że to wcale nie postgres jest właścicielem bazy, sprawdź to jeszcze raz.
P.S.
postgres zasadniczo nie powinien być właścicielem żadnej bazy użytkowej, dla bezpieczeństwa powinno się stworzyć nowego usera. możesz jeszcze spróbować stworzyć nowego usera, zmienić właściciela na nowego usera, i wtedy wykonać backup
northwest
(northwest)
31 Lipiec 2008 10:31
#19
zmieniłem - dalej jest tak samo:(
system
(system)
31 Lipiec 2008 11:02
#20
jeżeli działa poprawnie to:
pg_dump -W -U postgres -d moja_baza
to wytłumaczyć nie działanie tego:
pg_dump -W -U postgres -d moja_baza > file.dmp
można tylko tym ze nie masz uprawnień do stworzenia lub edycji file.dmp lub dajesz złe hasło
jeżeli polecenie:
echo “moje_haslo” | pg_dump -W -U postgres -d moja_baza > file.dmp
prosi o hasło, to hasło w echo podałeś niepoprawnie lub złe przepisałeś polecenie.