今天遇到一个需求,开发环境中使用的是数据库连接工具连接MySQL数据库,平时无论是项目中的配置文件连接数据库还是使用Navicat连接工具连接数据库一般都是使用root来连接的。root虽然有最高权限,但是一旦出现误操作,比如删除,数据是无法恢复的。所以需要 设置一下表中的数据不能被删除。
我的需求:
1,连接上数据库后不能手动删除数据
2,手动不能删除,但是需要在代码中可以进行删除。
找到了两种方式的解决办法
一,设置用户权限
MySQL最高的权限是在安装的时候设置的root用户,这个权限无法更改,所以可以创建一个新的用户,单独给这个用户设置需要的权限
root用户用于代码程序连接数据库
read_update用户用于连接工具连接数据库
创建手动操作用户,并授予插入和查询权限
CREATE USER 'readonly_user'@'%' IDENTIFIED BY '123456';
GRANT SELECT ON crtdata.* TO 'readonly_user'@'%';
GRANT SHOW DATABASES ON *.* TO 'readonly_user'@'%';
FLUSH PRIVILEGES;