【问题标题】:Grant privileges on selected tables授予选定表的权限
【发布时间】:2015-09-08 12:41:06
【问题描述】:
我有一个包含大约 100 个表的 MySQL 5.x 数据库。我想在某些表上授予仅 SELECT 权限:
show tables from my_db like '%some_pattern%'; # select only tables
...和SELECT、INSERT、UPDATE、DELETE 在其余的桌子上。
我该怎么做?
【问题讨论】:
标签:
mysql
privileges
sql-grant
【解决方案1】:
试试
SELECT CONCAT('GRANT SELECT ON schemaName.', TABLE_NAME, ' to ''username'';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'schemaName'
AND TABLE_NAME LIKE '%some_pattern%'
和
SELECT CONCAT('GRANT SELECT, INSERT, UPDATE, DELETE ON schemaName.', TABLE_NAME, ' to ''username'';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'schemaName'
AND TABLE_NAME NOT LIKE '%some_pattern%'
然后运行上面的语句,复制生成的sql并运行生成的权限授予权限
【解决方案2】:
不可能通过单个查询向多个表授予权限。您需要对每个表进行查询。您可以尝试使用Adminer 或phpMyAdmin 等管理工具。