Zugriffsrechte grant

worst_case

Benutzer
Beiträge
14
Hallo,

ich bin gerade dabei ein Startscript zu erstellen, das mir die Datenbank inkl. Tabellen usw. erstellt.

Nun möchte ich einen neuen user erstellen und diesem entsprechende Privvilegien vergeben.
Der user soll alle Tabellen lesen und in die Tabellenspalten schreiben können, jedoch keine Tabelle#
verändern können.

Die Datenbank heißt "visualdb"

Code:
CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'MyPassword';
GRANT SELECT ON `visualdb`.* TO `dbuser`;

Eigentlich sollte es so funktionieren, jedoch bekomme die Fehlermeldung, wenn ich mein Startscript laufen lasse.
(mysql -u root -p < /usr/init_visualdb.sql)

Code:
ERROR 1410 (42000) at line 47: You are not allowed to create a user with GRANT

Trotz Recherche finde ich den Fehler nicht ....

Weiterhin hätte ich noch eine Frage.
Wenn der oben erzeugte user für eine einzige Tabelle in der "visualdb" die Berechtigung bekommen soll, die Tabelle zu erweitern ... "insert"
schreibt man das dann auf 2 "Grant" Zeilen, oder ?

Vielen Dank
worst_case
 
Werbung:
versuch mal mit :


Code:
CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'MyPassword';
GRANT SELECT  ON `visualdb`.*   TO 'dbuser'@'localhost';
FLUSH PRIVILEGES;
 
Weiterhin hätte ich noch eine Frage.
Wenn der oben erzeugte user für eine einzige Tabelle in der "visualdb" die Berechtigung bekommen soll, die Tabelle zu erweitern ... "insert"
schreibt man das dann auf 2 "Grant" Zeilen, oder ?
Nein, kann man, aber geht auch in einer Zeile;
Code:
GRANT SELECT, INSERT ON `visualdb`.* TO 'dbuser'@'localhost';
FLUSH PRIVILEGES;
 
Hallo,

wenn ich es so schreibe, habe ich "insert" für alle Tabellen aktiviert, das wäre nicht gewünscht.
select für alle Tabellen, insert nur für eine Tabelle
Sorry, da hast du recht, das geht nur mit zwei einzelnen Statements

Code:
GRANT SELECT ON `visualdb`.* TO 'dbuser'@'localhost';
GRANT SELECT, INSERT ON `visualdb`.`eineTabelle` TO 'dbuser'@'localhost';
FLUSH PRIVILEGES;
 
OK, Danke

Jetzt hätte ich gleich noch etwas 😉

Kann ich ein concat auch mit Feldern aus einer anderen Tabelle erzeugen ?

Code:
CREATE TABLE visuliste
(
    spsvarname      varchar(75)         AS (CONCAT(datenpunktliste.spsname,'.',datenpunktliste.varname)),
    istwert                INT                       DEFAULT NULL         
) DEFAULT CHARSET=utf8 ENGINE=MyISAM;
 
Jetzt hätte ich gleich noch etwas 😉

Kann ich ein concat auch mit Feldern aus einer anderen Tabelle erzeugen ?
nee, das geht nicht! Wie auch ? Welchen rechord sollte er denn nehmen.

Du kannst aber für lesenden Zugriff eine View basteln. Die verhält sich dann lesend wie eine Tabelle.

so was:

Code:
CREATE VIEW order_incomes AS
SELECT
order_id,
    customer_name,
    SUM(ordered_quantity * product_price) total
FROM
order_details
INNER JOIN orders USING (order_id)
INNER JOIN customers USING (customer_name)
GROUP BY order_id;
 
Werbung:
Hallo,

vielen Dank für die Nachricht, ich habe es jetzt anders gelöst.
Wenn die erste Tabelle "geändert" wird löst dies einen Trigger aus und die 2. Tabelle wird angepasst funktioniert auch gut.

Vielen Dank
 
Zurück
Oben