You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

面向公网的MySQL/MariaDB应用能否授予ALL PRIVILEGES?安全问询

MySQL权限配置与CREATE USER权限说明

一、公网第三方应用的安全权限集

当无法确定第三方应用所需权限时,绝对不要使用ALL PRIVILEGES,因为这会赋予类似root的超级权限,对公网应用来说风险极高。

最宽泛且安全的权限集,应当限定在目标数据库范围内,包含应用常见的操作权限,示例SQL如下:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX, CREATE TEMPORARY TABLES, LOCK TABLES ON myapp.* TO 'myapp'@'%' IDENTIFIED BY 'your_strong_password';
  • 这些权限覆盖了数据读写(SELECT/INSERT/UPDATE/DELETE)、表结构变更(CREATE/ALTER/DROP)、索引管理(INDEX)、临时表创建(CREATE TEMPORARY TABLES)以及表锁定(LOCK TABLES),基本能满足绝大多数应用的需求。
  • 限定在myapp.*目标数据库,避免权限扩散到其他库;同时去掉WITH GRANT OPTION,防止该用户转授权限给其他账户,进一步降低风险。

二、CREATE USER权限的作用与权限限制

CREATE USER权限仅允许你创建新的MySQL用户账户,但无法让你绕过自身权限限制创建访问其他数据库的用户:

要给新用户授予某数据库的访问权限,你自身必须拥有该数据库的对应权限,并且(如果要转授权限)带有GRANT OPTION。

举个例子:如果你只能访问数据库A,即使拥有CREATE USER权限,你也无法执行GRANT ALL ON B.* TO 'new_user'@'%'这样的语句——因为你本身没有数据库B的任何权限,MySQL会直接拒绝该操作。

内容的提问来源于stack exchange,提问作者samvv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 02:42:07