Instalación con script de MySQL en Ubuntu

Instalación con script de MySQL en Ubuntu

Necesito escribir un script que construirá mi servidor a partir de una nueva instalación del servidor Ubuntu. Entre cosas como Apache y PHP necesita instalar MySQL. El único problema aquí es que cuando instalo MySQL con apt-get, en algún momento la instalación mostrará un cuadro de diálogo que me permitirá escribir mi contraseña de root. Es decir, se requiere interacción humana.

¿Cómo puedo omitir esta pantalla durante la instalación y evitar la interacción humana mientras sigo usando apt-get para instalar MySQL?

Respuesta1

Necesita preconfigurar la base de datos debconf. Es necesario instalar debconf antes de intentar esto.

La versión de mysql y ubuntu podría cambiar la línea:

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections
echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

Por ejemplo, necesitabas esto en su lugar:

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections
echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections

Respuesta2

Si bien FAI y sistemas similares son útiles en un entorno empresarial (y él debería conocerlos), desafortunadamente no son una panacea.

Por ejemplo, ¿qué pasa si está trabajando en máquinas remotas, tal vez servidores alojados, alquilados, servidores colocados sin una red dedicada o confiable, o un entorno de nube como EC2? Ningún tipo de arranque de red PXE funcionará allí. Sin embargo, Puppet y Chef parecen ser herramientas de uso más general que podrían ayudarlo.

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get install somepackage

Name: ...
Template: ...
Value: ...
Owners: ...
Variables:
   ....
   ....
EOF

Puede obtener los valores correctos de la base de datos debconf en un sistema que ya ha sido configurado. Esta técnica le permite guardar todo en un único script de shell. Por ejemplo, desde /var/cache/debconf/passwords.dat (tenga en cuenta la capacidad de trabajar tanto con 5.0 en Debian como con 5.1 y Ubuntu, las entradas adicionales no perjudican nada):

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get -qq -y install mysql-server
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

EOF

Otro método, quizás más sencillo: (reúna respuestas de debconf-get-selections o debconf-show del paquete debconf-utils):

echo "Installing MySQL 5.0.."
sudo apt-get install -qqy debconf-utils
cat << EOF | debconf-set-selections
mysql-server-5.0 mysql-server/root_password password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again seen true
EOF
/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

Después de ejecutar debconf-set-selections, verifique sus respuestas: cat /var/cache/debconf/passwords.dat

Y, mientras realiza la prueba, asegúrese de eliminar y purgar todas las bases de datos (especialmente la base de datos mysql, donde está almacenada) y arreglar su base de datos de configuración en caso de que se corrompan:

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl 

Algunos consejos con esto: 1) DEBES tener la bandera vista y la contraseña _again. 2) No DEBES poner comillas alrededor de la contraseña. Se incluirá en una consulta MySQL sin comillas, por lo que deberá citarla usted mismo si es necesario. Eso también significa que no hay espacios (creo) 3) Si tiene problemas, haga la preconfiguración a mano y luego ejecute la instalación de MySQL directamente usted mismo (en una terminal/tty normal) y vea lo que le dice debconf. Allí le indicará advertencias y errores.

Respuesta3

Si tiene varios servidores que necesita reconstruir, le recomiendo que mire algo comoMarionetaen lugar de escribir un script de shell. Puppet tiene un lenguaje descriptivo, por lo que usted define cómo desea que se vea el sistema, no cómo llegar allí. El tipo de paquete tiene una opción de archivo de respuestas que le permite definir las respuestas de debconf en la respuesta de Steven.

Respuesta4

información relacionada