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

如何在单条SQL语句中批量给指定表授予增删改查权限

批量给指定数据库表授予增删改查权限的方法

方法1:手动批量生成授权语句(适合表数量少的场景)

如果只有20张表,直接用文本编辑器快速生成所有授权语句最省事:

  • 把20张表的名称按每行一个列出来
  • 用编辑器的「查找替换」功能(开启正则匹配),把每行表名套进授权模板:
    • 查找内容:^(.*)$
    • 替换内容:Grant insert, update, delete, select ON \$1` TO All_roles;`
  • 把生成好的所有语句复制到数据库客户端执行即可

方法2:利用数据库系统表生成动态SQL(适合可复用场景)

不同数据库可以通过查询系统表自动拼接授权语句,以下是常见数据库的示例:

MySQL/MariaDB

执行以下SQL查询,会返回所有指定表的授权语句,复制结果执行即可:

SELECT CONCAT(
    'Grant insert, update, delete, select ON `', 
    table_name, 
    '` TO All_roles;'
) AS grant_statement
FROM information_schema.tables
WHERE table_schema = '你的数据库名称' -- 替换为实际库名
AND table_name IN ('表1', '表2', ..., '表20'); -- 替换为你的20张表名

PostgreSQL

执行以下SQL生成授权语句,复制结果执行:

SELECT 'GRANT INSERT, UPDATE, DELETE, SELECT ON ' 
       || quote_ident(table_name) 
       || ' TO All_roles;' AS grant_statement
FROM information_schema.tables
WHERE table_schema = 'public' -- 替换为实际schema名,默认是public
AND table_name IN ('表1', '表2', ..., '表20');

如果想直接执行生成的语句,可使用DO块自动循环执行:

DO $$
DECLARE
    rec RECORD;
BEGIN
    FOR rec IN (
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'public'
        AND table_name IN ('表1', '表2', ..., '表20')
    ) LOOP
        EXECUTE 'GRANT INSERT, UPDATE, DELETE, SELECT ON ' || quote_ident(rec.table_name) || ' TO All_roles;';
    END LOOP;
END $$;

方法3:用脚本批量执行(适合自动化场景)

如果需要频繁做这类操作,可以写简单脚本循环执行授权语句,以MySQL的shell脚本为例:

#!/bin/bash
DB_NAME="你的数据库名"
TABLES=("表1" "表2" ... "表20") # 填入你的20张表名
DB_USER="你的数据库用户名"
DB_PASS="你的数据库密码"

for TABLE in "${TABLES[@]}"
do
    mysql -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "Grant insert, update, delete, select ON \`$TABLE\` TO All_roles;"
done

注意事项

  • 执行授权语句的账号需要拥有GRANT OPTION权限,否则会报错
  • 如果表名包含特殊字符(比如空格、关键字),一定要用反引号(MySQL)或quote_ident(PostgreSQL)包裹,避免语法错误
  • 批量执行前建议先单独测试一条授权语句,确认权限授予正常后再推进

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:50:27