![为 Linux MySQL 创建具有最小权限的非 root 用户,因为使用 root 用户并不安全](https://linux22.com/image/680699/%E4%B8%BA%20Linux%20MySQL%20%E5%88%9B%E5%BB%BA%E5%85%B7%E6%9C%89%E6%9C%80%E5%B0%8F%E6%9D%83%E9%99%90%E7%9A%84%E9%9D%9E%20root%20%E7%94%A8%E6%88%B7%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BD%BF%E7%94%A8%20root%20%E7%94%A8%E6%88%B7%E5%B9%B6%E4%B8%8D%E5%AE%89%E5%85%A8.png)
从安全角度来看,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
一张表,那么就应该授予用户所有权限。
对此没有“指南”,因为这完全取决于应用程序所有者对应用程序的实际要求的理解。