L'ho appena fatto su CentOS 6.7 con quanto segue:
mysql_secure_installation <<EOF
y
secret
secret
y
y
y
y
EOF
Dal mysql_secure_installation
è solo uno script Bash, basta controllare il codice sorgente non elaborato come mostrato qui. Cerca le righe che leggono, do_query
(nota lo spazio extra che ho inserito dopo do_query
; bisogno di trovare query rispetto alla funzione) e quindi puoi trovare questi comandi.
UPDATE mysql.user SET Password=PASSWORD('root') WHERE User='root';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
Nota che per questo esempio, ho impostato la password su root
ma sentiti libero di cambiarlo per soddisfare le tue esigenze di configurazione. Ad ogni modo, prendi quella semplice pila di comandi MySQL e salvala in un file chiamato mysql_secure_installation.sql
.
Fatto ciò, basta eseguire il seguente comando tramite script per proteggere l'installazione di MySQL:
mysql -sfu root < "mysql_secure_installation.sql"
Il s
silenzia gli errori e il f
costringe i comandi a continuare anche se uno soffoca. Il u
si riferisce al nome utente che lo segue immediatamente che, in questo caso, è chiaramente root
.
Eseguilo in uno script di distribuzione in cui MySQL è installato inizialmente senza password e sei pronto per bloccarlo senza alcuna interazione con la tastiera.
PS:questo script è stato messo insieme per proteggere un'installazione di MySQL su Ubuntu 14.04 che è stato installato con export DEBIAN_FRONTEND=noninteractive
set e l'effettivo comando di installazione impostato su sudo -E aptitude install -y --assume-yes -q mysql-server mysql-client
. In questo modo installerai MySQL in modo pulito su Ubuntu senza password; che è utile per gli script di distribuzione. Questo mysql -sfu root < "mysql_secure_installation.sql"
blocca tutto in pochi secondi dopo l'installazione.
Mi sono imbattuto in questa domanda ma ho deciso di eseguire le query manualmente tramite uno script Bash:
#!/bin/bash
# Make sure that NOBODY can access the server without a password
mysql -e "UPDATE mysql.user SET Password = PASSWORD('CHANGEME') WHERE User = 'root'"
# Kill the anonymous users
mysql -e "DROP USER ''@'localhost'"
# Because our hostname varies we'll use some Bash magic here.
mysql -e "DROP USER ''@'$(hostname)'"
# Kill off the demo database
mysql -e "DROP DATABASE test"
# Make our changes take effect
mysql -e "FLUSH PRIVILEGES"
# Any subsequent tries to run queries this way will get access denied because lack of usr/pwd param
Puoi provare a utilizzare wait, che automatizza le applicazioni interattive. Guarda questo automatizzazione di mysql_secure_installation o la mia modifica.