MySQL 新建用戶,爲用戶受權,指定用戶訪問數據庫

1.登陸MySQLphp

mysql -u root -p

2.添加新用戶(容許全部ip訪問)mysql

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

#test:用戶名,%:全部ip地址,123456:密碼sql

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訪問全部庫和表的權限,*.* 第一個*是全部的庫,第二個*是全部的表ide

1.2.3.4是能夠訪問的IP地址,spa

with grant option是指容許用戶dba,傳遞其擁有的權限給其餘的用戶線程

8. 授予只讀權限code

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線程權限
相關文章
相關標籤/搜索