• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL系列之六 用户与授权
    POST TIME:2021-10-18 19:25

    系列教程

    MySQL系列之开篇 MySQL关系型数据库基础概念
    MySQL系列之一 MariaDB-server安装
    MySQL系列之二 多实例配置
    MySQL系列之三 基础篇
    MySQL系列之四 SQL语法
    MySQL系列之五 视图、存储函数、存储过程、触发器
    MySQL系列之七 MySQL存储引擎
    MySQL系列之八 MySQL服务器变量
    MySQL系列之九 mysql查询缓存及索引
    MySQL系列之十 MySQL事务隔离实现并发控制
    MySQL系列之十一 日志记录
    MySQL系列之十二 备份与恢复
    MySQL系列之十三 MySQL的复制
    MySQL系列之十四 MySQL的高可用实现
    MySQL系列之十五 MySQL常用配置和性能压力测试

    一、用户管理

    1、用户账号

    用户的账号由用户名和HOST俩部分组成('USERNAME'@'HOST')

    HOST的表示:

    可以使用通配符表示,%和_;192.168.%即表示这个网段的所有主机

    2、增加删除账号

    主要:在数据库中修改了用户信息需要执行FLUSH PRIVILEGES;来刷新授权表使其生效

    创建

      MariaDB [mysql]> CREATE USER 'user1'@'192.168.%';
      MariaDB [mysql]> CREATE USER 'user2'@'192.168.%' IDENTIFIED BY 'your_password';
      MariaDB [mysql]> SELECT user,host,password FROM user;
      +-------+-----------+-------------------------------------------+
      | user  | host      | password                                  |
      +-------+-----------+-------------------------------------------+
      | root  | localhost | *4A54C3F37C03C7FBACE31591D6A8C546F93DF5C5 |
      | root  | centos7   |                                           |
      | root  | 127.0.0.1 |                                           |
      | root  | ::1       |                                           |
      |       | localhost |                                           |
      |       | centos7   |                                           |
      | user1 | 192.168.% |                                           |
      | user2 | 192.168.% | *9E72259BA9214F692A85B240647C4D95B0F2E08B |
      +-------+-----------+-------------------------------------------+
    

    删除

      MariaDB [mysql]> DROP USER user2@'192.168.%';
      MariaDB [mysql]> SELECT user,host,password FROM user;      
      +-------+-----------+-------------------------------------------+
      | user  | host      | password                                  |
      +-------+-----------+-------------------------------------------+
      | root  | localhost | *4A54C3F37C03C7FBACE31591D6A8C546F93DF5C5 |
      | root  | centos7   |                                           |
      | root  | 127.0.0.1 |                                           |
      | root  | ::1       |                                           |
      |       | localhost |                                           |
      |       | centos7   |                                           |
      | user1 | 192.168.% |                                           |
      +-------+-----------+-------------------------------------------+
    

    重命名

      MariaDB [mysql]> RENAME USER user1@'192.168.%' TO testuser@'%';
      MariaDB [mysql]> SELECT user,host,password FROM mysql.user;
      +----------+-----------+-------------------------------------------+
      | user     | host      | password                                  |
      +----------+-----------+-------------------------------------------+
      | root     | localhost | *4A54C3F37C03C7FBACE31591D6A8C546F93DF5C5 |
      | root     | centos7   |                                           |
      | root     | 127.0.0.1 |                                           |
      | root     | ::1       |                                           |
      |          | localhost |                                           |
      |          | centos7   |                                           |
      | testuser | %         |                                           |
      +----------+-----------+-------------------------------------------+
    

    修改密码

      MariaDB [mysql]> SET PASSWORD FOR testuser@'%' =PASSWORD('testpass');
      MariaDB [mysql]> SELECT user,host,password FROM mysql.user;          
      +----------+-----------+-------------------------------------------+
      | user     | host      | password                                  |
      +----------+-----------+-------------------------------------------+
      | root     | localhost | *4A54C3F37C03C7FBACE31591D6A8C546F93DF5C5 |
      | root     | centos7   |                                           |
      | root     | 127.0.0.1 |                                           |
      | root     | ::1       |                                           |
      |          | localhost |                                           |
      |          | centos7   |                                           |
      | testuser | %         | *00E247AC5F9AF26AE0194B41E1E769DEE1429A29 |
      +----------+-----------+-------------------------------------------+
    

    其他修改密码的方法:

    ​ UPDATE user SET password=PASSWORD('testpass') WHERE user='testuser';
    
    
    ​ # mysqladmin -uroot -poldpass password 'newpass'
    
    

    3、破解管理账号密码

    空数据库的情况下恢复密码

      # systemctl stop mariadb
      # rm -rf /var/lib/mysql/*  #删库跑路
      # systemctl start mariadb
    

    有数据的情况下恢复密码

      1)在/etc/my.cnf配置文件的[mydqld]下添加skip-grant-tables和skip-networking参数

      2)# systemctl restart mariadb 重启服务

      3)执行mysql登录到数据库

      4)MariaDB [(none)]> UPDATE mysql.user SET password=PASSWORD('newpassword') WHERE user='root' AND host='localhost';  #更新密码

      5)MariaDB [(none)]> FLUSH PRIVILEGES;  #刷新授权表

      6)退出,修改配置文件,删除skip-grant-tables和skip-networking参数,重启服务
    也可以在启动mysqld进程时,为其使用如下选项:

    --skip-grant-tables

    ​ --skip-networking

    二、授权管理

    1、授权

    ​ 语法:GRANT priv_type ON [object_type] priv_level TO user@'%' [IDENTIFIED BY 'password'] [WITH GRANT OPTION];

    授权时如果用户不存在则创建,所以我们一般不会单独去创建一个用户,而是授权创建一块完成。

    priv_type 授权类型

    - SELECT

    - ​INSERT

    - ​UPDATE

    - ​DELETE

    - ​CREATE

    - ​DROP

    - INDEX

    - ALTER

    - ​SHOW DATABASES

    - ​CREATE TEMPORARY TABLES

    - ​LOCK TABLES

    - ​CREATE VIEW

    - SHOW VIEW

    - CREATE USER

    - ALL PRIVILEGES 或 ALL

    object_type 授权对象

    - TABLE

    - FUNCTION

    - PROCEDURE

    priv_level 授权级别

    - *或*.* 表示所有库

    - db_name.* 表示指定库中的所有表

    - db_name.tbl_name 指定库中的指定表

    - tbl_name 表示当前库的表

    - db_name.routine_name 表示指定库的函数,存储过程,触发器

    WITH GRANT OPTION

    - MAX_QUERIES_PER_HOUR count

    - MAX_UPDATES_PER_HOUR count

    - MAX_CONNECTIONS_PER_HOUR count

    - MAX_USER_CONNECTIONS count

    MariaDB [school]> GRANT SELECT(stuid,name) ON TABLE school.students TO admin@'%' IDENTIFIED BY 'admin';  #把students表的stuid和name字段的查询权限授权于admin@'%'用户
    MariaDB [school]> FLUSH PRIVILEGES;  #刷新授权表
    
    
    

    2、查询授权

    MariaDB [school]> SHOW GRANTS FOR admin@'%'\G  #查看指定用户的权限
    *************************** 1. row ***************************
    Grants for admin@%: GRANT USAGE ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441'
    *************************** 2. row ***************************
    Grants for admin@%: GRANT SELECT (stuid, name) ON `school`.`students` TO 'admin'@'%'
    
    [root@working ~]# mysql -uadmin -padmin -h192.168.0.7
    MariaDB [(none)]> SHOW GRANTS FOR CURRENT_USER()\G  #查询自己的权限
    *************************** 1. row ***************************
    Grants for admin@%: GRANT USAGE ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441'
    *************************** 2. row ***************************
    Grants for admin@%: GRANT SELECT (stuid, name) ON `school`.`students` TO 'admin'@'%'
    

    3、收回授权

    MariaDB [school]> REVOKE SELECT(stuid) ON school.students FROM admin@'%';  #收回admin@'%'用户对stuid字段的查询权限

    总结

    到此这篇关于MySQL用户与授权的文章就介绍到这了,更多相关MySQL用户与授权内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • MySQL创建用户与授权方法
    • MySql增加用户、授权、修改密码等语句
    • MySQL创建用户与授权及撤销用户权限方法
    • Mysql中新建用户及授权的方法分享
    • MySQL中用户授权以及删除授权的方法
    • mysql创建数据库,添加用户,用户授权实操方法
    • mysql5.7创建用户授权删除用户撤销授权
    • MySql安装与配置方法(MySQL添加用户、删除用户与授权)
    • 在WIN命令提示符下mysql 用户新建、授权、删除,密码修改
    • MySQL 创建用户、授权用户、撤销用户权限、更改用户密码、删除用户(实用技巧)
    上一篇:MySQL系列之开篇 MySQL关系型数据库基础概念
    下一篇:MySQL系列之十三 MySQL的复制
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信