シェルスクリプトからmy.cnfのmysql bind-addressを変更する最良の方法は何ですか? mysqladminのようなツールを使用する方法はありますか、またはsedを使用するか、単にmy.cnfに追加して、2番目のエントリが最初のエントリを上書きすることを望みますか(これは気の毒に聞こえます)。 mysql-serverのインストール後に実行され、vmの外部からの接続を許可するvagrantの単純なシェルプロビジョナーを作成しようとしています。
Sedがこのコンテキストで最も簡単な方法のようです(クリーンインストール後)。
Sudo sed -i "s/.*bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
@nonsenzの発言に加えて、puphpet.comのプロビジョニングスクリプトを使用する場合は、bashファイルを/ puphpet/files/startup-alwaysフォルダーに追加して、そこにすべてのコマンドを配置できます。 vagrantが起動またはリロードすると、スクリプトが呼び出されます。
#!/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
さらに良い(よりきれいな出力を可能にするため)
#!/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はアドインを実行します)
#!/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
augtool -s set '/files/etc/mysql/my.cnf/target[ . = "mysqld"]/bind-address 0.0.0.0'
Ubuntuパッケージは「augeas-tools」と呼ばれます
Augeas を探しているようですね。
プロジェクトページはこちら および ドキュメント および 例 はこちらです。 MySQLは ストックレンズページ に含まれていますが、残念ながらドキュメントは404ページにリンクしています。
Puppet内での使用例 もあります。