UbuntuでのMySQLのスクリプトインストール


23

Ubuntuサーバーの新規インストールからサーバーを構築するスクリプトを作成する必要があります。ApacheやPHPなど、MySQLをインストールする必要があります。ここでの唯一の問題は、apt-getを使用してMySQLをインストールすると、ある時点でインストールによってダイアログが表示され、ルートパスワードを入力できることです。すなわち、人間の相互作用が必要です。

インストール中にこの画面をバイパスし、apt-getを使用してMySQLをインストールしている間に人間の操作を回避するにはどうすればよいですか?


回答:


31

debconfデータベースをpreseedする必要があります。これを試す前に、debconfを最初にインストールする必要があります。

mysqlとubuntuのバージョンは次の行を変更する可能性があります。

echo mysql-server mysql-server/root_password select PASSWORD | debconf-set-selections
echo mysql-server mysql-server/root_password_again select PASSWORD | debconf-set-selections

たとえば、代わりにこれが必要になりました:

echo mysql-server-5.0 mysql-server/root_password password PASSWORD | debconf-set-selections
echo mysql-server-5.0 mysql-server/root_password_again password PASSWORD | debconf-set-selections

はい、動作しますが、インストール後、mysqlにログインできません(mysql -u root、アクセス許可が表示されます)。
サムナン

3
どうでしょうmysql -u root -p
-PhilT

また、パスワードプロンプトの表示を無効にするには、以下に示すように「seen」フラグが必要です。そうしないと、再度パスワードの入力を求められます。
ジェイミーソンベッカー14年

5

FAIおよび同様のシステムは企業環境では役立ちますが(そして彼はそれらについて知っておくべきです)、残念ながら万能薬ではありません。

たとえば、ホストされている、レンタルされているサーバー、信頼できるネットワークや専用ネットワークのない同じ場所にあるサーバー、またはEC2のようなクラウド環境など、リモートマシンで作業している場合はどうでしょうか。PXEネットブートの種類はそこでは動作しません。ただし、PuppetとChefは、彼を支援できるより汎用的なツールのようです。

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get install somepackage

Name: ...
Template: ...
Value: ...
Owners: ...
Variables:
   ....
   ....
EOF

すでに設定されているシステムのdebconf DBから正しい値を取得できます。この手法により、1つのシェルスクリプトにすべてを貼り付けることができます。たとえば、/ var / cache / debconf / passwords.datから(Debianと5.1の5.0とUbuntuの両方で機能することに注意してください。追加のエントリは何も傷つけません):

cat << EOF | DEBIAN_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe /usr/bin/apt-get -qq -y install mysql-server
Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.1
Flags: seen

Name: mysql-server/root_password
Template: mysql-server/root_password
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

Name: mysql-server/root_password_again
Template: mysql-server/root_password_again
Value: YOURPASSWORD
Owners: mysql-server-5.0
Flags: seen

EOF

別の方法、おそらくもっと簡単:(debconf-get-selectionsから回答を集めるか、debconf-utilsパッケージからdebconf-showを集めてください):

echo "Installing MySQL 5.0.."
sudo apt-get install -qqy debconf-utils
cat << EOF | debconf-set-selections
mysql-server-5.0 mysql-server/root_password password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password_again password YOURPASSWORD
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again seen true
EOF
/usr/bin/apt-get -y install mysql-server-5.0 mysql-server

debconf-set-selectionsを実行した後、答えを確認してください:cat /var/cache/debconf/passwords.dat

そして、テスト中に、すべてのデータベース(特に、これが格納されているmysqlデータベース)を削除してパージし、破損した場合に備えて構成DBを修正してください。

apt-get --purge remove mysql-server*; /usr/share/debconf/fix_db.pl 

これに関するいくつかのヒント:1)確認済みフラグと_againパスワードが必要です。2)パスワードを引用符で囲まないでください。引用符なしでMySQLクエリに入力されるため、必要に応じて自分で引用する必要があります。また、スペースがないことも意味します(私は思う)3)問題がある場合は、手動でpreseedを実行してから、MySQLインストールを(通常の端末/ ttyで)自分で直接実行し、debconfの内容を確認します。そこに警告とエラーが表示されます。


3

再構築が必要なサーバーが複数ある場合は、シェルスクリプトを記述する代わりに、Puppetのようなものを確認することを強くお勧めします。Puppetには記述言語があるため、システムをどのように表示するかではなく、どのように表示するかを定義します。パッケージタイプには、Stevenの回答でdebconfの回答を定義できるresponsefileオプションがあります。


1

生の鉄からサーバーのステージングプロセスを自動化することをお勧めしますか?

FAIには現在、Ubuntuを含むほとんどの主要なDebianベースのシステムをネットワークからインストールするためのプロファイルがあります。これはもちろん、人形の答えの拡張であり、debconfの答えの拡張です。

FAIからのステージングと、パペットを使用したサーバーロールへのカスタマイズの組み合わせ(パペットは、Debianのdebconf(-likes)のようにシステムに適切なツールを使用します)かなりやりたいことと一致する例を見つけるのは難しい。

ステージング/構成サーバーを持つことの主な追加の利点は、たとえばgit(リポジトリの状態にチェックサムで名前を付けるという利点があるので、破損に対して安全であるように、構成をバージョン管理する論理的な場所でもあることです正しいチェックサムを記録している限り)、真にクリーンで再現可能なプロセスを実現します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.