Hallo,
habe gerade eine DB von MySql zu PG portiert.
Wenn ich nun versuche ein Select abzusetzen, bekomme ich die Fehlermeldung: permission denied for relation <tabelle>.
Hoffe ihr könnt mir weiterhelfen..
Grüsse
p.s.
Wie kann man in PG eisehen, welche User gesetzt worden sind, mit die Rechte dazu?
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
hi andreas,
danke für die Antwort..
ich sehe mit \z in der access_privileges spalte keinen Eintrag!
Wie kann ich nun den Tabellen den entsprechenden User zuweisen?
GRuß
Redd
Ja, und? Die table gehört dem Eigentümer. Dieser kann Rechte verteilen. Dies ist bisher nicht erfolgt -> Spalte leer.
ALTER TABLE table OWNER TO neuer_owner;Wie kann ich nun den Tabellen den entsprechenden User zuweisen?
GRuß
Redd
Dazu muß Du Eigentümer oder Superuser sein. Steht übrigens alles in der Doku, ich schreib nur von da ab.
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Schau mal..
habe folgendes gemacht als User: postgres:
Die Konsole meldet mir.. Alter Databasealter database kaajing owner TO master;
wenn ich nun mit psql -U master db mich einlogge
und ein select absetze, bekomme ich wieder permission denied.
Wenn ich ein:
mache, sehe ich mit \z trotzdem nicht, dass user master die REchte hat.GRANT ALL PRIVILEGES ON DATABASE kaajing TO master;
Gruß
Redd
Database != table.
AndreasCode:15:10 < akretschmer> ??grantall 15:10 < rtfm_please> For information about grantall 15:10 < rtfm_please> see http://pgedit.com/public/sql/acl_admin/index.html 15:10 < rtfm_please> or http://unf.be/postgresql/postgres_grant_all.perl 15:10 < rtfm_please> or http://www.archonet.com/pgdocs/grant-all.html
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Das ist schon klar, aber will doch auch nicht gleich 48 Tabellen einzeln den User setzen. Sollte doch reichen, wenn man diesen einmal für die DB setzt, oder?
In ner Doku was ich mir angelesen habe steht ja folgendes drin..
Command: GRANT
Description: define access privileges
Syntax:
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tablename [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]
habe nun Tabellenweise die Rechte hinzugefügt.
Und es geht.. Trotzdem ein wenig umständlich. Egal..
Bekomme bei folgendem SQL eine Fehlermeldung:
Fehler:Code:CREATE TABLE "kaj_produkt" ( "pro_id" BIGINT NOT NULL DEFAULT '0', "titel" TEXT NOT NULL DEFAULT '', "kurzinfo" TEXT NOT NULL DEFAULT '', "info" TEXT NOT NULL DEFAULT '', "pic_thumb" VARCHAR(180) NULL DEFAULT NULL, "aart_id" SMALLINT NULL DEFAULT NULL, "auk_preis" FLOAT NOT NULL DEFAULT '0', "auk_start" TIMESTAMP NULL DEFAULT NULL, "auk_ende" TIMESTAMP NULL DEFAULT NULL, "auk_status" BOOLEAN NOT NULL DEFAULT '4', "public" CHAR(1) NOT NULL DEFAULT '0', "public_date_start" TIMESTAMP NOT NULL , "public_date_end" TIMESTAMP NOT NULL , "einstelldatum" TIMESTAMP NOT NULL , "user_id" BIGINT NULL DEFAULT NULL, "username" VARCHAR(20) NULL DEFAULT NULL, "part_id" BIGINT NULL DEFAULT NULL, "main_pic" VARCHAR(180) NULL DEFAULT NULL, "delam" TIMESTAMP NULL DEFAULT NULL, "changedat" TIMESTAMP NOT NULL , PRIMARY KEY ("pro_id"), UNIQUE ("pro_id") );Diese Zeilen wurden mit mysql2postgres erzeugt.Code:psql:pg_mysqldump_produkt.sql:23: ERROR: invalid input syntax for type boolean: "4"
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
normalerweise wuerde man sich eine sog. Rolle im sinne von Gruppe erzeugen (keine Login-Rolle)
für jede Tabelle die du erzeugst GRANTest du diese Gruppe. Wenn du dann einen neuen User anlegst musst du diesen nur dieser Gruppe zuweisen (mit INHERIT - also um Rechte von Gruppe erben) .. damit darf der User automatisch das, was die Gruppe darf.
Das macht man halt einmal, beim erzeugen der Tabellen. Bei PG kann man da sogar tricksen .. du erzeugst ne Login-Rolle - logst dich ein und erzeugst mit dieser Login-Rolle dein Modell - auch ein Restore von einem Backup geht. Damit ist diese Login-Rolle dann OWNER deiner Tabellen. Im Nachhinein darfst dann mit ALTER ROLE aus dieser Rolle eine Gruppe machen .. spart halt Arbeit.
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen