MySQL 新建用戶,為用戶授權,指定用戶訪問數據庫


1.登錄MySQL

mysql -u root -p 

2.添加新用戶(允許所有ip訪問)

create user 'test'@'%' identified by '123456';

#test:用戶名,%:所有ip地址,123456:密碼

3.創建數據庫
CREATE DATABASE test_db  DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
4.為新用戶分配權限
grant all privileges on `test_db`.* to 'test'@'%' identified by '123456'; 
#授權給用戶test,數據庫test_db相關的所有權限,並且該用戶test在所有網絡IP上都有權限,%是指沒有網絡限制
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'zara'@'localhost' IDENTIFIED BY 'zara123';

#分配特定的權限

5.刷新權限
flush privileges;

 

6. 修改用戶的IP訪問權限

use mysql;
update user set host = '%' where user ='test';

7. 授予管理員權限

grant all privileges on *.* to 'dba'@'1.2.3.4' IDENTIFIED BY 'mypassword' with grant option;

授予用戶dba訪問所有庫和表的權限,*.* 第一個*是所有的庫,第二個*是所有的表

1.2.3.4是可以訪問的IP地址,

with grant option是指允許用戶dba,傳遞其擁有的權限給其他的用戶

8. 授予只讀權限

grant select on *.* to 'select_only_user'@'%' IDENTIFIED BY 'your_password';

授予用戶select_only_user 所有庫和表的select 權限

9. 收回權限

revoke insert on *.* from 'someone'@'%';

收回用戶someone的所有庫和表的插入權限

revoke跟grant語法差不多,只需要把關鍵字 “to” 換成 “from” 即可,並且revoke語句中不需要跟密碼設置。
注意:revoke可以回收所有權限,也可以回收部分權限。

10. 要廢掉已經擁有的with grant option權限

revoke grant option on *.* from somebody;

11. 授予很多的權限

grant insert,select,update on test_db.test_tbl to someone@'localhost' identified by '123456';
grant 權限列表 on 數據庫名.數據表名 to '用戶名'@'主機' identified by '密碼' with grant option;

 

授予someone用戶insert,select, update等權限

12. 查看某個用戶的權限

show grants for 用戶名@主機;

13. 刪除用戶

drop user '用戶名'@'主機';

14. 刷新權限

flush privileges;

 15. 

如果給一個用戶設置的權限過大,除了上面使用revoke回收部分權限外,還可以使用grant進行權限修改!
也就是說,grant不僅可以添加權限,也可以修改權限(實際上就是對同一'用戶名'@'ip'設置權限,以覆蓋之前的權限);
grant修改后的權限將覆蓋之前的權限!
那么問題來了:授權后的密碼是密文形式保存的,如果記不住之前授權時的密碼,那么怎樣保證覆蓋后的權限跟之前的權限一致?

莫慌!
grant授權操作中其實不僅可以設置明文密碼,也可以設置密文密碼,如下:
1)grant 權限列表 on 庫.表.* to 用戶名@'ip' identified by "明文密碼"
2)grant 權限列表 on 庫.表.* to 用戶名@'ip' identified by password "密文密碼"

也就是說:
在grant重置權限的時候可以用查看的密文密碼當做新的密碼,然后去覆蓋之前的權限,這就保證了修改前后的密碼一致!

 

Mysql權限列表

權限 權限級別 權限說明
create 數據庫、表或索引 創建數據庫、表或索引權限
drop 數據庫或表 刪除數據庫或表權限
grant option 數據庫、表或保存的程序 賦予權限選項
references 數據庫或表 外鍵權限
alter 更改表,比如添加字段、索引、修改字段等
delete 刪除數據權限
index 索引權限
insert 插入權限
select 查詢權限
update 更新權限
create view 視圖 創建視圖權限
show view 視圖 查看視圖權限
alter routine 存儲過程 更改存儲過程權限
create routine 存儲過程 創建存儲過程權限
execute 存儲過程 執行存儲過程權限
file 服務器主機上的文件訪問 文件訪問權限
create temporary tables 服務器管理 創建臨時表權限
lock tables 服務器管理 鎖表權限
create user 服務器管理 創建用戶權限
proccess 服務器管理 查看進程權限
reload 服務器管理 執行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的權限
replication client 服務器管理 復制權限
replication slave 服務器管理 復制權限
show databases 服務器管理 查看數據庫權限
shutdown 服務器管理 關閉數據庫權限
super 服務器管理 執行kill線程權限

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM