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

This commit is contained in:
Ansgar Becker
2010-11-21 19:21:16 +00:00
parent fbefabe146
commit a2e20b08f1

View File

@ -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;