Linux

MySQL: “Access denied for user ‘debian-sys-maint’@’localhost’”

by J.Backlund on 17/05/2009

in Linux

Detta meddelande fick jag efter att ha återställt en MySQL dump:

:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [fail]
* Starting MySQL database server mysqld [ OK ]
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'

“debian-sys-maint” är skapad för att starta och stoppa mysql och för att kunna genomföra andra underhållsåtgärder. Anledningen till detta fel är oftast att lösenordet skrivs över vid en uppdatering eller återställning. Ubuntu kollar i följande fil för att hitta lösenordet till användaren “debian-sys-maint “:

/etc/mysql/debian.cnf

Då lösenordet inte är matchar efter uppdateringen/återställningen får man detta fel.

För att lösa problemet, gör då följande…

nano /etc/mysql/debian.cnf

I “debian.cnf” bör följande inställningar finnas(eller liknande):

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = n4aSHUP04s1J32X5
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user     = debian-sys-maint
password = n4aSHUP04s1J32X5
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Lösenordet som är listat, det är detta som vi behöver!

Näste steg är att ge “debian-sys-maint” rätt privilegier och rätt lösenord. Detta gör vi genom att logga in i MySQL-databasen, detta gör du med din root-användare och ditt root-lösenord.

root@exempel.se:~$ mysql -u root -p <password>

För att ge alla privilegier och identifiera med lösenordet, skriv följande när du är inlogad i databasen:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';

Notera att du skall skriva in password som du fann i debian.cnf tidigare.

Nu kan du starta om mysql utan att få felkoden!

root@texempel.se:$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.

Tänk på att de nya inställningarna inte har aktiverats förrän du startar om mysql vilket gör att du kan vara tvungen att köra kill på mysql för att processen skall stängas av över huvud taget.

{ 2 comments… read them below or add one }

dr soos 20/07/2009 at 9:58 pm

De nya rättigheterna blir gällande om du kör FLUSH PRIVILEGES efter din GRANT-sats.

J.Backlund 20/07/2009 at 11:56 pm

Tack för tipset!

Leave a Comment

Previous post:

Next post: