我有许多mariaDB
个具有相同前缀的数据库。如
apple1
apple2
apple3
....
apple5000
apple5001
banana1
banana2
...
banana100
我希望创建新用户USER
谁可以SELECT
个数据库具有apple
前缀。
因此,我使用下面的多个命令将SELECT
授予新用户USER
。
GRANT SELECT ON `apple1` TO 'USER'@'%';
GRANT SELECT ON `apple2` TO 'USER'@'%';
GRANT SELECT ON `apple3` TO 'USER'@'%';
...
GRANT SELECT ON `apple5001` TO 'USER'@'%';
是否有任何解决方案授予多个数据库使用%
语句的通配符(LIKE
)之类的命令指定前缀?
答案 0 :(得分:2)
GRANT SELECT ON `apple%`.* TO 'USER'@'192.168.0.227';
答案 1 :(得分:0)
真正的问题是拥有数千个数据库。有这么多人,你可能会减慢速度。 (这是一个操作系统问题,因为MySQL通过目录实例化每个数据库。)
编写存储过程以查询information_schema
以发现所有数据库(使用LIKE
)并生成(使用SELECT ... CONCAT
)所需的GRANT
语句。然后手动将该输出复制到mysql命令行工具中以执行它们。
答案 2 :(得分:0)
当这出现在谷歌搜索中时,我最终做了一个for循环并将其管道传送到mysql中:
for i in var1 var2 var3 ; do echo "grant all on db_$i.* to user@host;" | mysql ; done
如果使用数字,则for i in 1..1000
如果您在mycnf文件中没有登录详细信息,并且必须登录到mysql mysql -u user -password <Password>
上面的唯一问题是您的密码在命令历史记录中。
希望这可以帮助任何寻求解决方案的人。