MySQLをパスワードプロンプトなしでUbuntuにインストールする


305

MySQLサーバーをUbuntuにインストールするスクリプトを作成するにはどうすればよいですか?

sudo apt-get install mysql インストールされますが、コンソールに入力するパスワードも要求されます。

非インタラクティブな方法でこれを行うにはどうすればよいですか?つまり、パスワードを提供できるスクリプトを記述しますか?

#!/bin/bash
sudo apt-get install mysql  # To install MySQL server

# How to write script for assigning password to MySQL root user
# End

回答:


431
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server

などの特定のバージョンでは、次のようにバージョンmysql-server-5.6を指定する必要があります。

sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password password your_password'
sudo debconf-set-selections <<< 'mysql-server-5.6 mysql-server/root_password_again password your_password'
sudo apt-get -y install mysql-server-5.6

mysql-community-serverの場合、キーは少し異なります。

sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/root-pass password your_password'
sudo debconf-set-selections <<< 'mysql-community-server mysql-community-server/re-root-pass password your_password'
sudo apt-get -y install mysql-community-server

your_passwordを目的のrootパスワードに置き換えます。(your_passwordを空白のままにして、rootパスワードを空白にすることもできます。)

シェルがhere-stringsをサポートしていない場合(zshksh93およびbashはそれらをサポートします)、次を使用します。

echo ... | sudo debconf-set-selections 

1
mysql-server-5.1パーツを現在のmysqlバージョンに変更してください。
Dean Rather、

19
置き換えることにより、以下のように、この回答はMariaDBに変換mysql-server-<version>してmaria-db-<server>mysql-server/ 手付かず
Lukx 2013

5
-<version>の部分は不要です-私にとっては魅力のように機能し、それなしではより一般的です。
msztolcman 2013

2
これはアフターで問題なく動作しますsudo apt-get install debconf-utils
Nazin 2014

4
@Lukx for MariaDBの場合、パッケージはmariadb-serverではなくmariadb-serverです。とにかくメモをありがとう。
ywarnier 2016

238

これでうまくいくはずです

export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get -q -y install mysql-server

もちろん、空のrootパスワードが残るので、次のようなものを実行する必要があります

mysqladmin -u root password mysecretpasswordgoeshere

その後、アカウントにパスワードを追加します。


3
MySQL 5.5を搭載した新しいUbuntu 12.04インスタンスでテストおよび動作
AlbertoMegía2013年

21
sudoを使用してインストールする場合は、-Eを使用して環境変数が渡されるようにします。例えば。sudo -E apt-get -q -y mysql-serverをインストールします。
Patrick Cullen 14

35
env変数をコマンドに直接追加することもできます(外部環境を汚染することなく)。これを先頭に追加することによって–DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server
yoniLavi

2
このようにすると、mysqlパスワードはbashログに保存されます。
DutGRIFF

3
Debian 8.2で私のために働きました-私は@PatrickCullenと@yoniLaviを組み合わせて- DEBIAN_FRONTEND=noninteractive sudo -E apt-get -q -y install mysql-server魅力のように働きました!
MuffinTheMan 2016年

31

それを機能させる別の方法:

echo "mysql-server-5.5 mysql-server/root_password password root" | debconf-set-selections
echo "mysql-server-5.5 mysql-server/root_password_again password root" | debconf-set-selections
apt-get -y install mysql-server-5.5

これは単にパスワードを「root」に設定することに注意してください。単純な引用符を使用して空白のパスワードを設定することはできませんでした''が、このソリューションで十分でした。

ここでのソリューションに基づいています


1
echo 'mysql-server-5.5 mysql-server / root_password password' | sudo debconf-set-selectionsは、空白のパスワードを指定するように機能します。
吉岡恒夫2014年

4
@TsuneoYoshiokaうまくいきません。最後に2つのスペースを入れると、パスワードが1つのスペースに設定されます。スペースが1つある場合でも、プロンプトが表示され、インストールが失敗します。
mpen 2014

3

使用する:

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server

sudo mysql -h127.0.0.1 -P3306 -uroot -e"UPDATE mysql.user SET password = PASSWORD('yourpassword') WHERE user = 'root'"

ありがとう!sudoの外部で変数を定義すると、常に私を惹きつけます。
Gaston Sanchez
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.