主要為了控制權限,讓不同開發者,僅能操作屬於自己的業務范圍內的數據
創建mysql賬戶
賬戶中涉及的三個數據
賬戶名、密碼、ip地址
ip是用於限制某個賬戶只能在哪個機器上登錄
------------------------第一種方式---------------------------
# 創建user語法:
create user 用戶名@客戶端主機地址或網段 identified by 密碼
例如:
create user "plf"@"localhost" identified by "123456";
查看創建用戶
select user,password,host from mysql.user;
mysql.user表 與用戶相關信息
mysql.db表 用戶的數據庫權限信息
mysql.tables_priv表 用戶的表權限
columns_priv 表 用戶的字段權限
# 授權用戶語法:
grant [權限1,...權限n|all] on *.* to 用戶名@客戶端主機地址或網段;
例如:
grant all on *.* to "plf"@localhost;
刷新權限
flush privileges;
------------------------第二種方式---------------------------
grant [權限1,...權限n|all] on *.* to 用戶名@主機地址 identified by 密碼;
刷新權限
flush privileges;
# 測試
都在root權限下查看
create database day42 charset utf8;
use day42;
create table day42.a(id int);
grant all on day42.* to lt@localhost identified by "123456";
flush privileges;
select user,password,host from mysql.user;
select user,host from mysql.db;
select user,host from mysql.tables_priv;
select user,host from mysql.columns_priv;
# 收回權限
----------------------第1種方式:直接刪除用戶---------------------
drop user 用戶名@主機
----------------------第2種方式:回收權限---------------------
revoke all on *.* from 用戶名@主機名;
# 問題?
如果授權了一個all權限的用戶A,然后利用A去創建一個新用戶並授權all,能夠行的通?
答案是行不通的。
可以通過root用戶的如下sql,創建A用戶。然后A用戶就可以創建其他用戶了
grant all on day42.* to lt@localhost identified by "123456" with grant option;