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


一 用户、权限管理

1.1 用户

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

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

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

1.2 用户管理操作

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

1.3 权限管理操作

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

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

常用权限介绍:

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

作用域:

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

示例:

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

1.4 查看权限

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

1.5 回收权限

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

1.6 提示

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

示例:

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

1.7 忘记本地root管理员密码

    • —skip-grant-tables #跳过授权表
    • —skip-networking #跳过远程登录,防止外面人连进来
    • —defaults-file #指定启动配置文件位置
      1. [root@db01 ~]# systemctl stop mysqld3307.service
      2. [root@db01 ~]# mysqld_safe --defaults-file=/data/3307/my.cnf --skip-grant-tables --skip-networking &
      3. mysql> flush privileges; #加载权限表
      4. mysql> alter user root@'localhost' identified by '123456';
      5. mysql> exit
      6. Bye
      7. [root@db01 ~]# pkill mysqld
      8. [root@db01 ~]# systemctl start mysqld3307


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM