私のサーバーには、ローカルホストIPに接続されている各データベースを使用して6つの異なるサイトが設定されています。 rootで設定した3人のユーザーは1つの関連データベースにのみアクセスできますが、show Databasesコマンドがすべてのデータベースを表示した場合は、残りの3人だけがアクセスできます。どうやってこれが起こったのかわかりません。
各ユーザーが自分のデータベースにのみアクセスできるようにするにはどうすればよいですか?別の方法で設定する必要がありますが、方法は覚えていません。
これはdrupalマルチサイトであり、最終的にはrootを使用しているすべてのデータベースにアクセスするために1人のユーザーとパスワードしか持たないようにします。ただし、drupal設定の場合は、別々のデータベースを作成する前に、各データベースの設定ユーザーとパスワードが必要です。他のすべてのデータベースに影響を与える1つのデータベースを変更しています。したがって、プレフィックスを指定する方法を学ぶまで、別々に保持しようとします。それはそんなに重要なのか?最良の方法は何ですか?わかりません。
答え1
特別な慣行はなく、どちらも環境と安全上の考慮事項によって異なります。 Drupalマルチサイト構成では、同じコードベースで実行されているすべてのサイトの管理者が同じ人物ではないか、相互信頼性の高い小規模なグループである状況が発生します。その理由は、Drupalサイトに対する完全な管理権限を持つ人は誰でもさまざまな手段を介して(サイトへのFTPアクセスなしで)サイトで任意のPHPコードを実行することができ、サイトの任意のPHPコードを使用して両方のサイトがある場合は、他のサイトに影響を与える可能性があるためです。同じHTTPドキュメントルートにあり、同じDrupalコードを共有します。
mysqlで次のコマンドを使用してmysqlユーザーを作成できます。
mysql> CREATE USER 'www1'@'localhost' IDENTIFIED BY 'password123';
これにより、www1ユーザーがsite1データベースにアクセスできるようになります。
mysql> GRANT ALL PRIVILEGES ON site1_database.* To 'www1'@'localhost' IDENTIFIED BY 'password123';
Webサーバーでは、settings.php
各サイトのmysqlサーバーアドレス、データベース名、ユーザー名、およびパスワードを構成できます。