Je viens de le faire sur CentOS 6.7 avec ce qui suit :
mysql_secure_installation <<EOF
y
secret
secret
y
y
y
y
EOF
Depuis mysql_secure_installation
est juste un script Bash, vérifiez simplement le code source brut comme indiqué ici. Recherchez les lignes qui lisent, do_query
(notez que l'espace supplémentaire que j'ai placé après do_query
; besoin de trouver des requêtes par rapport à la fonction) et ensuite vous pouvez trouver ces commandes.
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;
Notez que pour cet exemple, j'ai le mot de passe défini sur root
mais n'hésitez pas à modifier cela pour répondre à vos besoins de configuration. Quoi qu'il en soit, prenez simplement cette pile de commandes MySQL et enregistrez-la dans un fichier nommé mysql_secure_installation.sql
.
Une fois cela fait, exécutez simplement la commande suivante via un script pour sécuriser l'installation de MySQL :
mysql -sfu root < "mysql_secure_installation.sql"
Le s
fait taire les erreurs et le f
force les commandes à continuer même si l'on s'étouffe. Le u
se rapporte au nom d'utilisateur qui le suit immédiatement qui, dans ce cas, est clairement root
.
Exécutez cela dans un script de déploiement où MySQL est initialement installé sans mot de passe et vous êtes prêt à le verrouiller sans aucune interaction avec le clavier.
PS :Ce script a été mis en place pour sécuriser une installation MySQL sur Ubuntu 14.04 qui a été installé avec le export DEBIAN_FRONTEND=noninteractive
set et la commande d'installation réelle étant définie sur sudo -E aptitude install -y --assume-yes -q mysql-server mysql-client
. Cela installera proprement MySQL sur Ubuntu sans mot de passe; ce qui est bien pour les scripts de déploiement. Ce mysql -sfu root < "mysql_secure_installation.sql"
verrouille tout en quelques secondes après l'installation.
Je suis tombé sur cette question mais j'ai décidé d'exécuter les requêtes manuellement via un 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
Vous pouvez essayer d'utiliser expect, qui automatise les applications interactives. Regardez ceci automatisant mysql_secure_installation ou ma modification.