GNU/Linux >> Znalost Linux >  >> Linux

Automatizujte mysql_secure_installation pomocí příkazu echo pomocí skriptu shellu

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.


Linux
  1. Neočekávané chování skriptu Shell?

  2. Shell skript s funkcí a parametrem jako proměnnými?

  3. Skript Shell visí na příkazu Mail?

  1. Spustit skript s argumenty jako uživatel?

  2. Je možné, aby skript bash shell interagoval s jiným programem příkazového řádku?

  3. Upravte skript shellu, když je spuštěn

  1. Shell Script Wrapper zabránit spuštění příkazu bez argumentů?

  2. Zkontrolujte heslo uživatele pomocí shell skriptu

  3. Provedení příkazu jako uživatel nologin