1.登陸MySQLphp
mysql -u root -p
2.添加新用戶(容許全部ip訪問)mysql
create user 'test'@'%' identified by '123456';
#test:用戶名,%:全部ip地址,123456:密碼
sql
CREATE DATABASE test_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
grant all privileges on `test_db`.* to 'test'@'%' identified by '123456';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON TUTORIALS.* TO 'zara'@'localhost' IDENTIFIED BY 'zara123';
#分配特定的權限數據庫
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線程權限 |