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进程

      1. 操作示例:以CentOS7为例
      2. [root@localhost ~]# systemctl stop mariadb
      3. [root@localhost ~]# vim /usr/lib/systemd/system/mariadb.service
      4. 修改如下内容:
      5. ExecStart=/usr/bin/mysqld_safe --basedir=/usr --skip-grant-tables --skip-networking
      6. [root@localhost ~]# systemctl daemon-reload
      7. [root@localhost ~]# systemctl start mariadb.service
      8. [root@localhost ~]# mysql
      9. Welcome to the MariaDB monitor. Commands end with ; or \g.
      10. Your MariaDB connection id is 2
      11. Server version: 5.5.60-MariaDB MariaDB Server
      12. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
      13. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      14. MariaDB [(none)]> UPDATE mysql.user SET password=PASSWORD('inspur') WHERE user='root';
      15. Query OK, 2 rows affected (0.02 sec)
      16. Rows matched: 3 Changed: 2 Warnings: 0
      17. MariaDB [(none)]> FLUSH PRIVILEGES;
      18. MariaDB [(none)]> EXIT
      19. Bye
      20. [root@localhost ~]# systemctl stop mariadb.service
      21. [root@localhost ~]# vim /usr/lib/systemd/system/mariadb.service
      22. 修改如下内容:
      23. ExecStart=/usr/bin/mysqld_safe --basedir=/usr
      24. [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. SpringBoot与MyBatis整合案例

    1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  2. shell equal

    #!/bin/shzero=0 status=1 let status=0 if [[ $status -eq $zero ]];then echo "bu >= 3.6"e ...

  3. python 项目实战之备份文件夹并且压缩文件夹及下面的文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/11/12 14:21 # @Author : zoulixiang # @S ...

  4. Java编程思想之十 内部类

    可以将一个类定义放在另一个类的定义内部,这就是内部类. 10.1 创建内部类 创建内部类就是把类的定义置于外部类里面. public class Parcell { class contents{ i ...

  5. 【Activiti学习之六】BPMN任务

    环境 JDK 1.8 MySQL 5.6 Tomcat 7 Eclipse-Luna activiti 6.0 一.任务任务表示流程中将要完成的工作. 1.任务继承 2.任务类型Service Tas ...

  6. SQL中join连接查询时条件放在on后与where后的区别

    数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条 ...

  7. sql实现MD5加密

    select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','test')),3,32)

  8. linux 手动源码安装lnmp(亲测)

    linux 手动源码安装lnmp笔记(亲测)<pre>先安装这2个yum install gccyum install g++</pre><pre>先在linux ...

  9. vim文本编辑器的使用

    1.简介 vim是vi发展过来的一款文本编辑器,功能非常强大. 2.vim的工作模式 vim有三种工作模式,分别为命令模式.编辑模式.末行模式: 1)命令模式:打开文件之后,默认进入命令模式: 2)编 ...

  10. python面试题_01

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没多大 ...