作者 Fander ​芬达的数据库学习笔记​ 2022-09-16 08:00 发表于广东

背景

朋友业务上有一个需求:

业务库 fanderdb 上有 10 张表,表名有规律,叫 fander_tb1、fander_tb2、fander_tb3... fander_tb10。他需要实现这些已存在的表对用户 fander@'192.168.199.%' 只读,并且允许此用户在库上新建其他表,能对新建表增删改查。


如何实施

这个需求看起来容易实施

# 1. 授权已存在的表
grant select on `fanderdb`.`fander\_tb%` to fander@'192.168.199.%';

# 2. 授权新建的表
grant select,insert,update,delete,create on `fanderdb`.`new\_%` to fander@'192.168.199.%'

这里涉及两个细节

【转载】mysql通配符授权的坑 _MySQL


【转载】mysql通配符授权的坑 _MySQL_02

【转载】mysql通配符授权的坑 _MySQL_03

【转载】mysql通配符授权的坑 _MySQL_04


【转载】mysql通配符授权的坑 _grant授权_05


【转载】mysql通配符授权的坑 _MySQL_06


【转载】mysql通配符授权的坑 _MySQL_07


需求满足不了,寻找替代方案

需求满足不了,那么我们就调整需求吧。。

我们再重新看一下需求

【转载】mysql通配符授权的坑 _MySQL_08

【转载】mysql通配符授权的坑 _MySQL_09

参考:

​https://dev.mysql.com/doc/refman/8.0/en/grant.html​