web-dev-qa-db-ja.com

スクリプト内でのmysql bind-addressの変更

シェルスクリプトからmy.cnfのmysql bind-addressを変更する最良の方法は何ですか? mysqladminのようなツールを使用する方法はありますか、またはsedを使用するか、単にmy.cnfに追加して、2番目のエントリが最初のエントリを上書きすることを望みますか(これは気の毒に聞こえます)。 mysql-serverのインストール後に実行され、vmの外部からの接続を許可するvagrantの単純なシェルプロビジョナーを作成しようとしています。

10
nonsenz

Sedがこのコンテキストで最も簡単な方法のようです(クリーンインストール後)。

Sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf 
9
nonsenz

@nonsenzの発言に加えて、puphpet.comのプロビジョニングスクリプトを使用する場合は、bashファイルを/ puphpet/files/startup-alwaysフォルダーに追加して、そこにすべてのコマンドを配置できます。 vagrantが起動またはリロードすると、スクリプトが呼び出されます。

mysql.sh

#!/bin/bash

echo "Updating mysql configs in /etc/mysql/my.cnf."

if [ 'Sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf' ]; then

    echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."

    Sudo /etc/init.d/mysql stop
    Sudo /etc/init.d/mysql start

fi

さらに良い(よりきれいな出力を可能にするため)

mysql.sh

#!/bin/bash

echo "Updating mysql configs in /etc/mysql/my.cnf."
Sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."
Sudo service mysql stop
Sudo service mysql start

これにより、IDE(PhpStorm)をvagrantを介してゲストマシンのデータベースに直接接続できるようになりました。もちろん、ゲストのmysqlユーザーに '%'へのアクセス権を与え、ゲストのポート3306を転送しましたホストのポート(3309)へのアクセス権の付与もこのファイルで行うことができます。

さらに良い(mysqlはアドインを実行します)

mysql.sh

#!/bin/bash

echo "Updating mysql configs in /etc/mysql/my.cnf."
Sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
echo "Updated mysql bind address in /etc/mysql/my.cnf to 0.0.0.0 to allow external connections."

echo "Assigning mysql user user1 access on %."
Sudo mysql -u user1 -pyourpassword --execute "GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'yourpassword' with GRANT OPTION; FLUSH PRIVILEGES;" yourdatabase
echo "Assigned mysql user user1 access on all hosts."

Sudo service mysql stop
Sudo service mysql start
17
Chukky Nze
augtool -s set '/files/etc/mysql/my.cnf/target[ . = "mysqld"]/bind-address 0.0.0.0'

Ubuntuパッケージは「augeas-tools」と呼ばれます

2
Peter Childs

Augeas を探しているようですね。

プロジェクトページはこちら および ドキュメント および はこちらです。 MySQLは ストックレンズページ に含まれていますが、残念ながらドキュメントは404ページにリンクしています。

Puppet内での使用例 もあります。

0
Ladadadada