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. HTML JAVASCRIPT CSS 大小写敏感问题

    html: 大小写不敏感 css: 大小写不敏感 javascript: 大小写敏感 但是 但是 但是 这三者是相互联系的, 所以合在一起使用的时候就产生了变化 ----  TagName, Clas ...

  2. 将python项目.py文件打包成.exe文件

    安装pyinstaller包 pip3 install pyinstaller 如果不行 pip3 install pyinstaller -i https://pypi.doubanio.com/s ...

  3. 【转】30种MySQL索引优化的方法

    第一方面:30种mysql优化sql语句查询的方法       1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by涉及的列上建立索引. 2.应尽量避免在 where ...

  4. awesome-RecSys

    https://github.com/jihoo-kim/awesome-RecSys?fbclid=IwAR1m6OebmqO9mfLV1ta4OTihQc9Phw8WNS4zdr5IeT1X1OL ...

  5. 关于nlp的一些探索

    深度学习,知识图谱,nlp学习经历                          获取信息来源:英文paper研读,吴恩达公开课,Hiton公开课,北大nlp教材,英文最新学术论文,中科院院士技术 ...

  6. ibatis实现分页查询

    最近在做老项目改造,分享一个之前写的ibatis(这里特指ibatis2.x的版本)分页插件. 大致原理就是通过重写SqlExecutor的executeQuery方法,实现分页查询,支持mysql和 ...

  7. ssl证书转换cer转pem

    .pem证书转.cer证书 openssl x509 -outform der -in demo.pem -out demo.cer .cer证书转.pem证书 openssl x509 -infor ...

  8. 这样配置:让你的 IDEA 好用到飞起来

    阅读本文大概需要 7 分钟. 来源:blog.csdn.net/fly910905/article/details/77868300 1.设置maven 1.在File->settings-&g ...

  9. 简单说说JavaScript的Generator 实现(ES6)

    Generator 是 ES6 中新增的语法,和 Promise 一样,都可以用来异步编程 // 使用 * 表示这是一个 Generator 函数 // 内部可以通过 yield 暂停代码 // 通过 ...

  10. Azure DevOps Server (TFS) 修改Git文件大小限制

    签入Git的所有文件将永远保留在存储库中,限制大文件签入到代码库,可以增加磁盘使用效率,提高系统备份还原等日常维护的效率. 通过下面的设置,团队项目管理员可以阻止超过特定大小的文件进入存储库.如果推送 ...