CentOS 6.7 で次のようにしました:
mysql_secure_installation <<EOF
y
secret
secret
y
y
y
y
EOF
mysql_secure_installation
以降 は単なる Bash スクリプトです。ここに示す生のソース コードを確認してください。 do_query
と書かれている行を探します。 ( do_query
の後に余分なスペースを入れたことに注意してください;クエリと関数を見つける必要があります)、その後、これらのコマンドを見つけることができます。
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;
この例では、パスワードが root
に設定されていることに注意してください ただし、セットアップのニーズに合わせて自由に変更してください。とにかく、単純な MySQL コマンドの山を取り、mysql_secure_installation.sql
という名前のファイルに保存します。 .
それが完了したら、スクリプトを介して次のコマンドを実行するだけで、MySQL のインストールを保護できます:
mysql -sfu root < "mysql_secure_installation.sql"
s
エラーと f
を沈黙させます 窒息してもコマンドを強制的に続行します。 u
その直後に続くユーザー名に関連している — この場合 — 明らかに root
である .
パスワードなしで MySQL が最初にインストールされ、キーボード操作なしでロックダウンするようにすべて設定されているデプロイメント スクリプトでこれを実行します。
PS:このスクリプトは、export DEBIAN_FRONTEND=noninteractive
でインストールされた Ubuntu 14.04 上の MySQL インストールを保護するためにまとめられました。 設定され、実際のインストール コマンドは sudo -E aptitude install -y --assume-yes -q mysql-server mysql-client
に設定されます .そうすることで、パスワードなしで MySQL を Ubuntu にクリーンにインストールできます。これは、展開スクリプトに適しています。この mysql -sfu root < "mysql_secure_installation.sql"
インストールが行われた後、数秒ですべてをロックするだけです。
この質問に出くわしましたが、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
インタラクティブなアプリケーションを自動化する Expect の使用を試すことができます。この自動化 mysql_secure_installation または私の変更を見てください。