前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql权限管理

Mysql权限管理

作者头像
呼延十
发布2019-06-26 15:42:05
1.6K0
发布2019-06-26 15:42:05
举报
文章被收录于专栏:呼延呼延

前言

公司的mysql权限管理还算是比较的严格,每个数据库只有与之对应的用户有读写权限,而我在本地启动项目的时候,每次都要修改配置文件中的数据库连接,用户名,密码.

太麻烦了.

因此我将线上mysql的host映射到127.0.0.1,给本地的mysql添加所有的用户,这样我就可以不用修改配置文件啦!(建议大家也进行权限管理,每个数据库单独账号读写).

但是我没有,我直接执行了

代码语言:javascript
复制
grant all privileges on *.* to username@'%' identified by 'password';

将所有数据库的所有表的所有权限赋给了某用户.

修改完之后决定学习一下mysql的权限管理,记录一下方便后续查找.

为什么要进行权限管理

当然是为了安全,防止删库跑路这样的事情,或者程序员的手抖.

权限管理时应该遵循以下原则:

  1. 只授予能满足需要的最小权限.比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
  2. 创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。

mysql都有那些权限

这里引用官网上的一个表格来说明:

权限分布

具体权限

表权限

‘Select’, ‘Insert’, ‘Update’, ‘Delete’, ‘Create’, ‘Drop’, ‘Grant’, ‘References’, ‘Index’, ‘Alter’

列权限

‘Select’, ‘Insert’, ‘Update’, ‘References’

过程权限

‘Execute’, ‘Alter Routine’, ‘Grant’

如何进行权限管理

据我所知有两种方式:

  1. 使用grant命令.
  2. 操作mysql数据库中的user表.

grant命令

grant命令就是前言中我使用的那种方式.

1. 修改权限

前言中该语句的详细解释如下:

代码语言:javascript
复制
grant all privileges on *.* to username@'%' identified by 'password';
  1. ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限。
  2. ON 用来指定权限针对哪些库和表。
  3. *.* 中前面的号用来指定数据库名,后面的号用来指定表名。
  4. TO 表示将权限赋予某个用户。
  5. username@’%’ 表示username用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。
  6. IDENTIFIED BY 指定用户的登录密码。
  7. WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。
2. 查看权限

2.1 查看当前用户的权限

代码语言:javascript
复制
show grants;

2.2 查看某一个用户的权限

代码语言:javascript
复制
show grants for 'root'@'localhost';
3.回收权限
代码语言:javascript
复制
revoke select on *.* from test@'%';
4.修改用户密码
代码语言:javascript
复制
SET PASSWORD FOR 'test'@'%' = PASSWORD('123456');
5.修改后刷新权限
代码语言:javascript
复制
flush privileges;

修改mysql中的user表

在命令行连接上mysql之后,显示所有的数据库,连接mysql数据库,查看其中的user表,然后查看user表的字段类型.

可以看到其中的字段代表的意义以及可取值.

对此数据表的操作将可以直接影响到用户的权限,具体操作方式与操作其他数据表并无区别,只需查看一下字段对应的意义即可,这里不再赘述.

数据库操作还是小心为妙啊,能用select权限就别用drop权限,否则不知道什么时候会手抖.

完。

ChangeLog

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')



本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 为什么要进行权限管理
  • mysql都有那些权限
  • 如何进行权限管理
    • grant命令
      • 1. 修改权限
      • 2. 查看权限
      • 3.回收权限
      • 4.修改用户密码
      • 5.修改后刷新权限
    • 修改mysql中的user表
      • ChangeLog
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档