Bug #17700 | mysql_fix_privilege_tables root password | ||
---|---|---|---|
Submitted: | 24 Feb 2006 14:50 | Modified: | 24 Jan 2007 0:44 |
Reporter: | Christian Deligant | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Command-line Clients | Severity: | S3 (Non-critical) |
Version: | 4.0.27-BK, 4.0.24 | OS: | kernel 2.4, debian sarge_1 |
Assigned to: | Ian Greenhoe | CPU Architecture: | Any |
[24 Feb 2006 14:50]
Christian Deligant
[25 Feb 2006 21:40]
Valeriy Kravchuk
Thank you for a problem report. Please, specify the exact version of MySQL server from which that mysql_fix_privilege_tables is taken.
[27 Feb 2006 10:23]
Christian Deligant
The exact version of the server running is 4.0.24_Debian-10sarge1-log But the same "behaviour" was existing in prior versions as well (I allways had to do the workaround when upgrading)
[27 Feb 2006 14:58]
Valeriy Kravchuk
Please, provide the entire test case, starting with setting 'I\'m root' of similar password for the root user. Can you connect with that password to your original server?
[27 Feb 2006 17:54]
Christian Deligant
Well, obviously, I can connect as root to the server via the "I'm root" password given at request when I do «mysql -uroot -p [enter]» (or other programs like mysqladmin) or in scripts invoking «mysql -uroot -p"I'm root"»... As stated by the mysql_fix_privilege_tables script (run as root), if the script doesn't work I have to provide the root password as an argument to the script, even if it is known (and said!) this is insecure. But neither of these did work: - mysql_fix_privilege_tables I'm root [enter] - mysql_fix_privilege_tables "I'm root" [enter] - mysql_fix_privilege_tables 'I\m root' [enter] - mysql_fix_privilege_tables -p"I'm root" [enter] - mysql_fix_privilege_tables -p [enter] So I logged on in Mysql as root, changed the password with a simpler one (a), exit Mysql, relaunched the script with mysql_fix_privilege_tables a [enter] went back in mysql to put the old password again.
[27 Feb 2006 18:06]
Christian Deligant
For further explanation... try this on a fake Mysql server #> mysqladmin -uroot -p password "I'm root" [enter] (at the prompt give the "old" root password) now with #> mysql_fix_privilege_tables you are asking to put the new password as an argument, but doing #> mysql_fix_privilege_tables [ I'm root | "I'm root" | 'I\'m root' | -p ] prints out help pages instead of "doing the job" I guess the help pages are of all the programs cited in the script that don't understand that kind of password... Hope this helps! PS: don't forget to revert to the old password with #> mysqladmin -uroot -p password "[OLD PASSWORD]" [enter] writing "I'm root" (without quotes or escapes) on the prompt
[5 Apr 2006 17:22]
Valeriy Kravchuk
Verified just as described in the last two comments. Even adding option --password="I'm root" etc. (like suggested int the script itself) does not help. Works OK with a password of one word, like "root".
[23 Jun 2006 20:07]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/8157
[1 Aug 2006 7:15]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/9873 ChangeSet@1.2528, 2006-08-01 00:15:16-07:00, igreenhoe@anubis.greendragongames.com +1 -0 Fix for bug #17700 (mysql_fix_privilege_tables cannot handle a password with embedded spaces) Problem: Original code written assuming password contains no spaces. Further, because of how sh interprets characters in variables, you cannot do the "simple solution". Solution: Move the "was a password provided" check to the end. This allows us to correctly quote the password argument when passed to the mysql client program. Addendum: Put this check inside of a shell fn to simplify the code.
[24 Jan 2007 0:44]
Paul DuBois
Noted in 4.1.23, 5.0.32, 5.1.15 changelogs. mysql_fix_privilege_tables did not handle a password containing embedded space or apostrophe characters.