2017-11-20 5 views
0

が存在する場合は、/etc/mysql/my.cnfに存在します。追加ラインタグがすでに私は次のタグと設定を保証するスクリプトを記述しようとしています

[mysqld] 
bind-address = 0.0.0.0 

私は現在、次のしていますコマンド:

sudo sed -i "/bind-address/d" /etc/mysql/my.cnf 
sudo sed -i "/\[mysqld\]/d" /etc/mysql/my.cnf 
sudo sed -i "\$a[mysqld]\\nbind-address = 0.0.0.0" /etc/mysql/my.cnf 

私はその後、私はバインドしたいアドレスとともに、mysqldのタグを付加し、「バインド・アドレス」または「[mysqldを]」を含むすべての行を削除しています。しかし、mysqldの下に他の設定があってもそれは正しく動作しません。これを行うにはクリーンな方法はあり

some_config 
some_config 
[mysqld] 
bind-address = 0.0.0.0 

:に

[mysqld] 
some_config 
some_config 
bind-address = 127.0.0.1 

:それは行くから終わるのでしょうか?ありがとう。

EDIT:私は、同じ目的を果たす/etc/mysql/mysql.conf.d/mysqld.cnfのデフォルトの 'bind-address = 127.0.0.1'を置き換えることに決めました。あなたは\[mysqld\]と次^ *\[(またはファイルの末尾)との間にバインドアドレスの値を変更するには、アドレスの範囲を定義することができsedの

+1

どのようにセクションを定義したいと思いますか? '[mysld]'から何まで?最初の空行または何ですか? –

+0

@PhilippGrigoryevこんにちは、それは次のタグまたはファイルの終わりまでにする必要があります。 – user5056973

+0

次のタグは '[xxxxx]'を意味しますか? –

答えて

1

付:

sed -i '/\[mysqld\]/,/^ *\[/{s/\(bind-address *= *\).*/\10.0.0.0/}' file 
+0

全体のポイントは、ファイルの次のセクションまたは最後の両方の範囲を動作させることです。 –

+0

これは、このコマンドの機能です。 – SLePort

+0

@SLePort Brilliant、ありがとう。 – user5056973

関連する問題