Právě jsem to udělal na CentOS 6.7 s následujícím:
mysql_secure_installation <<EOF
y
secret
secret
y
y
y
y
EOF
Od mysql_secure_installation
je pouze skript Bash, stačí se podívat na nezpracovaný zdrojový kód, jak je znázorněno zde. Hledejte řádky, které čtou do_query
(Všimněte si, že mezeru navíc jsem umístil za do_query
; potřebujete najít dotazy versus funkce) a pak můžete najít tyto příkazy.
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;
Všimněte si, že pro tento příklad mám heslo nastaveno na root
ale klidně to změňte tak, aby odpovídalo vašim potřebám nastavení. Každopádně vezměte tuto jednoduchou hromadu příkazů MySQL a uložte ji do souboru s názvem mysql_secure_installation.sql
.
Po dokončení stačí spustit následující příkaz prostřednictvím skriptu, abyste zajistili instalaci MySQL:
mysql -sfu root < "mysql_secure_installation.sql"
s
ztiší chyby a f
nutí příkazy pokračovat, i když se člověk dusí. u
se vztahuje k uživatelskému jménu, které za ním bezprostředně následuje, což – v tomto případě – je jasně root
.
Spusťte to v implementačním skriptu, kde je MySQL nainstalována zpočátku bez hesla a jste připraveni ji uzamknout bez jakékoli interakce s klávesnicí.
PS:Tento skript byl sestaven za účelem zabezpečení instalace MySQL na Ubuntu 14.04, který byl nainstalován s export DEBIAN_FRONTEND=noninteractive
set a skutečný instalační příkaz je nastaven na sudo -E aptitude install -y --assume-yes -q mysql-server mysql-client
. Tím se nainstaluje MySQL na Ubuntu bez hesla; což je příjemné pro implementační skripty. Toto mysql -sfu root < "mysql_secure_installation.sql"
prostě to vše zamkne během několika sekund po instalaci.
Narazil jsem na tuto otázku, ale rozhodl jsem se spustit dotazy ručně pomocí skriptu 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
Můžete zkusit použít očekávat, že automatizuje interaktivní aplikace. Podívejte se na tuto automatizaci mysql_secure_installation nebo na moji modifikaci.