• MySQL5.7用户创建及权限管理


    一 用户、权限管理

    1.1 用户

    作用: 登录,管理数据库逻辑对象

    定义: 用户名@'主机值'
    主机值可以是主机名或IP地址,主机值中允许使用通配符

    root@'10.0.0.%'    
    root@'%'
    root@'10.0.0.51'
    root@'localhost'
    root@'db02'     # 主机名不能是数字开头
    root@'10.0.0.5%'
    root@'10.0.0.0/255.255.0.0' # 10.0 B类网络上任何主机
    

    1.2 用户管理操作

    增:
    mysql> create user dev@'10.0.0.%' identified by '123';
    查:
    mysql> desc mysql.user;    ---->  mysql5.7 开始新版的mysql数据库下的user表中已经没有password字段了保存密码的字段变成了authentication_string字段
    mysql> select user, host, authentication_string from mysql.user;
    改:
    mysql> alter user dev@'10.0.0.%' identified by '456';
    删:
    mysql> drop user dev@'10.0.0.%';
    

    1.3 权限管理操作

    grant '权限' on '作用域' to '用户';
    mysql> grant all on *.* to 'test'@'%';
    Query OK, 0 rows affected (0.00 sec)
    

    所有权限:
    https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

    常用权限介绍:

    select:可以从数据库中的表中查询数据
    insert:可以插入数据到数据库的表中
    update:可以对数据库中的表进行更新数据
    delete:可以从数据库中的表中删除数据
    alter:可以使用 alter table 来改变表的结构
    create:可以创建新的数据库或表的语句
    drop:能够删除现有数据库,表和视图
    grant option:可以向其它用户授予或移除权限
    index:可以创建和删除索引
    all或all privileges:代表指定权限等级的所有权限
    

    作用域:

    *.*                 ---->代表所有数据库的权限
    school.*            ----> school 数据库下所有表
    school.t1           ----> school 数据库下 t1 表
    

    示例:

    创建一个普通管理员账号,具有所有库的所有权限
    mysql> grant all on *.* to root@'10.0.0.%' identified by '123';
    
    创建一个管理员账号,并能给其它账号授权
    grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;
    
    创建一个程序用户,具备 app 库下增删查改权限
    mysql> grant select, update, insert, delete on app.* to app@'10.0.0.%' identified by '123';
    

    1.4 查看权限

    mysql> show grants for app@'10.0.0.%';
    

    1.5 回收权限

    mysql> revoke delete on wordpress.*  from app@'10.0.0.%';
    

    1.6 提示

    1.6.1 和用户相关操作,执行完后都需要刷新权限
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    
    1.6.2 mysql8.0在grant命令添加特性:
    • 建用户和授权分开了
    • grant 不再支持自动创建用户了,不支持改密码
    • 授权之前,必须要提前创建用户。

    示例:

    mysql> create user 'test'@'%' identified by '123news';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> grant select, insert on *.* to 'test'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    

    1.7 忘记本地root管理员密码

    • --skip-grant-tables #跳过授权表
    • --skip-networking #跳过远程登录,防止外面人连进来
    • --defaults-file #指定启动配置文件位置
    [root@db01 ~]# systemctl stop mysqld3307.service
    [root@db01 ~]# mysqld_safe --defaults-file=/data/3307/my.cnf --skip-grant-tables --skip-networking &
    mysql> flush privileges;    #加载权限表
    mysql> alter user root@'localhost' identified by '123456';
    mysql> exit
    Bye
    [root@db01 ~]# pkill mysqld
    [root@db01 ~]# systemctl start  mysqld3307
    
  • 相关阅读:
    什么是缓存?
    什么是反射?
    Nginx配置文件详解
    数据库插入,修改出现中文乱码解决办法
    hadoop的HA机制+zookeeper
    cascading--wordcount
    心情3
    完成用户登录注册功能
    感慨1
    Swing程序设计-初级
  • 原文地址:https://www.cnblogs.com/easydb/p/13706546.html
Copyright © 2020-2023  润新知