Crash on selecting user in User manager

[expired user #5151]'s profile image [expired user #5151] posted 12 years ago in General Permalink
Hi,
I get crashes when I click on 2 users in the User manager. Both user have the same host. The Error Message says, that this user doesn´t have this privilege - but I don´t know which privilege is meant(?) I´m logged in as root@% which have all privileges.

Here´s the report:

date/time : 2012-03-21, 12:32:53, 15ms
computer name : WSJH2
user name : jh <admin>
registered owner : jh
operating system : Windows 7 x64 Service Pack 1 build 7601
system language : German
system up time : 3 hours 45 minutes
program up time : 16 seconds
processors : 2x Intel(R) Core(TM)2 Duo CPU E8500 @ 3.16GHz
physical memory : 1233/3738 MB (free/total)
free disk space : (C:) 205,34 GB
display mode : 1600x1200, 32 bit
process id : $125c
allocated memory : 63,82 MB
executable : heidisql.exe
exec. date/time : 2012-03-21 08:59
version : 7.0.0.4098
compiled with : Delphi XE
madExcept version : 3.0m beta 1
callstack crc : $18ba9f1b, $bb1cfa37, $bb1cfa37
exception number : 1
exception class : EDatabaseError
exception message : SQL Error (1141): Für Benutzer 'root' auf Host 'mb2-0582fd' gibt es keine solche Berechtigung.

main thread ($b0):
00710be2 heidisql.exe dbconnection 1267 +26 TMySQLConnection.Query
0071ab54 heidisql.exe dbconnection 3264 +3 TMySQLQuery.Execute
007138cd heidisql.exe dbconnection 1814 +5 TDBConnection.GetResults
007142f0 heidisql.exe dbconnection 1997 +1 TDBConnection.GetCol
00766e68 heidisql.exe usermanager 489 +44 TUserManagerForm.listUsersFocusChanged
0062680e heidisql.exe VirtualTrees TBaseVirtualTree.DoFocusChange
0062ac34 heidisql.exe VirtualTrees TBaseVirtualTree.HandleMouseDown
004e9370 heidisql.exe Controls TControl.DoMouseDown
00622bac heidisql.exe VirtualTrees TBaseVirtualTree.WMLButtonDown
004e8d18 heidisql.exe Controls TControl.WndProc
004ed5dc heidisql.exe Controls TWinControl.WndProc
0062ef24 heidisql.exe VirtualTrees TBaseVirtualTree.WndProc
004ecc7c heidisql.exe Controls TWinControl.MainWndProc
004ab504 heidisql.exe Classes StdWndProc
761e7885 USER32.dll DispatchMessageW
00575bc7 heidisql.exe Forms TApplication.ProcessMessage
00575c0a heidisql.exe Forms TApplication.HandleMessage
00571569 heidisql.exe Forms TCustomForm.ShowModal
007cf150 heidisql.exe Main 2023 +1 TMainForm.actUserManagerExecute
004aae5f heidisql.exe Classes TBasicAction.Execute
004d7505 heidisql.exe ActnList TContainedAction.Execute
004d82c0 heidisql.exe ActnList TCustomAction.Execute
004aad23 heidisql.exe Classes TBasicActionLink.Execute
004e926c heidisql.exe Controls TControl.Click
0054a38c heidisql.exe ComCtrls TToolButton.Click
004e9729 heidisql.exe Controls TControl.WMLButtonUp
004e8d18 heidisql.exe Controls TControl.WndProc
004e893c heidisql.exe Controls TControl.Perform
004ecd74 heidisql.exe Controls GetControlAtPos
004ece3e heidisql.exe Controls TWinControl.ControlAtPos
004e893c heidisql.exe Controls TControl.Perform
004ecf08 heidisql.exe Controls TWinControl.IsControlMouseMsg
004ed458 heidisql.exe Controls TWinControl.WndProc
0054eddc heidisql.exe ComCtrls TToolBar.WndProc
004ecc7c heidisql.exe Controls TWinControl.MainWndProc
004ab504 heidisql.exe Classes StdWndProc
761e7885 USER32.dll DispatchMessageW
00575bc7 heidisql.exe Forms TApplication.ProcessMessage
00575c0a heidisql.exe Forms TApplication.HandleMessage
00575f35 heidisql.exe Forms TApplication.Run
007fe8fb heidisql.exe heidisql 67 +16 initialization
75da3398 kernel32.dll BaseThreadInitThunk

ansgar's profile image ansgar posted 12 years ago Permalink
Line 489 in usermanager.pas fires a
SHOW GRANTS FOR 'root'@'mb2-0582fd'

You could try and fire that manually - and should end up with the same error message. I guess, there is some data broken in your mysql.user table, but I'm totally unsure. Which server version is it?
[expired user #5151]'s profile image [expired user #5151] posted 12 years ago Permalink
Manually works. Server is 5.5.21.
Seems that this is a user that MySQL inserted itself
ansgar's profile image ansgar posted 12 years ago Permalink
The server inserts users? Well, the hostname does neither look as if it was manually entered nor it looks like a valid hostname. But I didn't knew there is some automatism on the server which does that. Do you know more?
[expired user #5151]'s profile image [expired user #5151] posted 12 years ago Permalink
It´s been installed by mysql_install_db, a mysql-script that is used to create the first initial db. The server ist an embedded linux-device.
I guess, the problem has todo with a mysql start-parameter. The database-server is stared with the -skip-name-resolve option, since it can´t be guaranteed that a DNS-Server is available.
Here are the SQL-lines used in that script. Hope it helps:

CREATE TEMPORARY TABLE tmp_user LIKE user;
set @current_hostname= @@hostname;
INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','' FROM dual WHERE LOWER( @current_hostname) != 'localhost';
REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
REPLACE INTO tmp_user VALUES ('::1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
INSERT INTO tmp_user (host,user) VALUES ('localhost','');
INSERT INTO tmp_user (host,user) SELECT @current_hostname,'' FROM dual WHERE LOWER(@current_hostname ) != 'localhost';
INSERT INTO user SELECT * FROM tmp_user WHERE @had_user_table=0;
DROP TABLE tmp_user;

@hostname is set to MB2-0582fd in another script.
ansgar's profile image ansgar posted 12 years ago Permalink
Hm ok. Only that does not explain the error message after "SHOW GRANTS FOR 'root'@'mb2-0582fd'". Can you reproduce that error, by the way?
[expired user #5151]'s profile image [expired user #5151] posted 12 years ago Permalink
Yes, everytime I click (=select) the user in the User manager. If I then click "continue" in the exception dialog and then choose another user, HeidiSQL asks to save the changes (but there were none).
ansgar's profile image ansgar posted 12 years ago Permalink
You could be so nice and send me a dump of your mysql database. Feel free to remove passwords, although these may cause the above problem.
Code modification/commit from ansgar.becker, 12 years ago, revision 7.0.0.4101
User manager: Check grants *before* tree node has focus. Could be a non-flushed user, since we just SELECT them from mysql.user. Catch such "There is no such grant defined for user" errors and disable tree node in that case. See http://www.heidisql.com/forum.php?t=10364
ansgar's profile image ansgar posted 12 years ago Permalink
[some pm's ...]

Exception for non yet flushed users is caught in r4101.
ansgar's profile image ansgar posted 12 years ago Permalink
[some pm's ...]

--skip-name-resolve server option handled in r4120.

Please login to leave a reply, or register at first.