web-dev-qa-db-ja.com

MySQLデータベースユーザ:どの権限が必要ですか?

WordPressの短いインストール手順( "5 Minutes" )には、次のように記載されています。

あなたのWebサーバー上にWordPress用のデータベースを作成し、それにアクセスしてそれを変更するためのすべての特権を持つMySQLユーザーを作成します。

専門的に新しいブログを設定している間、私はそれがMySQLデータベースのユーザー特権/許可設定が私に提供するものにどのように対応するか疑問に思いました:

  • データ: SELECTname__、INSERTname__、UPDATEname__、DELETEname__
  • 定義: CREATEname__、ALTERname__、DROPname__
  • 追加: INDEXname__
  • More:
    1. LOCK TABLES
    2. REFERENCESname__
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTEname__
    8. ALTER ROUTINE

私は最初の3つのグループについては確かに確信しています、ここでそれらをData、Definition、およびExtraと名付けました。しかし、 More エントリの下にある他の人はどうでしょうか。通常、私は言う、それらは必要ではありませんが、私はセカンドオピニオンを得たいと思います。

51
hakre

あなたが指摘するように他の人は必要ではありません。

ところで、あなたができることは、要求されたページに基づいて条件付きでユーザー/パスを設定することです。アップグレードページにアクセスするときに、通常の使用のためにselect/insert/update/deleteを使用して特権を持たず、さらに定義/インデックス関連のものを特権で与えます。

13

「すべての特権」とは通常、すべてをユーザーに引き継ぐことを意味します。しかしながら ...

私は少なくとも 一つの記事 を見つけました - それはMySQLユーザーだけが必要と主張しています:

  • SELECT
  • インサート
  • 更新

より深く掘り下げる 、完全に機能する(自動アップデート、プラグインのインストール/アンインストールなど)には、WordPressに追加の権限が必要であることがわかりました。

  • DELETE
  • ALTER(アップデート用)
  • CREATE TABLE
  • ドロップテーブル

また、参照されていませんが意味があります。

  • インデックス

しかし、これらは私が見つけることができる唯一の2つの堅実な参照であり、それは他の場所に投稿された意見によって裏付けられています。それでもGRANT ALLに固執することをお勧めしますが、DBの使用を絶対にmustに制限する場合は、これらの7つの特権から始めて test fully にしてください。

33
EAMann

これが、Codexがデータベースユーザー特権を制限することについて言っていることです:

ブログ投稿の投稿、メディアファイルのアップロード、コメントの投稿、新しいWordPressユーザーの作成、WordPressプラグインのインストールなどの通常のWordPress操作では、MySQLデータベースユーザーはMySQLデータベースへのデータ読み取りおよびデータ書き込み権限のみが必要です。 SELECT、INSERT、UPDATE、およびDELETE。

そのため、DROP、ALTER、GRANTなど、他のデータベース構造と管理権限を取り消すことができます。そのような特権を取り消すことで、封じ込めポリシーも改善されます。

注:プラグイン、テーマ、および主要なWordPressのアップデートによっては、新しいテーブルの追加やスキーマの変更など、データベースの構造上の変更が必要になる場合があります。このような場合は、プラグインをインストールしたりソフトウェアを更新したりする前に、データベースユーザーに必要な権限を一時的に許可してください。

http://codex.wordpress.org/Hardening_WordPress

12
redburn

Redburnの投稿の「注意」に関しては、Wordpress Codexにもアップデートやデータベーススキーマの変更について読むべき警告があります。

(編集:しかし、 気付かないでください "GRANT"ユーザーを作成または更新するときに、もう特権のリストに含まれていません。おそらく"CREATE"をリストに追加しますか?だれでもこれに関する情報を持っていますか? - Hostgator cPanelの使用、2016年3月 - )

警告:
これらの権限[ SELECT、INSERT、UPDATE、DELETE、DROP、ALTER、およびGRANT ]を持たないで更新を試みると、データベーススキーマの変更が発生したときに問題が発生する可能性があります。したがって、これらの権限を取り消すことはお勧めできません。セキュリティ上の理由からこれを実行する必要があると感じる場合は、最初にしっかりとしたバックアップ計画を立て、テスト済みの定期的なデータベース全体のバックアップが有効であり、簡単に復元できることを確認してください。データベースのアップグレードが失敗した場合は、通常、データベースを古いバージョンに復元し、適切な権限を付与してから、WordPressにデータベースの更新を再試行させることで解決できます。データベースを復元すると、古いバージョンに戻り、WordPress管理画面で古いバージョンが検出され、必要なSQLコマンドを実行することができます。ほとんどのWordPressのアップグレードはスキーマを変更しませんが、いくつかは変更します。スキーマを変更するのは、メジャーポイントアップグレード(例えば3.7から3.8)だけです。マイナーアップグレード(3.8から3.8.1)は一般的には行われません。それでも、定期的なバックアップを取ってください。

コーデックス: http://codex.wordpress.org/Hardening_WordPress

2
Jerry9

私の意見は、上の@EAMann、および彼が言及した情報源と同じです。あなたのサイトが機能的で将来的に証明されるためにはGRANT ALLが必要です。生産現場でも、あなたはユーザーマニュアルにこだわることを試みなければなりません。

WordPressコアといくつかのプラグインにコードを提供する誰かとして、私はあなたがユーザーマニュアルで提案されているようにデフォルトのDB特権を保持することをお勧めします。

WordPressのソースコード(現在と将来の両方)は、WordPress DBユーザーが与えられたWordPressデータベースに対するすべてのDB特権を持っていると仮定しています。あなたの設定がDB特権を見逃した場合、WordPressをアップグレードしてプラグインを追加するときに問題に遭遇するかもしれません。

ですから、自分がしていることを知っていて、非常に特別なニーズがあり、カスタムDB権限を持っていることを忘れない限り、マニュアルで推奨されているデフォルトのDB権限とは異なるDB権限を使用しないでください。

コーデックスページはそれ以来様々なシステムとスクリーンショットの例でこれを行う方法について更新されました。 https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User

Databseの名前とユーザーを作成する(PHPMyAdmin経由): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin

(MySQLコマンドラインクライアントを介して)Databseの名前とユーザーを作成する: https://codex.wordpress.org/Installing_WordPress#Using_the_MySQL_Client

mysql> CREATE DATABASE wpdatabasename;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
0
Steven Lin