ACPI administration advocacy advocacy advocacy opinion alsa apache apple apt aptitude audio authentication awk bash business cache calendar censorship commandline cron database debian desktop development disk dvd economics emacs email europe exim files firefox firewall flash foss freedom ftp fun git grub hardware hardware html images installation ipod kde kernel keyboard knoppix laptop latex locale lockin longlines microsoft mplayer multimedia mysql network nfs openbox openoffice opinion opinion partition pdf perl php politics postgresql printing privacy rant rxvt script scripting scsi security sed server shell siteadmin sitenews sitesoftware skype skype slackware sound spam ssh subversion sudo svk swap t23 t43 terminal text thinkpad thunderbird time timezone ubuntu users versioncontrol video windows wine wordpress wordprocessing xwindows xwindows youtube
My system had just upgraded to mysql 5.1. I hadn't intended to upgrade. It was just one of those things that happens when you are trying to upgrade one or two packages on a Debian unstable system and find out that everything breaks.
The end result of this breakage was that mysql was uninstalled.
I needed to reinstall it:
aptitute install mysql-server mysql-client
It seemed to work. But if I (as 'root') tried to grant privileges to another user I got that 'access denied' error. What was going on?
The answer seems to be that when mysql was unintentionally uninstalled, it left the existing database files in place and when version 5.1 was installed it started accessing these old, slightly incompatible files. Running:
mysql_upgrade -u root -p
fixed the problem.
Then a second problem presented itself. The maintenance user 'debian-sys-maint' couldn't access the database. This is a fairly common and often discussed problem.
Logging into mysql as the root user:
mysql -u root -p mysql
and granting privileges to 'debian-sys-maint':
GRANT ALL PRIVILEGES on *.* to 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>';
where <password> is the password listed in /etc/mysql/debian.cnf fixed the problem.