公司的mysql权限管理还算是比较的严格,每个数据库只有与之对应的用户有读写权限,而我在本地启动项目的时候,每次都要修改配置文件中的数据库连接,用户名,密码.
太麻烦了.
因此我将线上mysql的host映射到127.0.0.1,给本地的mysql添加所有的用户,这样我就可以不用修改配置文件啦!(建议大家也进行权限管理,每个数据库单独账号读写).
但是我没有,我直接执行了
grant all privileges on *.* to username@'%' identified by 'password';
将所有数据库的所有表的所有权限赋给了某用户.
修改完之后决定学习一下mysql的权限管理,记录一下方便后续查找.
当然是为了安全,防止删库跑路
这样的事情,或者程序员的手抖
.
权限管理时应该遵循以下原则:
这里引用官网上的一个表格来说明:
权限分布 | 具体权限 |
---|---|
表权限 | ‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’ |
列权限 | ‘Select’, ‘Insert’, ‘Update’, ‘References’ |
过程权限 | ‘Execute’, ‘Alter Routine’, ‘Grant’ |
据我所知有两种方式:
grant命令就是前言中我使用的那种方式.
前言中该语句的详细解释如下:
grant all privileges on *.* to username@'%' identified by 'password';
2.1 查看当前用户的权限
show grants;
2.2 查看某一个用户的权限
show grants for 'root'@'localhost';
revoke select on *.* from test@'%';
SET PASSWORD FOR 'test'@'%' = PASSWORD('123456');
flush privileges;
在命令行连接上mysql之后,显示所有的数据库,连接mysql数据库,查看其中的user表,然后查看user表的字段类型.
可以看到其中的字段代表的意义以及可取值.
对此数据表的操作将可以直接影响到用户的权限,具体操作方式与操作其他数据表并无区别,只需查看一下字段对应的意义即可,这里不再赘述.
数据库操作还是小心为妙啊,能用select权限就别用drop权限,否则不知道什么时候会手抖.
完。
2018-11-22 完
以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
联系邮箱:huyanshi2580@gmail.com
更多学习笔记见个人博客——>呼延十
var gitment = new Gitment({ id: 'Mysql权限管理', // 可选。默认为 location.href owner: 'hublanker', repo: 'blog', oauth: { client_id: '2297651c181f632a31db', client_secret: 'a62f60d8da404586acc965a2ba6a6da9f053703b', }, }) gitment.render('container')