从安全角度来看,MySQL 根用户的一般规则是:
“不要使用 root 身份对任何 Web 应用程序进行 MySQL 连接、选择、更新或删除查询。而是创建并使用具有最小权限的另一个 MySQL 用户。”
好的。此类用户需要哪些最低权限?如何在 MySQL 中创建并分配最低权限?我还没有找到有关此问题的任何指南/文章。
感谢您的帮助。
答案1
这个问题可能已经回答过几次了,但我们还是再回答一次。
以下是 cPanel 的实现方式,您可能需要遵循:
- 创建数据库 db1
- 创建本地主机用户并设置密码
- 将用户分配给数据库
- 为该用户分配该数据库所需的权限(cPanel 为数据库中的所有表全局分配权限,但您可以按表甚至按表列分配权限)
表/索引操作最常用的权限是 ALTER CREATE DROP 和 INDEX
最常用的数据操作是 DELETE INSERT SELECT UPDATE
以下是 MySQL 5.7 的更完整列表: https://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html
您可以使用 GRANT 命令分配权限,如下面针对 MySQL 5.7 的说明:http://dev.mysql.com/doc/refman/5.7/en/grant.html
在大多数情况下,你会授予本地主机上的用户访问权限,但你可以添加一些网络地址,甚至一些包含%的通配符地址
让我们授予用户 db1_user 对数据库 db1 的所有表的 SELECT 权限(仅读取数据),使用密码 mypass:
授予 db1.* 上的选择权限给 db1_user@localhost,标识为 'mypass';
您可以使用 mysql 实用程序以 root 或对该数据库对象具有 GRANT 权限的其他用户身份发出 SQL 语句。以 root 身份运行 mysql:
$ mysql -u 根 -p
答案2
您可以根据应用程序的需要授予权限。如果您的应用程序所需的只是SELECT
一张表,那么就应该授予用户所有权限。
对此没有“指南”,因为这完全取决于应用程序所有者对应用程序的实际要求的理解。