パスワードなしでMySQLデータベースとユーザーを作成する

パスワードなしでMySQLデータベースとユーザーを作成する

私は、基本的にクラウド サーバー上で Apache 仮想ホスト、Git リポジトリ、その他のものを準備する一連の bash スクリプトを作成しています。これまでのところ順調で、すべて動作していますが、大きな問題が発生しました。MySQLデータベースとユーザーの作成

現在のスクリプトは、クラウド サーバーへの認証にキー付きの ssh を使用しており、チームの全員がコマンドを実行できます。この状態を維持し、root または高い権限を持つ他のユーザーとして MySQL にログインしなくても、新しい MySQL データベースとユーザーを作成できるようにしたいのですが、これに対する解決策がありません。

アイデア #1パスワードなしで新しい mysql ユーザーを作成し、完全な権限 (root など) を付与しますが、使用できるのは のみです@'localhost'

アイデア #2この MySQL 制御ユーザーのパスワードをファイルに保存し、他のスクリプトが使用する現在の ssh ユーザーのみがアクセスできるようにします。次に、mysql ログインは、この保存されたパスワードを使用してログインし、データベースとユーザーを作成します。

どちらの選択肢がより良いのか分かりませんし、危険であることも分かっています。ご意見やより良いアイデアがあればお聞かせください。

答え1

チームが使用する Unix ユーザーと MySQL ユーザーに、必要な操作を実行できるようにしながら、可能な限り最小限のアクセス権限を与えたいと考えています。どちらのアイデアも、必要以上のアクセス権限を与えているようです。チームの MySQL ユーザーには、次の操作を実行したほうがよいでしょう。

  1. CREATE アクセスのみ、または必要なアクセスのみを許可します (チームが実行できる操作を最小限に制限します)。GRANT ステートメントを使用して、mysql ユーザーにアクセス権を付与します。
  2. 所有者の読み取りアクセスのみを持つファイルにユーザー名/パスワードを保存します~/my.cnf(チームを制限しなくなりますが、他のユーザーがスクリプトを見た場合にログイン情報が見えなくなります)。

上記は簡単に実行でき、大きな改善となります。

より良いアイデアですが、作業は増えます。それは、チーム ユーザーにデータベース作成のアクセスを許可せず、サイト設定のリクエストをキューに入れることです。キューは、自分だけが制御する (必要なアクセス権のみを持つ) 別のユーザー スクリプトによって定期的に処理され、サイトが設定されます。キューは、各行がリクエストであるファイル、各ファイルがリクエストであるディレクトリ、または各レコードがリクエストであるデータベース テーブルにすることができます。これは、システムをどの程度保護したいかによって異なります。

一般的に、root ほどのアクセス権を持たない UNIX および MySQL ユーザーを使用する必要があります。私は、データベースの作成と削除、および定期的に使用する操作のみを実行できる、作業用の MySQL ユーザーを自分用に作成します。別のユーザーを設定してアクセス権を付与する必要がある場合のみ、root または同様の権限を持つユーザーを使用します。スクリプトでは、問題が発生した場合の損害を最小限に抑えるために、ユーザーを可能な限り制限します。

関連情報