设为首页 收藏本站
查看: 790|回复: 0

[经验分享] 数据库 之 MySQL用户和权限管理

[复制链接]

尚未签到

发表于 2018-10-6 13:22:50 | 显示全部楼层 |阅读模式
  1  概述
  MySQL用户和权限管理 遵循最小权限授权法则,保证系统的安全性
  本文主要讲解关于用户MySQL用户和权限管理的相关概念和操作
  3  MySQL权限类别
  库级别:对某些库拥有对应的权限
  表级别:对某些表拥有相关权限
  字段级别:
  管理类:如super
  程序类:如调用一个函数,或者执行一个函数
  管理类:
  CREATE USER:创建用户账号
  RELOAD:重新载入
  LOCK TABLES:锁定表
  REPLICATION CLIENT, REPLICATION SLAVE:复制功能
  SHUTDOWN:关闭数据库服务器
  FILE:从文件中加载内容装入
  SHOW DATABASES:查看数据库
  PROCESS :和进程相关
  SUPER:不便归类的其他权限,仅次于root的拥有其他管理功能的用户
  程序类:组合为12中权限(3*4)
  FUNCTION:函数
  PROCEDURE:存储过程
  TRIGGER:触发器
  操作:对以上的三个程序类都拥有四个操作CREATE,ALTER,DROP,EXECUTE
  库和表级别:
  CREATE,ALTER,DROP:对库和表创建,修改和删除
  INDEX:索引
  CREATE VIEW:创建视图的语句的权限
  SHOW VIEW:查看视图的权限
  GRANT:能够把自己获得的权限生成一个副本转赠给其它用户;转赠的权限不能回收,一般不建议授予这个权限
  OPTION:其他权限相关的选项
  数据操作:
  表:
  INSERT/DELETE/UPDATE/SELECT
  字段:
  SELECT(col1,col2,...)
  UPDATE(col1,col2,...)
  INSERT(col1,col2,...)
  注意,delete是整行删除,因此不能用于删除字段
  所有权限:ALL, ALL PRIVILEGES
  元数据数据库(数据字典):mysql库,保存了当前系统的相关数据,如当前数据库上对象的定义
  MySQL用户管理
  用户账号组成:user@host
  user:账户名称;
  host:此账户可通过哪些客户端主机请求创建连接线程;
  %:任意长度的任意字符;
  _:任意单个字符;
  mysql默认会将登录的ip解析成主机名,比如有主机ip为192.168.1.71的主机名是CentOS7A.sunny.com,那么在mysql服务器上授权的是test@192.168.1.%的账号访问,没有授权CentOS7A.sunny.com,当mysql服务器没有关闭名称解析时,192.168.1.71要远程连接mysql服务器,会被识别为账号test@CentOS7A.sunny.com,由于没有授权test@CentOS7A.sunny.com登录mysql服务器,因此不能登录mysql服务器
  授权主机名和ip是不等同的,
  skip_name_resolve=ON    #关闭名称解析功能
  创建用户:
  CREATE USER  'user'@'host' [IDENTIFIED BY [PASSWORD] 'password'] [,'user'@'host' [IDENTIFIED BY [PASSWORD] 'password']...]
  重命名:RENAME USER
  RENAME USER old_user TO new_user[, old_user TO new_user] ...
  删除用户:没有回收站,除非有备份,否则删掉就不能恢复
  DROP USER 'user'@'host' [, 'user'@'host'] ...
  让MySQL重新加载授权表:用update更改数据要手动执行flush
  FLUSH PRIVILEGES
  授权
  db, host, user三个级别的上进行授权
  mysql库中权限相关的表:tables_priv, column_priv, procs_priv, proxies_priv
  语法如下
  GRANT  priv_type [(column_list)] [, priv_type [(column_list)]] ...ON [object_type] priv_level TO user_specification [, user_specification] ... [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}] [WITH with_option ...]
  相关解释如下
  [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]:基于ssl连接
  object_type:
  TABLE:表
  | FUNCTION:函数
  | PROCEDURE:过程
  priv_level:权限级别
  *表示所有库所有表
  | *.*表示所有者的所有表
  | db_name.*表示指定库的所有表
  | db_name.tbl_name表示指定库的指定表
  | tbl_name表示所有库的特定表
  | db_name.routine_name:存储历程之一
  ssl_option:
  SSL
  | X509 格式的证书
  | CIPHER 'cipher':指明加密算法
  | ISSUER 'issuer':要求证书颁发者为指定的颁发者
  | SUBJECT 'subject':证书里的其他信息
  with_option:以下数值为0表示不限制
  GRANT OPTION:表示得到的权限可以转赠
  | MAX_QUERIES_PER_HOUR count:一个账号每小时最多发起多少次的操作
  | MAX_UPDATES_PER_HOUR count:一小时内发起更新的次数
  | MAX_CONNECTIONS_PER_HOUR count:一小时发起多少次短连接请求
  | MAX_USER_CONNECTIONS count:一个账号可以同时发起多少次的连接。
  查看授权:SHOW GRANTS;查看自己的权限
  SHOW GRANTS [FOR 'user'@'host']
  取消授权:REVOKE
  REVOKE  priv_type [(column_list)][, priv_type [(column_list)]] ...
  ON [object_type] priv_level
  FROM  'user'@'host' [,  'user'@'host'] ...
  REVOKE ALL PRIVILEGES, GRANT OPTION
  FROM user [, user] ...
  例子
  授权账号'test'@'192.168.1.%'

  MariaDB [sunny]> grant select on sunny.students to 'test'@'192.168.1.%'>  额外授权是追加,直接授权即可,如再增加delete权限

  MariaDB [sunny]> grant delete on sunny.students to 'test'@'192.168.1.%'>  授权对应字段拥有相关权限
  如授权test账号对表sunny.students的字段major拥有update的权限,则针对其他字段就没有update权限

  MariaDB [sunny]> grant update(major) on sunny.students to 'test'@'192.168.1.%'>  回收权限
  MariaDB [(none)]> revoke update(major) on sunny.students from 'test'@'192.168.1.%';


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-613871-1-1.html 上篇帖子: MySQL MHA切换失败一例 下篇帖子: mysql数据库基本操作(表结构)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表