MySQLデータベースユーザー:どの権限が必要ですか?
5 回答
- 投票
-
- 2011-01-06
ご指摘のとおり、他のものは必要ありません.
ところで、あなたができることは、要求されたページに基づいて条件付きでユーザー/パスを設定することです.通常の使用ではselect/insert/update/deleteで特権がなく、アップグレードページにアクセスするとさらに定義/インデックス関連のもので特権が与えられます.
The others are not needed as you point out.
Btw, what you could do is, conditionally set the user/pass based on the requested page. As in unprivileged with select/insert/update/delete for normal usage, and privileged with definition/index related stuff in addition when visiting the upgrade page.
-
WordPress環境で*要求されたページに基づいて*条件付きでユーザー/パスを設定する*方法についての参照はありますか?TAIs there any reference on how to *conditionally set the user/pass based on the requested page* in a WordPress environment? TA
- 1
- 2014-01-24
- superjos
-
@superjos:頭のてっぺんから気づいているわけではありませんが、その要点は、wp-configで通常のDBユーザーの選択/挿入/更新/削除を定義し、URLが関連する/と一致する場合です.wp-adminページ(アップグレード、テーマのアクティブ化、プラグインのアクティブ化など).他のすべてを実行できる代替ユーザーを定義します.@superjos: Not that I'm aware of off the top of my head, but the gist of it would be to define the normal DB user select/insert/update/delete in wp-config and, when the url matches the relevant /wp-admin pages (likely upgrade, activate theme and activate plugin), to define an alternative user that can do everything else.
- 0
- 2014-01-24
- Denis de Bernardy
-
- 2011-01-06
「すべての権限」とは、通常、すべてをユーザーに付与する必要があることを意味します.ただし...
MySQLを主張する少なくとも
1つの記事を見つけましたユーザーに必要なもの: - SELECT
- 挿入
- 更新
さらに深く掘り下げると、完全に動作するために(自動更新、プラグインのインストール/アンインストールなど)、WordPressにはいくつかの追加の権限が必要です:
- 削除
- ALTER(更新用)
- テーブルの作成
- ドロップテーブル
また、参照されていませんが、意味があります:
- インデックス
しかし、他の場所に投稿された意見によって裏付けられている、私が見つけることができる2つの確かな参考文献はこれらだけです.それでもGRANTALLを使用することをお勧めしますが、DBの使用を絶対に 制限する必要がある場合は、これらの7つの権限から始めて、完全にテストして、次のように機能することを確認してください.期待されます.
"All privileges" usually means you should grand everything to the user. However ...
I've found at least one article that claims the MySQL user only needs:
- SELECT
- INSERT
- UPDATE
Digging deeper, I found that in order to operate fully (automated updates, plug-in installation/uninstallation, etc.), WordPress requires some additional permissions:
- DELETE
- ALTER (for updates)
- CREATE TABLE
- DROP TABLE
Also, not referenced but it makes sense:
- INDEX
But those are the only two solid references I can find that are backed up by opinions posted elsewhere. I'd still encourage you to stick with GRANT ALL, but if you absolutely must limit your DB use, start with these 7 privileges and test fully to make sure things work as expected.
-
あなたの考えを共有してくれてありがとう.インストールされたそのサイトについては、これは開発サイトではなく、代わりにすべてを含むすべてに固執するため、私はすべてを付与しませんでした.インデックス.これまでのところ良さそうです、私はそれを次の日にわたって追跡し続けると思います、それは含む実際のサイトです.プラグインの使用などが多い.INDEXについては、コアとmysqlのマニュアルも少し検索するかもしれません.Thanks for sharing your thoughts. For that site installed I did not GRANT ALL as this is not a development site and instead stick to all incl. INDEX. Looks good so far, I think I keep it tracked over the next days, it's a real life site incl. a lot of plugin use and the like. For INDEX I might search core and the mysql manual a bit as well.
- 0
- 2011-01-06
- hakre
-
サードパーティのプラグインは、必要なほぼすべてのSQLステートメントを呼び出すことができることを覚えておいてください...したがって、失効した特権に応じてインストールする前に、プラグインを適切に精査してください.Just remember that 3rd party plug-ins can call just about any SQL statement they want ... so make sure you properly vet them before installing things dependent on privileges you've revoked.
- 1
- 2011-01-06
- EAMann
-
- 2014-01-12
データベースのユーザー権限を制限することについて、Codexは次のように述べています.
ブログ投稿の投稿、メディアファイルのアップロード、コメントの投稿、新しいWordPressユーザーの作成、WordPressプラグインのインストールなど、通常のWordPress操作の場合、MySQLデータベースユーザーはMySQLデータベースへのデータ読み取りおよびデータ書き込み権限のみを必要とします. SELECT、INSERT、UPDATE、およびDELETE.
したがって、DROP、ALTER、GRANTなど、その他のデータベース構造と管理権限は取り消すことができます.このような特権を取り消すことで、封じ込めポリシーも改善されます.
注:一部のプラグイン、テーマ、および主要なWordPressの更新では、新しいテーブルの追加やスキーマの変更など、データベースの構造を変更する必要がある場合があります.このような場合、プラグインをインストールする前、またはソフトウェアを更新する前に、データベースユーザーに必要な権限を一時的に許可してください.
Here's what Codex has to say on restricting database user privileges:
For normal WordPress operations, such as posting blog posts, uploading media files, posting comments, creating new WordPress users and installing WordPress plugins, the MySQL database user only needs data read and data write privileges to the MySQL database; SELECT, INSERT, UPDATE and DELETE.
Therefore any other database structure and administration privileges, such as DROP, ALTER and GRANT can be revoked. By revoking such privileges you are also improving the containment policies.
Note: Some plugins, themes and major WordPress updates might require to make database structural changes, such as add new tables or change the schema. In such case, before installing the plugin or updating a software temporarily allow the database user the required privileges.
-
私は可能な限り最小特権の原則を実践しようとしています.(有用な)引用された情報は、リンクされたコーデックスの記事にはもうありませんので、ここにコピーしていただきありがとうございます.I try to practice the principle of Least Privilege when ever possible. The (useful) quoted information is no longer in the linked Codex article so thanks for copying it here.
- 2
- 2017-03-02
- Anthony Geoghegan
-
- 2016-03-30
redburnの投稿の「メモ」に関して、Wordpress Codexには、更新とデータベーススキーマの変更についても読む必要がある警告があります...
(編集:ただし、ユーザーを作成または更新するときに、権限のリストに表示されない 「許可」 が表示されなくなったことに気付きました.おそらく "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)は 一般的にはそうではありません.それでも、定期的なバックアップを維持してください.Regarding the "Note" in redburn's post, the Wordpress Codex also has a Warning you should also read about updates and database schema changes...
(Edit: I notice however that I DO NOT SEE "GRANT" in the list of privileges anymore when creating or updating a user. Perhaps "CREATE" should be added to the list? Does anyone have information regarding this? -- using Hostgator cPanel, March 2016 --)
WARNING:
Attempting updates without having these privileges [SELECT, INSERT, UPDATE, DELETE, DROP, ALTER, and GRANT] can cause problems when database schema changes occur. Thus, it is NOT recommended to revoke these privileges. If you do feel the need to do this for security reasons, then please make sure that you have a solid backup plan in place first, with regular whole database backups which you have tested are valid and that can be easily restored. A failed database upgrade can usually be solved by restoring the database back to an old version, granting the proper permissions, and then letting WordPress try the database update again. Restoring the database will return it back to that old version and the WordPress administration screens will then detect the old version and allow you to run the necessary SQL commands on it. Most WordPress upgrades do not change the schema, but some do. Only major point upgrades (3.7 to 3.8, for example) will alter the schema. Minor upgrades (3.8 to 3.8.1) will generally not. Nevertheless, keep a regular backup. -
- 2018-10-08
私の意見は、上記の@EAMannと、彼が参照した情報源と同じです.サイトが機能し、将来にわたって利用できるようにするには、GRANTALLが必要です.生産現場でも、ユーザーマニュアルに固執するようにしてください.
WordPressコアといくつかのプラグインにコードを提供する人として、ユーザーマニュアルで提案されているデフォルトのDB権限を保持することをお勧めします(wpdatabasename.* TO "wordpressusername" @ "hostname"にすべての権限を付与します).
WordPressソースコード(現在と将来の両方)は、WordPressDBユーザーが特定のWordPressデータベースに対するすべてのDB特権を持っていることを前提としています.セットアップでDB権限が不足していると、WordPressをアップグレードしてプラグインを追加するときに、問題が発生する可能性があります.
したがって、何をしているのかを理解し、非常に特殊なニーズがあり、カスタムDB特権を忘れない限り、マニュアルで推奨されているデフォルトのDB特権とは異なるDB特権を使用しないでください.
コーデックスページは、さまざまなシステムとスクリーンショットの例でこれを行う方法について更新されました. https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User
>データベースの名前とユーザーの作成(PHPMyAdmin経由): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin
データベースの名前とユーザーの作成(MySQLコマンドラインクライアント経由): 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
My opinion is the same as @EAMann above, as well as the sources he referenced: GRANT ALL is necessary in ensuring your site is functional and future proof. Even on a production site, you shall try stick to the user manual.
As someone who contributes code to WordPress core and a few plug-ins, I recommend you retain the default DB privileges as suggested in the user manual ( GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname" ).
The WordPress source code (both present and future) assumes the WordPress DB user has all DB privileges for the given WordPress database. If your setup miss any DB privileges, you may run into issues as you upgrade WordPress and add more plug-ins.
So you really shouldn't be using DB privileges different from the default DB privileges recommended by the manual, unless you know what you're doing, have very specific needs, and won't forget your have custom DB privileges.
The Codex page has since been updated on how to do this with examples on various systems and screenshots. https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User
Creating a Databse name and user (via PHPMyAdmin): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin
Creating a Databse name and user (via MySQL command line client): 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
WordPressの簡単なインストール手順( "5 Minutes" )には、次のように記載されています.
専門的に新しいブログを設定しているときに、MySQLデータベースのユーザー権限/権限構成が提供するものにどのようにマッピングされるのか疑問に思いました:
SELECT
、INSERT
、UPDATE
、DELETE
CREATE
、ALTER
、DROP
INDEX
LOCK TABLES
REFERENCES
CREATE TEMPORARY TABLES
CREATE VIEW
SHOW VIEW
CREATE ROUTINE
EXECUTE
ALTER ROUTINE
最初の3つのグループについてはかなり確信しています.ここでは、それらにData、Definition、Extraという名前を付けました.しかし、その他のエントリの下にある他のエントリはどうでしょうか.通常は必要ないと思いますが、セカンドオピニオンをお願いします.