web-dev-qa-db-ja.com

動的データベース資格情報を使用して済州でmysqlチャームを使用するための最良の方法は何ですか?

多くのDjango開発プロジェクトを網羅するJujuチャームを作成しています。Django、wsgi、Apache2をインストールするチャームがあります。Djangoは別のデータベース、ユーザーを使用します、および作成されたすべてのプロジェクトのパスワード。mysqlチャームにデータベース資格情報のセットが1つしかない場合、これらの資格情報をチャームに提供するにはどうすればよいですか?pythonインストールされているすべてのパスのパス= Djangoプロジェクトがあり、mysqlチャームを使用する準備ができています。以下に示すように、ユーザーはこれらを手動で設定し、新しい/異なる場合に変更する必要がありますDjangoプロジェクトはクラウドにデプロイされます。

user=`relation-get user`
password=`relation-get password`
Host=`relation-get Host`
database=`relation-get database`

私の質問:Djangoプロジェクトに相関する名前のmysqlチャームを自動作成するためにbashスクリプトを作成する必要がありますか?

3
surgemcgee

要求に応じてdbを動的に割り当てることができる新しいインターフェイスを使用して、新しいmysqlチャームを作成し、それをDjangoチャームから使用するか、プロジェクトを個別のサービスとしてデプロイできます。

事実上、mysqlの新しいインターフェイスでは、新しいサービスがmysqlに関連付けられている/接続されているときにフックを作成するのではなく、接続サービスの要求に応じてフックに新しいデータベースを割り当てます。

別の方法として、Djangoプロジェクトを修正して、テーブルプレフィックスを使用します。これは、すでに行っていると思います(または、プロジェクトのアプリテーブルプレフィックスです)。

編集

bestソリューションは、管理インターフェース関係を使用することである可能性があります。これにより、mysqlのrootユーザーが得られ、必要に応じて追加のデータベースを作成できます(ポイント)インストールされているすべてのDjangoプロジェクトについて、irc by clint)で私に連絡してください。

2

Mysqlチャームには複数のインターフェースがあり、そのうちの1つは、サーバー全体に対する管理者権限を持つようにアプリ用に特別に設計されています。だからあなたはただあなたの関係を作るでしょう

requires:
  db:
    interface: mysql-root

これにより、データベース/ユーザーなどの作成に使用できる特権を持つ「ルート」ユーザーが保証されます。任意のデータベースを作成できるため、「データベース」は取得されません。そのことに注意してください。

1
SpamapS