GNU/Linux >> Linux の 問題 >  >> Linux

シェル スクリプト経由で echo コマンドを使用して mysql_secure_installation を自動化する

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 または私の変更を見てください。


Linux
  1. 引数なしでコマンドを実行しないようにするシェルスクリプトラッパー?

  2. ユーザーとして引数を使用してスクリプトを実行しますか?

  3. シェルスクリプトとパイプの動作に関する明確化

  1. シェルスクリプトの予期しない動作?

  2. シェルスクリプトでユーザーのパスワードを確認する

  3. 別のユーザーとしてシェル スクリプトを実行する

  1. 関数とパラメータを変数として持つシェルスクリプト?

  2. シェルスクリプトがメールコマンドでハングアップしますか?

  3. 実際の例を含むエコーコマンド