首頁 > 軟體

MySQL超詳細實現使用者管理範例

2022-06-07 14:01:31

一、使用者管理

1.1 新建使用者

create user '使用者名稱'@'主機名' [identified by [password] '密碼'];
  • 使用者名稱就不用解釋了,就是我們登入時使用的賬號
  • 主機名指定我們建立的使用者可以在哪些主機上登陸,可使用IP地址、網段、主機名的形式,本地使用者可用localhost,允許任意主機登入可用萬用字元%來表示。
  • identified by譯為通過…來進行驗證,也就是密碼,密碼分為明文和密文,明文直接就是identified by 加上’密碼’即可,密文則是identified by password ‘密碼’,多了password關鍵字。
  • 若使用明文密碼,直接輸入’密碼’,插入到資料庫時由Mysql自動加密;若使用加密密碼,需要先使用SELECT PASSWORD(‘密碼’); 獲取密文,再在語句中新增 PASSWORD ‘密文’;若省略“IDENTIFIED BY”部分,則使用者的密碼將為空。

明文建立使用者

密文建立使用者

1.2 檢視使用者資訊

檢視mysql庫中的user表,強調一點,這個庫只有root使用者能檢視,普通使用者是沒有許可權查詢這個庫的。

如果我們想要讓某一普通使用者可以檢視這個mysql庫,需要使用grant進行授權。注意,授權工作也只能在root使用者執行。

遠端登陸,即從其他主機遠端登入本機資料庫

檢視mysql.user表

1.3 重新命名使用者

rename user '舊使用者名稱'@'舊主機名' to '新使用者名稱'@'新主機名';

1.4 刪除使用者

drop user '使用者名稱'@'主機名';

1.5 修改使用者密碼

1.修改當前的使用者密碼

set password = password('新密碼')

2.修改其他使用者密碼

set password for '使用者名稱'@'主機名' = password('新密碼');

普通使用者是無法修改其他使用者密碼的

1.6 忘記密碼怎麼辦

vim /etc/my.cnf   #修改mysql組態檔
[mysqld]
......
skip-grant-tables   #在mysqld模組下新增該設定
wq儲存退出
systemctl restart mysqld   #重啟mysql服務
mysql   #mysql直接登入
update mysql.user set authentication_string = password('新密碼') where User='root';
flush privileges;
退出重新登陸
切記:修改完後一定將組態檔的skip-grant-tables註釋或者刪掉,不然再執行一次重啟資料庫,還是可以無密碼登入,很危險

二、授權

2.1 使用者授權

grant,授權,通常用於root使用者授予普通使用者一些執行許可權,比如select,insert,update。

grant 許可權列表(select|insert|delete|drop|update等等)on 資料庫名.表名(*表示所有) to '使用者名稱'@'主機名' [identified by '密碼'];
若授權的使用者不存在,mysql會先建立一個使用者,然後進行授權操作

2.2 檢視所授予的許可權

show grants for '使用者名稱'@'主機名';   #檢視指定使用者的許可權
show grants;   #檢視當前使用者許可權

2.3 復原許可權

revoke 許可權列表 on 庫名.表名 from '使用者名稱'@'主機名';   
#從使用者XXX復原XX庫.XX表的XX操作的許可權

到此這篇關於MySQL超詳細實現使用者管理範例的文章就介紹到這了,更多相關MySQL使用者管理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com