Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL Benutzer mit Zeos ändern/erstellen? (https://www.delphipraxis.net/60052-mysql-benutzer-mit-zeos-aendern-erstellen.html)

CG2003 2. Jan 2006 12:27

Datenbank: MySQL • Version: 4.1 • Zugriff über: ZeosDBO

MySQL Benutzer mit Zeos ändern/erstellen?
 
Hallo,

erstmal frohes neues Jahr ;)

Ich habe folgende Frage:
Ist es möglich, mit Delphi und den Zeos-Komponenten die MySQL-User zu ändern bzw. welche hinzuzufügen?
Ich würde diese gerne in einem ListView auflisten. Ungefähr so:

Name ------- Kennwort
root -------
test ------- test1

Dann würde ich diesem ListView gerne User hinzufügen oder welche bearbeiten.
Nur weiß ich leider nicht wie's geht.

Kann mir jemand helfen?

Vielen Dank schon mal im Voraus.

Bernhard Geyer 2. Jan 2006 12:29

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Für Benutzerverwaltung gibt es auch SQL-Befehle. Einfach diese mittels ExecSQL abschicken.

CG2003 2. Jan 2006 13:03

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Danke, das hilft mir schon mal erheblich weiter.
Doch wie mache ich das jetzt mit dem ListView?

CG2003 3. Jan 2006 08:18

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Keiner 'ne Idee? Wir sind doch schon nah dran... :wink:

mkinzler 3. Jan 2006 08:32

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Hallo CG2004,

1. Konteninformationen aus der Datenbank holen
2. Listview aufbauen ( Passwort ist dann allerdings nicht im Klartext)
3. Popupmenu?
4. Änderunegn über SQL schreiben und Listview neu aufbauen

CG2003 3. Jan 2006 08:37

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Ja, sowas habe ich momentan schon aufgebaut.
Also die Kontoinformationen werden ins ListView geladen und das (verschlüsselte) Kennwort auch.

Doch, wie bekomme ich es hin, das das Kennwort da vernünftig angezeigt wird?
Denn ich will ja die einzelnen Benutzer auch bearbeiten können.

Im Moment gehe ich mit einem DataSet jeden Datensatz der User-Tabelle von MySQL durch und
lese ihn ins TreeView.

mkinzler 3. Jan 2006 08:48

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Wenn du die Passwörter im Klartext haben willst mußt du sie wonaders nocheinaml speichern. Meineswiisens gibt es keine Möglichkeit über SQL die Passwörter entschlüsseln zu lassen. ( Wäre auch eine große Sicherheitslücke).
Einem Listview kann man ein Popupmenu zuordnen, in dem man die gewünschten Befehle ( Hinzufügen, Ändern, Löschen) auswählen kann. Den markierten Eintrag erhält man durch die Eigenschaft ItemIndex
Delphi-Quellcode:
ListView.Items.Item[ ListView.ItemIndex];

CG2003 3. Jan 2006 09:20

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Hmm, da fällt mir was ein:

Kann ich nicht die Benutzer über MySQL festlegen OHNE Kennwort,
und in einer weiteren Tabelle den gleichen Benutzernamen allerdings mit
Kennwort (im Klartext) speichern?

Oder gibt es eventuell andere, vielleicht noch leichtere Möglichkeiten???

mkinzler 3. Jan 2006 09:23

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Wenn du sicherstellt das Benutzer nur von deinem Programm erstellt und geändert werden, kannst du die Benutzerdatenbank um ein weiteres Feld erweitern, in dem du das Passwort unverschlüsselt oder besser durch dein Programm verschlüsselt ablegst.

Igotcha 3. Jan 2006 09:28

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Du sagst ja nicht genau, wofür Du das brauchst. Aber wenn Du z.B. eine Multiuseranwendung entwickelt hast, die auf die DB zugreift und die User sich anmelden sollen, kannst Du auch folgendes machen:

- Du legst einen Datenbankuser für Dein Programm an
- alle Clients verwenden den gleichen User, um auf die Datenbank zuzugreifen
- Du legst eine neue Tabelle an, z.B. "sys_user" mit ID, NAME, PASSWORD
- Dein Programm öffnet einen Login-Dialog, in dem der Anwender seine Logindaten eingibt und die werden mit denen der Tabelle "sys_user" verglichen - Zugegriffen wird bei der Abfrage aber mittels des gemeinsamen Datenbankusers

Gruß Igotcha

CG2003 3. Jan 2006 09:41

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Ähm, sorry für diese peinliche Frage, aber geht das mit MySQL so?

Und wie sieht's mit der Performance dann aus?

Das Ganze wird eine Reparatur- und Lagerverwaltung.

Igotcha 3. Jan 2006 09:58

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Zitat:

Zitat von CG2003
Ähm, sorry für diese peinliche Frage, aber geht das mit MySQL so?

Und wie sieht's mit der Performance dann aus?

Das Ganze wird eine Reparatur- und Lagerverwaltung.

Ich benutze das z.B. in meiner Multiuser-Anwendung so ohne Probleme.

Bei dem gemeinsamen Datenbanknutzer solltest Du nur darauf achten, dass dieser nur mit den maximal notwendigen Rechten für die Datenbankzugriffe ausgestattet ist - also keine Tabellen löschen, etc.

