PostgreSQL “改个字段就锁表”黑历史--DDL操作中的问题解决了吗?
AI 引入DBA 工作,造成工作量增加,忙不过来,根本忙不过来!!!
这不是最近上了AI要求对数据库有一些操作,PostgreSQL还好有严格的对列设置的权限,我们可以严格限制AI账号对数据库某些列的操作权限。不过这事情到了MySQL就是一个难点了。
其实这也并不是什么难点,只是很多使用MySQL的业务场景很少触及现在AI环境中对数据库的细致化的权限管理的问题。
我们做一下如下的练习假设我们有一个核心表,在使用了AI 对表中的数据进行操作,一些核心的字段我们不能让他获取数据,在AI修改的数据中,只能有一部分字段,同时删除数据也是一样,只能是设定的字段的数据可以删除,更新数据也是同样的原理。
首先我们创建一个表,包含了一些公司的核心信息。
CREATE TABLE employee( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), department VARCHAR(50), salary DECIMAL(10,2), phone VARCHAR(20), email VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

然后我们灌入数据
INSERT INTO employee (name,department,salary,phone,email) VALUES ('Tom','DBA',20000,'13800000001','tom@test.com'), ('Jerry','DEV',18000,'13800000002','jerry@test.com'), ('Lucy','OPS',15000,'13800000003','lucy@test.com');
下面我们创建AI AGENT要操作的账号,后续AI agent操作都是要通过这个账号进行对数据库的操作,不会给任何其他的账号,主要防止
CREATE USER 'column_user'@'%' IDENTIFIED BY 'Test@123456';
AI 乱删数据
AI 插入错误位置数据
AI 删库,删表,删字段
AI 乱更新数据位置
等等对AI可能的误操作进行各种的防护。
1 只允许查看表中的三个字段,不许可看员工的工资,电话,和邮箱。
GRANT SELECT(id,name,department) ON employee TO 'column_user'@'%';
以上操作完毕后,

2 插入数据限制
mysql> GRANT INSERT(name,department,phone) ON employee TO 'column_user'@'%';
Query OK, 0 rows affected (0.01 sec)

3 针对更新数据
mysql>
mysql> GRANT UPDATE(phone,email) ON security_test.employee TO 'column_user'@'%';
ERROR 1049 (42000): Unknown database 'security_test'
mysql>
mysql> GRANT UPDATE(phone,email) ON employee TO 'column_user'@'%';
Query OK, 0 rows affected (0.00 sec)

4 删除这里注意MYSQL不支持delete 列控制,(他当然支持不了))所以......,删除的权限这里无法赋予。
这里我们列举出2种方案
1 通过更新的方案设置标记位来标记,1为存在 2 为删除 的方式来进行逻辑删除
2 通过VIEW的方式集训条件的限制,实际上我们删除是想限制 where后面的条件,那么你就产生要给VIEW然后 条件只能从VIEW里面的列来控制,这样就可以控制删除的权限了。

在AI进入到数据库后,数据库的权限控制会越来越丰富复杂,这块数据库的还应该与时俱进,可以更细粒度的控制权限。

本文分享自 AustinDatabases 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!