Announcement

Collapse
No announcement yet.

Current_User in VIEWs?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Current_User in VIEWs?

    Hallo allerseits,
    bin recht neu mit MySQL.....freue mich über erste Fortschritte, aber stoße halt auch an Grenzen.
    Eine davon ist "Current_User in VIEW":

    Ich möchte mit einer View realisieren, dass verschiedene Benutzer in einer Tabelle nur die Zeilen anzeigen können, die sie auch selbst eingefügt haben. Das wollte ich so realisieren, dass das Einfügen über eine StoredProcedure erfolgt, die von der Client-Anwendung die zu speichernden Daten erhält, und automatisch jeden Datensatz mit Current_Timestamp und Current_User ergänzt (Variable RegAdmin wird auf Current_User gesetzt). Das funktioniert!

    Dann wollte ich in einer View folgende Abfrage einbauen:

    select Name,Vorname,TelNR,RegAdmin from Kunden where RegAdmin = substring_index(Current_User,'@',1);

    Wie ich nach viel Probieren und Lesen gefunden habe, liefert Current_User in einer View den Benutzernamen des ursprünglichen Erstellers der View, und eben nicht den Namen dessen, der die View gerade aufruft.

    Kann mir jemand einen Tipp geben, wie ich in der View an den aktuell eingeloggten User komme?
    Oder bin ich mit meinem Vorgehen völlig falsch?

    Herzlichen Dank,
    Matthias

  • #2
    Üblicherweise hat in Client/Serveranwendungen nicht jeder User direkten Zugrif auf die DB. Vielmehr gibt es einen DB-User. Über diesen werden die Zugriffe aller Clients auf die DB abgewickelt. Und auch dieser DB-User ist nicht in jedem Client vorhanden, sondern läuft auf einer der DB vorgeschalteten Serverschicht. Somit erfolgen alle Zugriffe Server <->DB
    Die Clients selber übermitteln für einen Zugriff auch kein SQL Statement, sondern fragen den Server ab (bsp. Gib alle Artikel). Dabei übermitteln sie dann einen Usernamen. Dieser wird dann für die SQL-Abfrage genutzt.
    Unabhängig davon, wer irgendwelche Tabellen erstellt hat oder gerade an der DB angemeldet ist
    Christian

    Comment


    • #3
      Originally posted by mattsches View Post

      Wie ich nach viel Probieren und Lesen gefunden habe, liefert Current_User in einer View den Benutzernamen des ursprünglichen Erstellers der View, und eben nicht den Namen dessen, der die View gerade aufruft.

      Kann mir jemand einen Tipp geben, wie ich in der View an den aktuell eingeloggten User komme?
      Oder bin ich mit meinem Vorgehen völlig falsch?
      Nein bist Du nicht. Ich bin leider kein mySQL Spezi aber ein paar Anmerkungen dazu.
      ".. nach viel lesen herausgefunden.."
      Wie wär es mit der Online Doku: https://dev.mysql.com/doc/refman/5.0...functions.html
      Dass die Funktion current_user tatsächlich so arbeitet, wie Du schreibst, kommt mir etwas komisch vor. Es gibt aber noch andere (s.o.), user(), session_user(), ..?
      Probier mal!
      So und dann noch was, reine Vermutung. MySQL ist der Klassiker für Webanwendungen. Du hast zwar nichts davon geschrieben, aber dennoch dazu ein Hinweis. Diese Funktionen arbeiten Naturgemäß auf DB Session Ebene. Dein ganzes Konstrukt funktioniert so nicht mehr, wenn Du in einer Webanwendung mit virtuellen Usern arbeitest.
      Und noch etwas Halbwissen dazu: mySQL ist nicht die DB, die mit guter Nutzerverwaltung , -Management glänzt, vielleicht gerade weil sie sowieso hauptsächlich als singel user system im web oder ähnlich eingesetzt wird.
      Gruß, defo

      Comment


      • #4
        Originally posted by defo
        mySQL ist nicht die DB, die mit guter Nutzerverwaltung , -Management glänzt, vielleicht gerade weil sie sowieso hauptsächlich als singel user system im web oder ähnlich eingesetzt wird.
        Das stimmt soweit. Allerdings darf man nicht vernachlässigen, daß die meisten Hoster nur MySQL anbieten.

        @TE: Wie melden sich die User an der DB an? Script, Management Konsole, Webtool?
        PHP rocks!
        Eine Initiative der PHP Community

        Comment

        Working...
        X