1. MySQL根据对象级别划分的权限类别:

常见的权限类别:库级别、表级别、字段级别、管理类权限、程序类权限

  • 管理类权限:

    • CREATE TEMPORARY TABLES 创建临时表,一般为16M;
    • CREATE USER:创建用户权限
    • FILE:在数据库导出某文件中,或者从文件加载至数据库中
    • SUPER:在数据库执行管理操作的权限;跟复制、授权等相关的高级管理权限
    • SHOW DATABASES: 一般授权给每个用户
    • RELOAD:重新装载授权表还有其他功能
    • SHOUTDOWN:关闭数据库权限
    • REPLICATION SLAVE:是否能创建连接实现从服务器以复制的方式复制的权限连接至数据服务器端
    • REPLICATION CLIENT:是否有权限从主服务器请求复制相关事件到本地,就是请求复制相关主数据库产生的时间
    • LOCK TABLES:请求在服务器上锁表权限
    • PROCESS
  • 程序类权限:

    • FUNCTION存储函数:CREATE,ALTER,DROP,EXCUTE
    • PROCEDURE存储过程:CREATE,ALTER,DROP,EXCUTE
    • TRIGGER触发器:CREATE,ALTER,DROP,EXCUTE
      • CREATE FUNCTION:创建存储函数权限
      • CREATE PROCEDURE:创建存储过程权限
      • CREATE TRIGGER:创建触发器权限
      • ALTER FUNCTION:修改存储函数权限
      • ALTER PROCEDURE:修改存储过程权限
      • ALTER TRIGGER:修改触发器权限
      • DROP FUNCTION:删除存储函数权限
      • DROP PROCEDURE:删除存储过程权限
      • DROP TEIGGER:删除触发器权限
      • EXCUTE FUNCTION:执行存储函数权限
      • EXCUTE PROCEDURE执行存储过程权限
      • EXCUTE TRIGGER:执行触发器权限
  • 库和表级别的权限:TABLE,DATABASE

    • ALTER:可修改库或表权限;无需指明关键字,因为ALTER就代表仅对二者有效
    • CREATE:创建库或表权限
    • CREATE VIEW:创建视图权限
    • DROP:删除库或表权限
    • INDEX:创建过删除索引权限
    • SHOW VIEW:查看视图权限
    • GRANT OPTION:能够把自己获得的权限赠送给其他用户一个副本的权限;一般手机时不建议使用with grant option
  • 数据操作的权限:

    • SELECT
    • INSERT
    • DELETE
    • UPDATE
  • 字段级别权限:

    • SELECT(col1,col2,...):定义查看指定字段的权限
    • UPDATE(col1,col2,...):定义更新/改指定字段权限
    • INSERT(col1,col2,...):定义插入指定字段的权限
      注:delete删就删一行,所以delete没有字段操作
  • 所有权限: ALL PRIVIEGES, ALL

2. 用户权限都保存在元数据数据库中
  • 元数据数据库:mysql

    • 授权表:db,host,user;这三个表是限制哪些用户通过哪些主机连接到当前数据库对哪些库做访问;
    • columns_priv,tables_priv,procs_priv,proxies_priv:用来设定专门的权限
  • 用户账号:'USERNAME'@'HOST'
    • USERNAME:账号名称;
  • HOST:此账号可以通过哪些客户端主机请求创建连接线程;
    • %:任意长度的任意字符;
    • _:任意单个字符;
    • skip_name_resolve=ON:跳过名称解析
  • 创建用户:
    CREATE USER 'user'@‘host’ [IDENTIFIED BY [PASSWORD] 'password'] [,'user'@'host' [IDENTIFIED BY [PASSWORD] 'password']...]
  • 重命名:
    RENAME USER old_user TO new_user[,old_user TO new_user] ...
  • 删除用户:
    DROP USER 'user'@'host' [,'user'@'host'] ...
  • 让MySQL重新加载授权表
    FLUSH PRIVILEGES
  • 修改用户密码:
    (1) SET PASSWORD [FOR 'user'@'host'] = PASSWORD('cleartext password');
    (2) UPDATE mysql.user SET Password=PASSWORD('cleartext password') WHERE User='USERNAME' AND Host='HOST';
    (3) mysqladmin -uUSERNAME -hHOST -p password 'NEW_PASS';
    使其生效:FLUSH PRIVILEGES
  • 忘记管理员密码的解决办法:
    (1) 启动mysqld进程时,使用--skip-grant-tables 和 --skip-networking 选项;

    • CentOS 7: mariadb.serivce

    • CentOS 6: /etc/init.d/mysqld
      (2) 通过UPDATE 命令修改管理员密码
      (3) 以正常方式启动mysqld进程

      操作示例:以CentOS7为例
      [root@localhost ~]# systemctl stop mariadb
      [root@localhost ~]# vim /usr/lib/systemd/system/mariadb.service
      修改如下内容:
      ExecStart=/usr/bin/mysqld_safe --basedir=/usr --skip-grant-tables --skip-networking
      [root@localhost ~]# systemctl daemon-reload
      [root@localhost ~]# systemctl start mariadb.service
      [root@localhost ~]# mysql
      Welcome to the MariaDB monitor. Commands end with ; or \g.
      Your MariaDB connection id is 2
      Server version: 5.5.60-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> UPDATE mysql.user SET password=PASSWORD('inspur') WHERE user='root';
      Query OK, 2 rows affected (0.02 sec)
      Rows matched: 3 Changed: 2 Warnings: 0 MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> EXIT
      Bye
      [root@localhost ~]# systemctl stop mariadb.service
      [root@localhost ~]# vim /usr/lib/systemd/system/mariadb.service
      修改如下内容:
      ExecStart=/usr/bin/mysqld_safe --basedir=/usr
      [root@localhost ~]# systemctl deamon-reload

