Creando base de datos MySQL y usuario sin contraseña

Creando base de datos MySQL y usuario sin contraseña

Estoy creando un conjunto de scripts bash que básicamente preparan hosts virtuales Apache, repositorios git y otras cosas en un servidor en la nube. Hasta ahora todo bien, todo está funcionando, pero ocurrió un gran problema:Base de datos MySQL y creación de usuarios..

Los scripts actuales usan ssh con claves para autenticarse en el servidor en la nube y todos los miembros de mi equipo pueden ejecutar comandos. Quiero mantenerlo de esta manera y de alguna manera permitirles crear una nueva base de datos MySQL y un nuevo usuario sin necesidad de iniciar sesión en MySQL como root o cualquier otro usuario con altos privilegios, pero no tengo ninguna solución para esto.

Idea #1es crear un nuevo usuario de mysql sin contraseña y otorgarle todos los derechos (como root) pero hacerlo utilizable únicamente @'localhost'.

Idea #2es almacenar la contraseña para este usuario de control MySQL en un archivo y hacerlo accesible solo para el usuario ssh actual que usan los otros scripts. Luego, el inicio de sesión de MySQL utilizará esta contraseña almacenada para iniciar sesión y crear la base de datos y el usuario.

No sé qué opción es mejor y sé que son peligrosas. Pido opinión y alguna idea mejor.

Respuesta1

Desea que el usuario de Unix y el usuario de MySQL que utiliza su equipo tengan los menores privilegios de acceso posibles y al mismo tiempo les permitan hacer lo que usted desee. Parece que ambas ideas permiten más privilegios de acceso de los necesarios. Es mejor para el usuario del equipo mysql:

  1. solo tienen acceso CREAR o cualquier acceso que necesiten (restringe al mínimo lo que su equipo puede hacer). Le otorga acceso a un usuario de MySQL mediante la declaración GRANT.
  2. almacene el usuario/contraseña en ~/my.cnfun archivo con acceso de lectura solo del propietario (ya no restringe a su equipo, pero evita que otros vean el inicio de sesión si pueden ver el script).

Lo anterior es fácil de hacer y supone una gran mejora.

Una mejor idea, pero más trabajo, sería no permitir que el usuario del equipo acceda para crear bases de datos, sino simplemente colocar solicitudes para configurar sitios en alguna cola, lo que otro script de usuario que solo usted controla (y que solo tiene acceso a él). necesita) procesaría regularmente para configurar los sitios. La cola podría ser un archivo con cada línea una solicitud, un directorio con cada archivo una solicitud o una tabla de base de datos con cada registro una solicitud. Depende de cuánto desee proteger su sistema.

En general, debería utilizar usuarios de Unix y MySQL que no tengan tanto acceso como root. Creo un usuario mysql funcional para mí que puede crear y eliminar bases de datos y realizar solo las operaciones que uso habitualmente. Sólo uso root o un usuario con privilegios similares si necesito configurar otro usuario para que le otorgue privilegios de acceso. En un script hago que el usuario sea lo más restringido posible para limitar el daño si sale mal.

información relacionada