Instale MySQL en Ubuntu sin una solicitud de contraseña

305

¿Cómo escribo un script para instalar el servidor MySQL en Ubuntu?

sudo apt-get install mysql se instalará, pero también solicitará que se ingrese una contraseña en la consola.

¿Cómo hago esto de una manera no interactiva? Es decir, ¿escribir un script que pueda proporcionar la contraseña?

#!/bin/bash
sudo apt-get install mysql  # To install MySQL server

# How to write script for assigning password to MySQL root user
# End
Venkat
fuente

Respuestas:

431
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server

Para versiones específicas, como mysql-server-5.6, deberá especificar la versión de esta manera:

sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server-5.6

Para mysql-community-server, las claves son ligeramente diferentes:

sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/root-pass password your_password'
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/re-root-pass password your_password'
sudo apt-get -y install mysql-community-server

Reemplace your_password con la contraseña de root deseada. (parece que su_contraseña también se puede dejar en blanco para una contraseña raíz en blanco).

Si su shell no admite cadenas aquí ( zsh , ksh93 y bash las admiten), use:

echo ... | sudo debconf-set-selections 
Dimitre Radoulov
fuente
1
¡Asegúrese de cambiar la mysql-server-5.1parte a la versión actual de mysql!
Dean Rather
19
Esta respuesta se traduce a MariaDB de la siguiente manera reemplazando mysql-server-<version>con maria-db-<server>. La siguiente aparición de mysql-server/ restos intactos
Lukx
55
- La parte <version> es innecesaria: funciona como un encanto para mí y es más genérica sin eso.
msztolcman
2
Esto funciona bien con despuéssudo apt-get install debconf-utils
Nazin
44
@Lukx para MariaDB, el paquete es mariadb-server, no maria-db-server. Gracias por la nota de todos modos.
ywarnier
238

Esto debería funcionar

export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get -q -y install mysql-server

Por supuesto, te deja con una contraseña de root en blanco, por lo que querrás ejecutar algo como

mysqladmin -u root password mysecretpasswordgoeshere

Luego agregar una contraseña a la cuenta.

Mez
fuente
3
Probado y trabajando en una nueva instancia de Ubuntu 12.04 con MySQL 5.5
Alberto Megía
21
Si está instalando con sudo, use -E para que se pase la variable de entorno. P.ej. sudo -E apt-get -q -y instala mysql-server.
Patrick Cullen
35
También puede agregar la variable env directamente en el comando (sin contaminar el entorno externo) DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
precediéndola
2
La contraseña de mysql se almacenará en un registro bash cuando se haga de esta manera.
DutGRIFF
3
Trabajó para mí en Debian 8.2 - ¡Me combiné de @PatrickCullen y @yoniLavi para DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-servertrabajar - como un encanto!
MuffinTheMan
31

Otra forma de hacerlo funcionar:

echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections
apt-get -y install mysql-server-5.5

Tenga en cuenta que esto simplemente establece la contraseña en "root". No pude conseguir que estableciera una contraseña en blanco usando comillas simples '', pero esta solución fue suficiente para mí.

Basado en una solución aquí .

Chrisfargen
fuente
1
echo 'mysql-server-5.5 mysql-server / root_password contraseña' | sudo debconf-set-selections funciona para especificar una contraseña en blanco para mí.
Tsuneo Yoshioka
44
@TsuneoYoshioka no funciona para mí. Si pongo dos espacios al final, establece mi contraseña en un solo espacio. Con un espacio todavía intenta dar el aviso y luego arruina la instalación.
mpen
3

Utilizar:

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server

sudo mysql -h127.0.0.1 -P3306 -uroot -e"UPDATE mysql.user SET password = PASSWORD('yourpassword') WHERE user = 'root'"
POTULA BALAJI
fuente
¡Gracias! Definir variables fuera de sudo siempre me atrapa.
Gaston Sanchez