MySQL用户及权限的更多相关文章

  1. Mysql 用户,权限管理的几点理解。

    前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于m ...

  2. mysql 用户及权限管理 小结

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...

  3. MySQL Study之--MySQL用户及权限管理

    MySQL Study之--MySQL用户及权限管理     MySQLserver通过MySQL权限表来控制用户对数据库的訪问.MySQL权限表存放在mysql数据库里.由mysql_install ...

  4. 如何给mysql用户分配权限+增、删、改、查mysql用户

    在mysql中用户权限是一个很重析 参数,因为台mysql服务器中会有大量的用户,每个用户的权限需要不一样的,下面我来介绍如何给mysql用户分配权限吧,有需要了解的朋友可参考. 1,Mysql下创建 ...

  5. 入门MySQL——用户与权限

    前言:  前面几篇文章为大家介绍了各种SQL语法的使用,本篇文章将主要介绍MySQL用户及权限相关知识,如果你不是DBA的话可能平时用的不多,但是了解下也是好处多多. 1.创建用户 官方推荐创建语法为 ...

  6. MySQL用户与权限管理

    执行mysql select 查询报错: SELECT command denied to user 'root'@'localhost' for table "xxx" 问题原因 ...

  7. MySql 用户 及权限操作

    bin/msyql -h host -u user -p    bin/mysql -u mysql -p  本地登录 如无密码按回车直接进入mySql   bin/mysqladmin -u roo ...

  8. mysql用户管理,权限管理

    mysql权限 相关操作: 授予的权限分为四组: 列权限:和表中的一个具体列相关,例如:使用update 语句更新test表中name 列的值 表权限:和一个具体的表的所有数据相关,例如:使用 sel ...

  9. mysql用户和权限管理

    用户和权限管理 Information about account privileges is stored in the user, db, host, tables_priv, columns_p ...

  10. mysql 用户管理 权限控制

    添加用户 insert into mysql.user(Host,User,Password) values("%","shenen",password(&qu ...

随机推荐

  1. 题解 洛谷 P2010 【回文日期】

    By:Soroak 洛谷博客 知识点:模拟+暴力枚举 思路:题目中有提到闰年然后很多人就认为,闰年是需要判断的其实,含有2月29号的回文串,前四位是一个闰年那么我们就可以直接进行暴力枚举 一些小细节: ...

  2. display:none和visibility:hidden

    w3school学习网:https://www.w3school.com.cn/tiy/t.asp?f=hdom_style_display_none display: none----将元素的显示设 ...

  3. 《Linux就该这么学》自学笔记_ch22_使用openstack部署云计算服务环境

    <Linux就该这么学>自学笔记_ch22_使用openstackb部署云计算服务环境 文章主要内容: 了解云计算 Openstack项目 服务模块组件详解 安装Openstack软件 使 ...

  4. Python 3.X 练习集100题 02

    企业发放的奖金根据利润提成.利润(I):低于或等于10万元时,奖金可提10%:高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万之间时,高 ...

  5. Android开发遇到的一些小问题

    1.文件下载时,默认只能用https,怎么用http协议: 在Manifest.xml文件中增加一个配置项: android:usesCleartextTraffic="true" ...

  6. [转帖]spring、springMvc、springBoot和springCloud的联系与区别

    spring.springMvc.springBoot和springCloud的联系与区别 -- :: 尘光掠影 阅读数 文章标签: springspringmvcspringbootspringCl ...

  7. [转帖]深度剖析一站式分布式事务方案 Seata-Server

    深度剖析一站式分布式事务方案 Seata-Server https://www.jianshu.com/p/940e2cfab67e 金融级分布式架构关注 22019.04.10 16:59:14字数 ...

  8. Aliyun发送短信接口调用方法

    aliyun新版发送短信讲的不是很清晰,初次使用一堆dll不知道用哪个,以.net为例 申请SignName与Template_code请先申请,一般两个小时能通过 一.https://help.al ...

  9. Springboot Actuator之五:Springboot中的HealthAggregator、新增自定义Status

    springboot的actuator内置了/health的endpoint,很方便地规范了每个服务的健康状况的api,而且HealthIndicator可以自己去扩展,增加相关依赖服务的健康状态,非 ...

  10. Feign实现自定义错误处理

    关键操作 实现ErrorDecoder接口 问题和背景 最近项目中在大量使用Feign和OkHttp作为http客户端使用,开发效率得到显著的提升.但也面临一些问题,比如每个下游系统的异常返回方式不同 ...