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