二十、MySQL之用戶權限管理(用戶管理、權限管理、忘記root密碼的解決方案)

用戶權限管理:在不同的項目中給不同的角色(開發者)不同的操作權限,爲了保證數據庫數據的安全。

通常,一個用戶的密碼不會長期不變,所以需要經常性的變更數據庫用戶密碼來確保用戶本身安全(mysql客戶端用戶)

一、用戶管理

Mysql需要客戶端進行連接認證才能進行服務器操作:需要用戶信息。Mysql中所有的用戶信息都是保存在mysql數據庫下的user表中。
在這裏插入圖片描述
默認的,在安裝Mysql的時候,如果不選擇創建匿名用戶,那麼意味着所有的用戶只有一個:root超級用戶:
在這裏插入圖片描述
在mysql中,對用的用戶管理中,是由對應的HostUser共同組成主鍵來區分用戶。
User:代表用戶的用戶名
Host:代表本質是允許訪問的客戶端(IP或者主機地址)
如果host使用%代表所有的用戶(客戶端)都可以訪問

1.1 創建用戶

理論上講可以採用兩種方式創建用戶:

  1. 直接使用root用戶在mysql.user表中插入記錄(不推薦)
  2. 專門創建用戶的SQL指令

基本語法:create user 用戶名 identified by ‘明文密碼’;
用戶:用戶名@主機地址
主機地址:’’ / ‘%’
在這裏插入圖片描述
查看mysql.user表中是否存在新增的用戶:
在這裏插入圖片描述
簡化版創建用戶(誰都可以訪問,不需要密碼):
在這裏插入圖片描述
當用戶創建完成之後,用戶是否可以使用?
在這裏插入圖片描述

1.2 刪除用戶

注意:mysql中user是帶着host本身的(具有唯一性)
基本語法:drop user 用戶名@host;
在這裏插入圖片描述

1.3 修改用戶密碼

Mysql中提供了多種修改的方式:基本上都必須使用對應提供的一個系統函數:password(),需要靠該函數對密碼進行加密處理。

  1. 使用專門的修改密碼的指令
    基本語法:set password for 用戶 = password(‘新的明文密碼’);
    在這裏插入圖片描述
    修改後的數據測試:
    在這裏插入圖片描述
  2. 使用更新語句update來修改表
    基本語法:update mysql.user set password = password(‘新的明文密碼’) where user = ‘’ and host= ‘’;

二、權限管理

在mysql中將權限管理分爲三類:

  1. 數據權限:增刪改查(select\update\delete\insert)
  2. 結構權限:結構操作(create\drop)
  3. 管理權限:權限管理(create user\grant\revoke):通常只給管理員如此權限

2.1 授予權限:grant

將權限分配給指定的用戶
基本語法:grant 權限列表 on 數據庫/.表名/ to 用戶;

權限列表:使用逗號分隔,但是可以使用all privileges代表全部權限

數據庫.表名:可以是單表(數據庫名字.表名),可以是具體某個數據庫(數據庫.),也可以整庫(.*)
在這裏插入圖片描述
用戶被分配權限以後不需要退出就可以看到效果:
在這裏插入圖片描述
具體權限查看:單表權限只能看到數據庫中的一張表:
在這裏插入圖片描述

2.2 取消權限:revoke

權限回收:將權限從用戶手中收回
基本語法:revoke 權限列表/all privileges on 數據庫/.表/ from 用戶;
在這裏插入圖片描述
權限回收,同樣不需要刷新,用戶馬上就會感受到:
在這裏插入圖片描述

2.3 刷新權限:flush

Flush:刷新,將當前對用戶的權限操作,進行一個刷新,將操作的具體內容同步到對應的表中。
基本語法:flush privileges;
在這裏插入圖片描述

三、密碼丟失的解決方案

如果忘記了root用戶密碼,就需要去找回或者重置root用戶密碼

  1. 停止服務
    在這裏插入圖片描述
  2. 重新啓動服務:mysqld.exe –skip-grant-tables //啓動服務器但是跳過權限
    在這裏插入圖片描述
  3. 當前啓動的服務器沒有權限概念:非常危險,任何客戶端,不需要任何用戶信息都可以直接登錄,而且是root權限:新開客戶端,使用mysql.exe登錄即可
    在這裏插入圖片描述
  4. 修改root用戶的密碼:指定 用戶名@host
    在這裏插入圖片描述
  5. 趕緊關閉服務器,重啓服務
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章