He sido mordido varias veces por el usuario 'debian-sys-maint' que está instalado por defecto en los paquetes mysql-server instalados desde los repositorios de Ubuntu.
En general, lo que sucede es que obtengo una copia nueva de nuestra base de datos de producción (que no se está ejecutando en Debian / Ubuntu) para la resolución de problemas o el nuevo desarrollo y olvido excluir la tabla mysql.user, por lo tanto, pierdo el usuario debian-sys-maint.
Si agregamos nuevos usuarios de mysql por cualquier razón, tengo que 'fusionarlos' en mi entorno de desarrollo en lugar de simplemente superponer la tabla.
Sin el usuario, mi sistema todavía parece funcional, pero está plagado de errores como:
sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
- ¿Para qué se utiliza debian-sys-maint?
- ¿Hay una mejor manera para que los encargados del paquete hagan lo que intentan hacer?
- ¿Cuál es la forma más fácil de restaurarlo después de haberlo perdido?
- ¿Cuál es el conjunto correcto / mínimo de privilegios para este usuario?
- Parece una mala idea 'otorgar todos los privilegios en *. * ...'
Editar
Pregunta adicional: ¿la contraseña en /etc/mysql/debian.cnf ya está cifrada o esta es la contraseña de texto sin formato? Importa cuando vas a recrear al usuario y parece que nunca lo hago bien en el primer intento.
Gracias
Respuestas:
Una cosa importante para la que se usa es decirle al servidor que ruede los registros. Necesita al menos el privilegio de recarga y apagado.
Ver el archivo /etc/logrotate.d/mysql-server
El
/etc/init.d/mysql
script lo utiliza para obtener el estado del servidor. Se utiliza para apagar / recargar el servidor con gracia.Aquí está la cita de README.Debian
El mejor plan es simplemente no perderlo. Si realmente pierde la contraseña, reiníciela con otra cuenta. Si ha perdido todos los privilegios de administrador en el servidor mysql, siga las guías para restablecer la contraseña de root, luego repare el
debian-sys-maint
.Puede usar un comando como este para crear un archivo SQL que pueda usar más tarde para volver a crear la cuenta.
La contraseña no está cifrada / cifrada cuando está instalada, pero las nuevas versiones de mysql ahora tienen una forma de cifrar las credenciales (consulte: https://serverfault.com/a/750363 ).
fuente
El usuario debian-sys-maint es por defecto un equivalente raíz . Es utilizado por ciertos scripts de mantenimiento en los sistemas Debian y, como efecto secundario, permite a los usuarios con acceso root en el cuadro ver la contraseña de texto sin formato en /etc/mysql/debian.cnf (¿buena o mala?)
Puede volver a crear el usuario de la siguiente manera:
Solo asegúrese de que la contraseña coincida con la de /etc/mysql/debian.cnf
fuente
También podrías:
Lo que le dará la opción de recrear el usuario debian-sys-maint. Los usuarios y las bases de datos existentes son seguros.
fuente
Solo quería comentar, pero creo que la sintaxis correcta merece su propia entrada. Esto creará el usuario debian-sys-maint :
Si todavía tiene el archivo /etc/mysql/debian.cnf, simplemente use la contraseña allí.
Siéntase libre de encontrar una solución segura más
paranoica.fuente
/etc/mysql/debian.cnf
archivo es elroot
usuario de Linux . Y cuando alguien puede leer ese archivo, ya tieneroot
acceso a la máquina y puede detener el servidor MySQL y agregar un administrador de sistema propio. Y el script que inicia MySQL y otros paquetes no puede hacer mantenimiento de seguridad y otro mantenimiento. Entonces sí, es tan seguro como siempre debe ser. Y útil si pierde la contraseña de administrador de MySQL para recuperarla, sin la necesidad de reiniciarla en modo inseguro. ;-)Si es necesario agregar el
debian-sys-maint
usuario sólo paralogrotate.d
propósitos, debe no otorgaALL PRIVILEGES
oGRANT OPTION
- Se trata de un agujero de seguridad gigante innecesaria. En cambio, puede agregar al usuario con elRELOAD
privilegio de esta manera (suponiendo que está accediendo a su base de datos comoroot
, y reemplaza xxxxxx con su contraseña)Actualización 2019
Esta respuesta puede estar desactualizada; vea los comentarios muy dictivos a continuación.
fuente
debian-sys-maint
. Además, puedo confirmar que funciona de maravilla. ¡Salud!debian-sys-maint
usuario también se utiliza para apagar el servidor. Y también para verificar si hay usuarios root al iniciar el servidor mysql. Por lo tanto, al menos debe otorgar privilegios seleccionados en mysql. * Y privilegios de apagado.En lugar de
Yo creo que
porque la contraseña no está cifrada ...?
fuente
debian-sys-maint permisos requeridos
Otras respuestas han abordado suficientemente todo, excepto el conjunto mínimo de permisos que se requieren para el usuario debian-sys-maint. Muchas de las respuestas aquí son simplemente incorrectas a ese respecto, y de hecho son peligrosas. No reduzca los privilegios de debian-sys-maint (incluida la opción de concesión) sin leer y comprender a continuación:
El mantenedor de Debian no le dio todos los privilegios al usuario caprichosamente. Esto es lo que se requiere, dónde y por qué. Algunos de estos privilegios son supersets de otros, pero los enumeraré independientemente en caso de que desee personalizar cosas y eliminar el requisito para ellos:
El último es, por supuesto, el principal requisito de privilegios. La página del manual para mysql_upgrade dice que:
ADVERTENCIA Si decide reducir los privilegios que tiene debian-sys-maint, asegúrese de estar preparado para manejar manualmente cualquier futura actualización de seguridad de Debian y / o mejoras que toquen MySQL. Si realiza una actualización en los paquetes MySQL con un privilegio de debian-sys-maint reducido, y si mysql_upgrade no puede completarse como resultado, puede dejar su base de datos en un estado indefinido (lectura rota). Es posible que la reducción de privilegios no tenga ningún problema cotidiano aparente hasta que se presente una actualización, por lo tanto, no piense que ya ha reducido los privilegios sin efectos perjudiciales como base para pensar que es seguro.
fuente
Como nota al margen de esto, eche un vistazo a esta publicación de mysqlperformanceblog por las razones por las que puede deshabilitar las cosas específicas de Debian.
fuente
Cuando use MySQL 5.6+, recomendaría usar el
mysql_config_editor
comando para crear una entrada para el usuario'debian-sys-maint'@'localhost'
usando la contraseña relevante, lo que significa que la contraseña no necesita ser almacenada en texto plano en el servidor.mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password
Después de esto, el archivo de configuración específico de Debian
/etc/mysql/debian.cnf
puede modificarse para que los detalles de nombre de usuario y contraseña no se almacenen en el archivo.Finalmente, modifique el archivo logrotate para MySQL para que use los detalles de inicio de sesión almacenados en el
~/.mylogin.cnf
archivo en lugar del archivo específico de Debian reemplazando/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf
con
/usr/bin/mysqladmin --login-path=debian-sys-maint
Espero que esto ayude :)
Dave
fuente
debian-sys-maint
usuario? Que los paquetes deberían poder usar este usuario / contraseña para realizar un mantenimiento del sistema comoroot
usuario en el dominio de Linux (¿no es necesario que elroot
usuario en MySQL ingrese laroot
contraseña para MySQL?/etc/mysql/debian.cnf
para eliminar las contraseñas y cambiar el archivo logrotate para hacer referencia a los detalles protegidos. No estoy seguro de si el usuario debian-sys-maint se usa para otra cosa, pero si es así, esto le ayudará a indicar dónde está usando Debian esta cuenta de usuario en su nombre.