MySQL数据库用户:需要哪些权限?

时间:2011-01-06 作者:hakre

WordPress的简短安装说明("5 Minutes") 声明:

在web服务器上为WordPress创建一个数据库,并创建一个MySQL用户,该用户拥有访问和修改该数据库的所有权限。

在专业设置新博客时,我想知道这与MySQL数据库用户特权/权限配置提供给我的内容是如何对应的:

  • Data: SELECT, INSERT, UPDATE, DELETE
  • Definition: CREATE, ALTER, DROP
  • Extra: INDEX
  • More:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINEMore 进入通常我会说,这些都是不必要的,但我想得到第二个意见。

5 个回复
最合适的回答,由SO网友:Denis de Bernardy 整理而成

正如你所指出的,其他人是不需要的。

顺便说一句,您可以根据请求的页面有条件地设置用户/通行证。与正常使用的select/insert/update/delete无特权一样,在访问升级页面时,还具有定义/索引相关内容的特权。

SO网友:EAMann

“所有权限”通常意味着您应该将所有内容都授予用户。然而

我至少找到了one article 这表明MySQL用户只需要:

选择插入更新Digging deeper, 我发现为了全面操作(自动更新、插件安装/卸载等),WordPress需要一些额外的权限:

删除(用于更新)更改(用于更新)创建表也可以删除表,但没有引用,但有意义:

但这是我能找到的唯一两个可靠的参考文献,它们得到了其他地方发表的观点的支持。我仍然鼓励您坚持使用GRANT ALL,但如果您绝对必须限制DB的使用,请从以下7个特权开始test fully 确保事情按预期进行。

SO网友:redburn

以下是Codex对限制数据库用户权限的意见:

对于正常的WordPress操作,如发布博客帖子、上传媒体文件、发布评论、创建新WordPress用户和安装WordPress插件,MySQL数据库用户只需要对MySQL数据库具有数据读写权限;选择、插入、更新和删除。

因此,可以吊销任何其他数据库结构和管理权限,如DROP、ALTER和GRANT。通过取消此类特权,您也在改进遏制策略。

注意:某些插件、主题和主要WordPress更新可能需要进行数据库结构更改,例如添加新表或更改模式。在这种情况下,在安装插件或更新软件之前,暂时允许数据库用户拥有所需的权限。

http://codex.wordpress.org/Hardening_WordPress

SO网友:Jerry9

关于redburn帖子中的“注意事项”,Wordpress Codex也有一条警告,您还应该阅读有关更新和数据库架构更改的信息。。。

(编辑:我注意到I DO NOT SEE "GRANT" 在创建或更新用户时,不再显示在权限列表中。可能"CREATE" 是否应添加到列表中?有人知道这方面的信息吗?--使用Hostgator cPanel,2016年3月--)

WARNING:
在没有这些权限的情况下尝试更新[SELECT, INSERT, UPDATE, DELETE, DROP, ALTER, and GRANT] 发生数据库架构更改时可能会导致问题。因此,不建议撤消这些权限。如果您确实觉得出于安全原因有必要这样做,那么请确保您首先有一个可靠的备份计划,您测试过的常规整个数据库备份是有效的,并且可以轻松恢复。数据库升级失败通常可以通过将数据库恢复到旧版本,授予适当的权限,然后让WordPress再次尝试数据库更新来解决。还原数据库将使其返回到旧版本,WordPress管理屏幕将检测到旧版本,并允许您在其上运行必要的SQL命令。大多数WordPress升级不会更改架构,但有些会更改。只有重点升级(例如3.7到3.8)才会改变模式。一般情况下,小型升级(3.8至3.8.1)不会。不过,要定期备份。

法典:http://codex.wordpress.org/Hardening_WordPress

SO网友:Steven Lin

我的观点与上面的@EAMann以及他引用的来源是一样的:为了确保你的网站是功能性的和经得起未来考验的,授予一切是必要的。即使在生产现场,也应尽量遵守用户手册。

作为向WordPress core和一些插件提供代码的人,我建议您保留用户手册中建议的默认DB权限(将wpdatabasename。*上的所有权限授予“wordpressusername”@“hostname”)。

WordPress源代码(当前和将来)假定WordPress DB用户拥有给定WordPress数据库的所有DB权限。如果安装程序缺少任何DB权限,则在升级WordPress和添加更多插件时可能会遇到问题。

因此,您确实不应该使用与手册推荐的默认DB权限不同的DB权限,除非您知道自己在做什么,有非常具体的需求,并且不会忘记您拥有自定义DB权限。

此后,Codex页面更新了如何使用各种系统上的示例和屏幕截图来实现这一点。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

结束

相关推荐

为什么WordPress从MySQL获得的帖子来自虚拟主机名,而不是直接主机名?

我正在Mac上开发一个WordPress网站,运行OS X 10.6.4。在开发过程中,我使用OS X的内置Apache服务器在本地运行该站点。我已经安装了WordPress,并将其连接到OS X的MySQL,没有问题。该网站似乎运行良好,我可以发布、编辑等。WordPress安装在一个名为~/Sites/mysite.dev.我还定制了.hosts 文件和Apachehttpd-vhosts.conf 文件,以重定向对mysite的请求。请转到这个文件夹。所以当我进去的时候http://mysite.d