From a2e20b08f1d1d68a27230e8b8acac95dce2a61a3 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sun, 21 Nov 2010 19:21:16 +0000 Subject: [PATCH] Use CREATE USER query for added users, as required since 5.0.2 servers when password is empty. Works around SQL error 1133 (Can't find any matching row in the user table). See http://www.heidisql.com/forum.php?t=6948 --- source/usermanager.pas | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/source/usermanager.pas b/source/usermanager.pas index e9afb25b..b94fabd1 100644 --- a/source/usermanager.pas +++ b/source/usermanager.pas @@ -766,10 +766,11 @@ end; procedure TUserManagerForm.btnSaveClick(Sender: TObject); var Conn: TMySQLConnection; - UserHost, NewUserHost, Table, Revoke, Grant, OnObj: String; + UserHost, NewUserHost, Create, Table, Revoke, Grant, OnObj: String; Tables: TStringList; P: TPrivObj; i: Integer; + PasswordSet: Boolean; begin // Save changes Conn := MainForm.ActiveConnection; @@ -793,6 +794,16 @@ begin if editPassword.Text <> editRepeatPassword.Text then raise EInputError.Create('Repeated password does not match first one.'); + // Create added user + PasswordSet := False; + if FAdded and (Conn.ServerVersionInt >= 50002) then begin + Create := 'CREATE USER '+UserHost; + if editPassword.Modified then + Create := Create + ' IDENTIFIED BY '+esc(editPassword.Text); + Conn.Query(Create); + PasswordSet := True; + end; + // Grant added privileges and revoke deleted ones for P in FPrivObjects do begin @@ -847,7 +858,7 @@ begin end; // Set password - if editPassword.Modified then begin + if editPassword.Modified and (not PasswordSet) then begin Conn.Query('SET PASSWORD FOR ' + UserHost + ' = PASSWORD('+esc(editPassword.Text)+')'); end;