Agregar nuevamente el usuario debian-sys-maint a MySQL
Si sos usuario de «Debian» e instalaste MySQL desde los repositorios, de seguro el proceso de instalacion te agregó un usuario en la base de datos llamado «debian-sys-maint».
Dicho usuario es usado por Debian para hacer verificaciones al momento de ejecutar el script init.d para el start/stop.
Si por alguna razón tuviste que importar las bases enteras de MySQL desde otro servidor (recuperar datos de un equipo viejo?), es probable que durante este proceso hayas perdido ese usuario, y ahora cuando intentas arrancar MySQL te aparece un error como este:
server:/# /etc/init.d/mysql start Starting MySQL database server: mysqld. Checking for corrupt, not cleanly closed and upgrade needing tables.. /usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)' ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES) server:/#
Para solucionar esto, lo que tenés que hacer es simple:
1. Obtener del archivo /etc/mysql/debian.cnf el password antiguo que tenia el usuario «debian-sys-maint», con un simple «cat» lo podemos ver:
server:/# cat /etc/mysql/debian.cnf # Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = DEBUSERPASSWORD socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] user = debian-sys-maint password = DEBUSERPASSWORD socket = /var/run/mysqld/mysqld.sock basedir = /usr
Como se ve ahi, «DEBUSERPASSWORD» es el password…
2. Agregamos de nuevo el usuario a nuestra base actual…
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'DEBUSERPASSWORD' WITH GRANT OPTION;
Por supuesto, tenés que remplazar DEBUSERPASSWORD con el password que obtuviste en el punto 1.
3. Ahora sí, finalmente, reiniciar MySQL…
server:/# /etc/init.d/mysql stop server:/# /etc/init.d/mysql start
(tambien podes usar mysql restart, pero como en teoria te fallo al arrancar previamente, conviene tirar un stop, ver que el mysqld no este corriendo, y ahi ejecutarlo de nuevo).
That’s all