Instalação silenciosa do servidor MySQL

2

Eu quero instalar um servidor mysql em um Raspberry Pi (Debian) usando uma conexão SSH e um script bash, que contém os comandos de instalação. O ponto é que a instalação precisa ser feita automaticamente usando o script. Não quero nenhuma interação do usuário ou prompts gráficos na janela do SSH.

É por isso que estou usando o seguinte código, para configurar um servidor mysql, mas evitar qualquer feedback gráfico:

sudo DEBIAN_PRIORITY=critical apt-get install -y -q mysql-server php5-mysql

Até agora, ele está funcionando bem e a instalação é executada sem nenhum aviso, etc. Mas, quando tento alterar a senha de root do servidor MySQL após a instalação, sempre obtenho a resposta:

$ mysql -u root

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Eu esperava que a instalação silenciosa usasse o usuário padrão "root" e uma senha vazia, mas também tentei muitas outras opções possíveis. Eu também tentei outros comandos como:

$ mysql -u "root" -p ""
$ mysql --user="root" --password=""

ou

$ mysqladmin -u root password ""

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

mas infelizmente sem sucesso.

Alguém sabe uma maneira silenciosa e não-gráfica de instalar um servidor mysql em um script com a configuração da senha raiz no script ou alterá-lo depois de configurar tudo?

    
por user3191334 23.02.2016 / 21:35

2 respostas

2

No Debian, você tem em /etc/mysql/debian.cnf a senha para o usuário debian-sys-maint .

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint
password = xxxxxxxxxxxxxxxx
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = xxxxxxxxxxxxxxxx
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Usando o usuário e a senha na seção [client], você pode alterar a senha do root após a instalação do MySQL.

Você pode fazer então:

PASS='sudo awk '/password/ { print $3;exit }' /etc/mysql/debian.cnf'
echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');" \
| mysql -u debian-sys-maint -p$PASS
    
por 23.02.2016 / 22:06
0

Eu acredito que você está tentando se conectar ao servidor mysql sem iniciá-lo.

No mysql você tem dois componentes principais, o servidor ( mysqld ) e o cliente ( mysql ). Sua primeira ligação

apt-get install mysql-server php5-mysql

instala o servidor (e o suporte a mysql para php). Você não lista o cliente mysql nesta chamada, mas será instalado automaticamente. Então você precisa iniciar o servidor. No CentOS isso pode ser feito (não tenho certeza sobre o Ubuntu, mas provavelmente algo similar) chamando

# /etc/rc.d/init.d/mysqld start

e só então você pode se conectar ao servidor mysql com o seu comando

$ mysql -u root
    
por 15.05.2017 / 22:58