MySQL 5.7 - Trigger auf Mysql.user

Zvoni

Erfahrenes Mitglied
Hiho,

vorneweg: Erste Berührungspunkte mit MySQL.

Frage: Ist es möglich auf mysql.user einen Trigger zu erstellen?
mysql.user ist ja eine BASE_TABLE (wie meine eigenen Tabellen ja auch, und da hab ich einige Trigger drauf).

Hintergrund: In einem FrontEnd, was ich gerade schreibe, soll je nach Login (Hier wichtig: UserName@Host), ein anderes StartFenster meines Programms kommen.
Ich hatte die Idee, dass sobald der root einen neuen User in MySQL anlegt, dieser per Trigger in eine separate Tabelle geschrieben wird, in welcher dann final steht, welches Fenster angezeigt wird (derzeit ein einfacher numerischer Wert

Prinzipielle Frage: Machbar (Ich zögere sowas auf gut Glück zu machen, da ich mir den MySQL-Server nicht zerschiessen will)? Oder keine gute Idee (Was passiert mit dem Trigger, wenn ein Depp Tabellen-/Spaltennamen in der ZielTabelle ändert/löscht etc.)?
Alternative Vorschläge?
 
Ist das nicht ein bisschen umständlich? Warum willst du für eine Applikation einen User auf mysql-Ebene erstellen. Kann der Nutzer sich dann via eines SQL-Clienten oder ssh direkt mit der Datenbank verbinden?
 
Hi

Wenn nicht (wenn es also nicht sowas wie Phpmyadmin werden soll), ist es schon deswegen ein Problem, weil sich ein paar Sicherheitsprobleme damit ergeben (bzw. die ergeben sich in jedem Fall).

Es wäre für die meisten Fälle jedenfalls deutlich sinnvoller, die Programm-User und Msql-User strikt zu trennen, und wegen dem Aussehen einfach ein Flag in der Tabelle deiner Programmuser zu haben.
 
Hi,

nein, keine Verbindung per SQL-Client oder SSH.
Das Problem ist folgendes:
Wir haben einen User "Admin", der das ganze verwaltet (Start-Fenster 1). Dieser nimmt diverse Einstellungen vor (Default-Werte usw.)
Dann haben wir einen User "Manifest", der diverse Daten eingibt (Start-Fenster 2). Dieser gibt eingegangene Bestellungen (Gutscheine) ein.
Dann gibt es öffentlich zugängliche Rechner mit User "PAX", an welchem sich Gäste "registrieren" (Start-Fenster 3). Diese geben ein, über welchen Anbieter sie Ihren Gutschein gekauft haben.
Da ich jetzt nicht wirklich Lust habe, 3 separate Anwendungen zu schreiben, bin ich eben auf die Idee gekommen, den User abzufragen, welcher an dieser Maschine verwendet wurde. So reicht es eine Anwendung auszurollen, welche abhängig vom User andere Funktionalität bietet.

Nächstes Problem: Die Leute, die damit arbeiten (müssen), sind keine IT-Experten. Wenn ich denen sage "Log dich mal per SSH oder mit nem SQL-Client ein", bekomme ich nur ratlose Blicke zur Antwort.

Ich hoffe, ich konnte es etwas aufklären.
Wobei ich betonen möchte, dass ich nicht unbedingt auf Teufel komm raus, das in der beschriebenen Weise umsetzen will.
Mir gings eher darum, ob es überhaupt eine Gute Idee ist, in den "System"-Tabellen rumzupfuschen.

EDIT: Ich vergass: Auf denselben MySQL-Server (!!) greift eine andere Anwendung auf eine andere Datenbank/Schema zu. Der Gag ist: Mein Front-End/My-SQL-Datenbank/Schema greift auf Daten dieser Datenbank zu, und am Ende der "Registrierung" werden Daten von meinem Front-End in eben diese andere DB geschrieben. Und der Zugriff dieser anderen Anwendung läuft eben auf MySQL-User-Ebene.
 
Zuletzt bearbeitet:
Also, prinzipiell sollte es funktionieren - ich weiss zurzeit zumindest keinen Grund, warum nicht.

Für die Wartbarkeit und Fehlerhandling ist es, wie du ja sagst, keine gute Idee.

...
Kleine Anmerkung zu den IT-Experten: Hatte gestern mit dem "technischen Support" eines Kunden zu tun. SSH? Nie gehört. Ging so weit, mir zu sagen nicht erwarten zu können, dass jeder von jedem kleinen Tool schon mal gehört hat. ... Ratlose Blicke sind da ja noch gut :)
 
Alles klar.
Werde dann eben die angelegten User "manuell" in meine eigene "users"-Tabelle eintragen, und gut ist.
 
Zurück