MySQL-Benutzerpasswörter über PHP-Skript ändern !

FRitter

Erfahrenes Mitglied
Hallo zusammen,

ich konnte mich schwer entscheiden, ob ich das Thema bei "SQL" oder "PHP" unterbringe - hier nun im Bereich "SQL", da die eigentliche DB-Verbindung mittels PHP nicht das Problem darstellen sollte!

Soweit so gut - hier nun mein Problem:

Ich möchte per PHP-Script verschiedene User meiner MySQL-Datenbank updaten können. Bislang kann ich allerdings nur in der Tabelle "user" der Standarddatenbank "mysql" das Feld "Password" mit einem Wert updaten (vgl. Script unten). Allerdings habe ich dann einen UNverschlüsselten Eintrag gemacht, der von MySQL nicht zum gewünschten Passwort füht...

--> Kann man mittels PHP das Passwort direkt verschlüsselt in dieses Passwortfeld eintragen lassen oder wie kann man mein Vorhaben sonst realisieren ?

Schonmal danke für die Mühe !

Code:
<?php

$username = "testuser"; // nur Kleinbuchstaben !
$new_password ="testpass";  // nur Kleinbuchstaben !

$db = mysql_connect("localhost","Benutzername","Passwort") or die ('SQL-Datenbankverbindung kann nicht hergestellt werden.');
mysql_select_db("mysql",$db) or die ('SQL-Datenbankverbindung kann nicht hergestellt werden.');

$query = "UPDATE user
SET Password = '$new_password'
where user = '$username'";
$erg = mysql_query($query) or die("Update des Datensatzes in der Datenbank fehlgeschlagen.");

mysql_close($db); 

?>
 
Hi,

du kannst das Passwort verschlüsseln, indem Du im Query

PHP:
$query = "UPDATE user
SET Password = PASSWORD('$new_password')
where user = '$username'";
$erg = mysql_query($query) or die("Update des Datensatzes in der Datenbank fehlgeschlagen.");

schreibst. Damit verschlüsselt MySQL Dein Passwort.

Dass PASSWORD darf nicht in Hochkommata stehen.

Liebe Grüße

NoFate
 
Hallo zurück,

zuerst mal vielen Dank für die schnelle Antwort - habe leider von Tutorials.de keine eMail über den Status des Themas bekommen...

Jetzt kann ich das Passwort an dieser Stelle i.d. Datenbank ändern bzw. updaten - aber das "verrückte" ist, dass die neuen Passwörter für die User keine Wirkung erzielen, so dass sich die User nur mit den alten Passwörtern einloggen können. (i.d. DB werden die Werte im Feld "Password" aber geändert!)

--> Muss ich noch mehrere Felder in der Datenbank "MYSQL" updaten ? Bislang habe ich nur das Feld "Password" in der Tabelle "user" dieser DB überschrieben...

Schonmal danke !
 
FRitter hat gesagt.:
Hallo zurück,
[...]- aber das "verrückte" ist, dass die neuen Passwörter für die User keine Wirkung erzielen, so dass sich die User nur mit den alten Passwörtern einloggen können. (i.d. DB werden die Werte im Feld "Password" aber geändert!)

--> Muss ich noch mehrere Felder in der Datenbank "MYSQL" updaten ? Bislang habe ich nur das Feld "Password" in der Tabelle "user" dieser DB überschrieben...

Hallo,

Du musst nach dem Ändern eines Passwortes die Benutzertabelle neu einlesen, bzw den MySQL-Server neu laden.

Liebe Grüße

Alex
 
Dafür gibt es einen SQL-Befehl:
Code:
SET PASSWORD FOR "username"@ "host" = PASSWORD( "password" )
Man sollte niemals direkt in die mysql-Tabellen schreiben.
 
Der Grund ist ganz einfach: Wenn mySQL einen Befehl für etwas bietet, sollte man ihn auch benutzen, und nicht selbst Hand anlegen. Da kann recht schnell recht viel schiefgehn...
 
Hallo nochmal,

ich kann den Server aber nur per PHP erreichen (bzw. der User soll das Passwort seiner MySQL-Datenbank per PHP ändern können), d.h. ich kann den MySQL-Server nicht neu starten lassen bzw. etwas a.d. Konsole selbst eintippen...

Klappt mein PHP-Skript mit der Zeile von euch oder ist das nur für die MySQL-Konsole ?
Würde es dann ohne "Reboot" von MySQL klappen ?

Code:
SET PASSWORD FOR "username"@ "host" = PASSWORD( "password" )

Danke für eure bisherigen Antworten!
 
Einen SQL-Befehl kannst du auch über PHP absenden. Die Datenbank musst du danach nicht neustarten. Du kannst den Leuten aber auch einfach phpMyAdmin zur Verfügung stellen, da kann man auch sein Passwort ändern.
 
Hallo nochmal,

leider klappt mein Vorhaben trotz vieler Statements immer noch nicht.

- Es wird bereits für die User "phpMyAdmin" zur Verfügung gestellt, wobei es so konfiguriert ist, dass der User sein Passwort dort nicht ändern kann (soll er auch dort nicht)

- Es existiert eine zentrale User-Verwaltung, wo zentral versch. Passwörter geändert werden können sollen (z.B. in Kundendatenbank) - das klappt auch soweit alles bestens, aber jetzt soll in die PHP-Datei, die den Update in versch. Datenbanken durchführt auch das Passwort des MySQL-Benutzers geändert werden.

- wenn ich als Admin manuell das Passwort mittels "phpMyAdmin" ändere, sehe ich folgenden Code (mit Platzhaltern so wie der Tipp von einem von euch):

Code:
SET PASSWORD FOR "username"@ "host" = PASSWORD( "xxxxxx" )

Aber wie kann ich den Befehl in meinen PHP-Code einbinden? Obwohl wir das Thema im Bereich SQL/Datenbanken hier diskutieren, benötige ich wohl jetzt eher einmal die kompletten Zeilen, das ganze in PHP abzuwickeln. Hier meine Versuche (exemplarisch):

Code:
<?php

$db_host = "localhost";
$db_username = "Username";
$db_password = "pass";

mysql_connect($db_host,$db_username,$db_password);

$query = "UPDATE user
SET PASSWORD FOR \"Username\" @ \"localhost\" = PASSWORD(\"password_new\")";
mysql_query($query) or die("Hinzufügen des Datensatzes in die Datenbank fehlgeschlagen.");

mysql_close($db);

?>

Das erzeugt sofort die Fehlerausgabe (or die.....).

Mir ist z.Z. eher unklar, ob ich überhaupt eine DB-Verbindung aufbauen muss oder ob ich den Befehl, der nur die Rechte von MySQL ändern soll direkt anwenden kann (wie in euren Tipps möchte ich nicht unmittelbar das Passwort-Feld updaten).

Thanks!
 

Neue Beiträge

Zurück