2009-08-13 2 views
0

Ich habe Benutzer 'restricteduser' auf meinem MySQL Server, der 'gesperrt' ist erstellt. Die Tabelle mysql.user hat ein N für alle Privilegien für dieses Konto. Die Tabelle mysql.db enthält Y nur für Auswählen, Einfügen, Aktualisieren, Löschen, Erstellen, Löschen; Alle anderen Berechtigungen sind N für dieses Konto. Ich habe versucht, eine gespeicherte Prozedur zu erstellen und ihm dann Zugriff zu gewähren, um nur diese Prozedur auszuführen, keine anderen, aber es funktioniert nicht.Bedeutung von Execute_priv auf mysql.db Tabelle

Der Benutzer erhält: Fehler: Befehl des Benutzers restricteduser '@ '%' für Routine 'mydb.functionname'

Die gespeicherte Prozedur verweigert ausführen:

CREATE DEFINER = 'restriceduser'@'%' FUNCTION `functionname`(sIn MEDIUMTEXT, sformat MEDIUMTEXT) 
RETURNS int(11) 
NOT DETERMINISTIC 
CONTAINS SQL 
SQL SECURITY DEFINER 
COMMENT '' 
BEGIN 
.... 
END; 

Die I grant-Anweisung versucht:

GRANT EXECUTE ON PROCEDURE mydb.functionname TO 'restricteduser'@'%'; 

konnte ich mit

durch Änderung seiner mysql.db Eintrag arbeiten um
update mysql.db set execute_priv='Y' where user='restricteduser' 

Dies scheint mehr zu sein, als ich will, weil es Berechtigungen für ihn eröffnet, jede gespeicherte Prozedur in dieser Datenbank auszuführen, während ich nur wollte, dass er Berechtigungen zum Ausführen der designierten Funktion hat.

Kann jemand sehen, wo mein Problem liegen kann?

Antwort

0

Die Benutzertabelle für den eingeschränkten Benutzer, den Sie erstellt haben wird execute_priv = 'Y' benötigen. Dieser Zuschuss ersetzt den DB-Zuschuss.

+0

Die Benutzertabelle sollte definitiv nicht execute_priv = 'Y' haben. Es geht darum, den Zugang zu beschränken, ihn nicht zu erweitern. Ich sehe eine procs_priv-Tabelle, wo vermutlich dieser Zugriff erscheinen sollte, und nicht in den Benutzer- oder db-Tabellen. Ich habe diese Art von Dingen nicht festgelegt, aber die Zuschuss-Syntax sieht plausibel aus. Ich vermute, dass 'restricteduser' @ '%' nicht mit dem Eintrag in der db-Tabelle übereinstimmt, der zur Authentifizierung der Benutzerverbindung verwendet wurde? – mc0e