GNU/Linux >> Linux Esercitazione >  >> Linux

Automatizza mysql_secure_installation con il comando echo tramite uno script di shell

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.


Linux
  1. Shell Script Wrapper per impedire l'esecuzione di comandi senza argomenti?

  2. È possibile far interagire uno script di shell bash con un altro programma a riga di comando?

  3. Modifica lo script della shell mentre è in esecuzione

  4. Aggiungi una riga al file /etc/hosts con lo script della shell

  5. Eseguire uno script di shell come utente diverso

Comando Echo in Linux (con esempi)

Echo Command in Linux con esempi

Comando runuser Linux - Esegui Shell con l'ID utente/gruppo specificato

Come eseguire un comando Shell con Python

Modifica gli account utente con il comando Usermod

Come eseguire un comando in uno script della shell?