Damit hast Du dann erstmal eine eigene "Benutzerverwaltung" für Dein Programm.

Bei mir gibt es dann noch "Rollen" - jeder Nutzer hat eine Rolle und jede Rolle hat bestimmte Rechte, Module meiner modularen Anwendung aufzurufen.

Je nach Rolle kannst Du dann z.B. Menüfunktionen ein-oder ausblenden, etc.

Du brauchst auch keine Angst zu haben, dass alle Nutzer über einen gemeinsamen Datenbanknutzer zugreifen, denn alle Transaktionen erfolgen über die Connection-ID, sind also eindeutig. Wenn ein USer z.B. einen Datensatz mit Autoinc-Feld einfügt, bekommst Du über LAST_INSERT_ID() die zuletzt eingefügte ID genau des betreffenden Users.

Gruß Igotcha

CG2003 3. Jan 2006 10:03

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Hmm, die Idee gefällt mir sehr gut. Vielen Dank dafür.
Hättest Du vielleicht ein bisschen Code, damit ich mir mal ansehen kann wie Du das ungefähr realisiert hast?

Will aber nichts abkupfern, nur mal schauen, wie man es am Besten in Delphi machen kann.
Wäre sehr nett.

Muss ja nun durch diese Idee mein Programm ein wenig "umkrempeln".

mkinzler 3. Jan 2006 10:09

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
User Control Package

Opensource Userverwaltung

CG2003 3. Jan 2006 10:18

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Danke! Aber irgendwie sehe ich da nicht ganz durch.
Ich nehm' also so einen Zeos-Connector. Und dann?
Wie funktioniert das genau?

Funktionieren die Komponenten auch unter Delphi 2006???
Die scheinen momentan nur bis D2005 zu unterstützen.
Wird das Ganze in einer Datenbank oder bzw. Tabelle gespeichert?
Weil sonst bringt es mir ja nichts. Ich entwickle ja unter D2006.

CG2003 3. Jan 2006 12:08

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Zitat:

Zitat von mkinzler
User Control Package

Opensource Userverwaltung

Hatte ich gerade versucht unter D2006 Prof. zu installieren, funktioniert leider nicht.
Wird wohl doch nur bis Delphi 2005 unterstützt.

Gibt es noch andere Möglichkeiten? Vielleicht eine Möglichkeit die Idee mit
der zweiten Usertabelle zu realisieren?

Igotcha 3. Jan 2006 12:19

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Zitat:

Zitat von CG2003
Gibt es noch andere Möglichkeiten? Vielleicht eine Möglichkeit die Idee mit
der zweiten Usertabelle zu realisieren?

Wo genau hast du denn damit Probleme? Ich habe es doch grds. geschildert.

- Du erstellst in Deiner Anwendung einen Login-Dialog
- dann fragst Du ab:

Delphi-Quellcode:
ZQuery1 hat als Connection eine ZEOS-DBConnection mit dem gemeinsamen Datenbankuser

bLogin:=false;
Zquery1.Sql.Text:='SELECT * FROM sys_user WHERE username=:username AND password=:password';
Zquery1.ParamByName('username').AsString:=Edit1.Text;
Zquery1.ParamByName('password').AsString:=Edit2.Text; // ich vergleiche bei mir hier ein MD5 Passwort Hash
Zquery1.Open;
if Zquery1.RecordCount > 0 then
   // Login erfolgreich
   begin
     bLogin:=true
     iRoleID:=ZQuery1.FieldByname('roleid').AsInteger;
   end
else
   // Login nicht erfolgreich
   bLogin:=false;
ZQuery1.Close;

Dann machst Du z.B. im OnShow der Mainform:

Zquery1.Sql.Text:='SELECT * FROM modules m, sys_role_rights r WHERE r.roleid=:roleid AND m.moduleid=r.moduleid';
Zquery1.ParamByName('roleid').AsInteger:=iRoleID;
ZQuery1.Open;
While not ZQuery1.EoF do
begin
     // Hier z.B. Menübaum aufbauen, etc.
     ZQuery1.Next;
end;
Zquery1.Close;

Die Tabelle sys_role_rights kann z.B. so aufgebaut sein:

ID ROLEID MODULEID
1    1        1
2    1        2
3    1        5
4    2        4

CG2003 3. Jan 2006 12:22

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Achso!!!

Sorry, war ein kleiner Denkfehler meinerseits.
Vielen Dank dafür. Ich werde mal meine Anwendung umkrempeln und schauen,
wie ich damit zurecht komme.

Vielen Dank nochmals...

CG2003 3. Jan 2006 22:26

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
So, habe nun alles umgekrempelt und logge mich als EINEN MySQL-User ein.
Danach wird durch ein Login-Formular in einer Tabelle
(Benutzername - Kennwort - Rechte) geprüft, ob der User vorhanden ist.
Wenn ja, wird das Hauptfenster geöffnet, wenn nein wird eine
Fehlermeldung angezeigt.

Und was soll ich sagen: ES FUNKTIONIERT EINWANDFREI!!! :wink:

Vielen Dank an Alle! Vielen Dank, DP... :dp:
(Könnte glatt so'n Werbespruch werden... :lol:)

Igotcha 3. Jan 2006 23:58

Re: MySQL Benutzer mit Zeos ändern/erstellen?
 
Gern geschehen :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz