Ich habe das gerade unter CentOS 6.7 mit folgendem gemacht:
mysql_secure_installation <<EOF
y
secret
secret
y
y
y
y
EOF
Seit mysql_secure_installation
ist nur ein Bash-Skript, schauen Sie sich einfach den rohen Quellcode an, wie hier gezeigt. Suchen Sie nach den Zeilen mit der Aufschrift do_query
(Beachten Sie, dass ich nach do_query
ein zusätzliches Leerzeichen eingefügt habe; müssen Abfragen gegenüber der Funktion finden) und dann können Sie diese Befehle finden.
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;
Beachten Sie, dass ich für dieses Beispiel das Passwort auf root
gesetzt habe Sie können dies jedoch gerne an Ihre Einrichtungsanforderungen anpassen. Wie auch immer, nehmen Sie diesen einfachen Stapel von MySQL-Befehlen und speichern Sie ihn in einer Datei namens mysql_secure_installation.sql
.
Führen Sie danach einfach den folgenden Befehl per Skript aus, um die MySQL-Installation zu sichern:
mysql -sfu root < "mysql_secure_installation.sql"
Die s
schweigt Fehler und die f
zwingt die Befehle fortzufahren, selbst wenn man erstickt. Die u
bezieht sich auf den unmittelbar darauf folgenden Benutzernamen, der in diesem Fall eindeutig root
ist .
Führen Sie das in einem Bereitstellungsskript aus, in dem MySQL anfänglich ohne Passwort installiert wird, und Sie können es ohne Tastaturinteraktion sperren.
PS:Dieses Skript wurde zusammengestellt, um eine MySQL-Installation auf Ubuntu 14.04 zu sichern, die mit dem export DEBIAN_FRONTEND=noninteractive
installiert wurde gesetzt und der eigentliche Installationsbefehl auf sudo -E aptitude install -y --assume-yes -q mysql-server mysql-client
gesetzt wird . Dadurch wird MySQL ohne Passwort sauber auf Ubuntu installiert; Das ist gut für Bereitstellungsskripts. Diese mysql -sfu root < "mysql_secure_installation.sql"
sperrt einfach alles innerhalb von Sekunden nach der Installation.
Ich bin über diese Frage gestolpert, habe mich aber entschieden, die Abfragen manuell über ein Bash-Skript auszuführen:
#!/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
Sie können versuchen, Expect zu verwenden, das interaktive Anwendungen automatisiert. Sehen Sie sich diese Automatisierung von mysql_secure_installation oder meine Modifikation an.