Próbowałem uruchomić proste polecenie SQL:
select * from site_adzone;
i dostałem ten błąd
ERROR: permission denied for relation site_adzone
W czym może być problem?
Próbowałem również wybrać opcję dla innych tabel i dostałem ten sam problem. Próbowałem także to zrobić:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
ale dostałem tę odpowiedź z konsoli
WARNING: no privileges were granted for "jerry"
Czy masz pojęcie, co może być nie tak?
Odpowiedzi:
GRANT w bazie danych nie jest tym, czego potrzebujesz. Przyznaj bezpośrednio do stołów.
Nadawanie uprawnień do bazy danych służy głównie do przyznawania lub cofania uprawnień do połączenia. Pozwala to określić, kto może wykonywać czynności w bazie danych, jeśli mają wystarczające inne uprawnienia.
Zamiast tego chcesz:
Zajmie się tym problemem.
źródło
Opublikowanie odpowiedzi Ron E na przyznanie uprawnień na wszystkich stołach, ponieważ może to być przydatne dla innych.
źródło
ALL SEQUENCES
iALL FUNCTIONS
.ALL TABLES
zawiera także widoki, więc nie ma osobnegoALL VIEWS
polecenia :-)Najpierw połącz się z właściwą bazą danych , a następnie uruchom:
źródło
\connect databasename;
źródło
Pierwszym i ważnym krokiem jest połączenie z bazą danych:
2 krok, nadaj uprawnienia
źródło
Aby udzielić uprawnień wszystkim istniejącym tabelom w schemacie, użyj:
Aby określić domyślne uprawnienia, które będą stosowane do przyszłych tabel, użyj:
na przykład
Jeśli użyjesz
SERIAL
lubBIGSERIAL
kolumn, prawdopodobnie będziesz chciał zrobić to samoSEQUENCES
, bo inaczejINSERT
zawiedzie ( Postgres 10IDENTITY
nie cierpi z powodu tego problemu i jest zalecany w stosunku doSERIAL
typów), tj.Zobacz także moją odpowiedź na PostgreSQL Uprawnienia do aplikacji sieci Web, aby uzyskać więcej informacji i skrypt wielokrotnego użytku.
Ref:
DOTACJA
ZMIEŃ DOMYŚLNE PRZYWILEJE
źródło
Zdarza się to często, gdy tworzysz tabelę jako użytkownik postgres, a następnie próbujesz uzyskać do niej dostęp jako zwykły użytkownik. W takim przypadku najlepiej zalogować się jako użytkownik postgres i zmienić własność tabeli za pomocą polecenia:
źródło
Upewnij się, że logujesz się do psql jako właściciel tabel. aby dowiedzieć się, kto jest właścicielem tabel
\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
wtedy możesz uruchomić DOTACJE
źródło
Gdy szukasz wybranych uprawnień, sugeruję, abyś udzielił tylko wybranych, a nie wszystkich uprawnień. Możesz to zrobić przez:
źródło
Powinieneś:
źródło
Raz spotkałem się z tym problemem. wystarczy zmienić użytkownika bazy danych na administratora, a problem zostanie rozwiązany.
ALTER USER myuser WITH SUPERUSER;
źródło