最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫必知必會之安全管理

 更新時間:2022年05月06日 14:59:14   作者:低吟不作語  
MySQL數(shù)據(jù)庫通常包含關(guān)鍵的數(shù)據(jù),為確保這些數(shù)據(jù)的安全和完整,需要利用訪問控制和用戶管理的功能,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫必知必會之安全管理的相關(guān)資料,需要的朋友可以參考下

權(quán)限表

MySQL 服務(wù)器通過權(quán)限表來控制用戶對數(shù)據(jù)庫的訪問,由 mysql_install_db 腳本初始化,MySQL 會根據(jù)這些權(quán)限表的內(nèi)容為每個用戶賦予相應(yīng)的權(quán)限

1. user 表

user 表是 MySQL 最重要的一個權(quán)限表,有 49 個字段,這些字段可以分成四類:

  • 范圍列:包括 Host、User,分別表示主機名、用戶名,Host 指明允許訪問的 IP 或主機范圍,User 指明允許訪問的用戶名
  • 權(quán)限列:權(quán)限列字段描述用戶在全局范圍內(nèi)允許進行的操作,該列的字段值類型為 ENUM,只能取 Y 和 N
  • 安全列:安全列有 12 個字段,其中兩個和 ssl 相關(guān)、兩個和 x509 相關(guān)、其他八個是授權(quán)插件和密碼相關(guān)
  • 資源控制列:用于限制用戶使用的資源,一個小時內(nèi)用戶查詢或連接數(shù)量超過資源控制限制將被鎖定,知道下一個小時才可以再次執(zhí)行

2. db 表

db 表存儲用戶對某個數(shù)據(jù)庫的操作權(quán)限,決定用戶能從哪個主機存取哪個數(shù)據(jù)庫,大致可以分為兩類字段:

  • 用戶列:用戶列有三個字段,分別是 Host、Db 和 User,分別表示主機名、數(shù)據(jù)庫名和用戶名
  • 權(quán)限列:決定用戶是否具有創(chuàng)建和修改存儲過程的權(quán)限

3. tables_priv 表

tables_priv 表用來對表設(shè)置操作權(quán)限,有八個字段:

  • Host、Db、User 和 Table_name 四個字段分別表示主機名、數(shù)據(jù)庫名、用戶名和表名
  • Grantor 表示修改記錄的用戶
  • Timestamp 表示修改該記錄的時間
  • Table_priv 表示對象操作權(quán)限。包括 Select、Insert、Delete 等
  • Column_priv 表示對表中的列的操作權(quán)限,包括 Select、Insert、Update 和 References

4. columns_priv 表

columns_priv 表用來對表的某一列設(shè)置權(quán)限,字段 Column_name 用來指定對哪些數(shù)據(jù)列具有操作權(quán)限

賬戶管理

1. 新建普通用戶

在 MySQL8 以前可以使用 GRANT 語句新建用戶,MySQL8 以后需要先創(chuàng)建用戶才能執(zhí)行 GRANT 語句

CREATE USER user[IDENTIFIED BY 'password'][,user[IDENTIFIED BY 'password']]...

user 參數(shù)表示新建用戶的賬戶,由用戶(User)和主機名(Host)構(gòu)成,形式如 Justin@localhost,IDENTIFIED BY 關(guān)鍵字用來設(shè)置用戶的密碼,password 參數(shù)表示用戶密碼,可以同時創(chuàng)建多個用戶,新用戶可以沒有初始密碼

2. 刪除普通用戶

DROP USER user[,user]...

user 參數(shù)表示新建用戶的賬戶,由用戶(User)和主機名(Host)構(gòu)成,可以同時刪除多個用戶

也可以使用 DELETE 語句直接將用戶信息從 mysql.user 表刪除,前提是擁有對 mysql.user 表的刪除權(quán)限

DELETE FROM mysql.user WHERE Host='hostname' AND User='username';

3. Root 用戶修改自己的密碼

root 用戶可以使用 ALTER 命令修改密碼

ALTER USER USER() IDENTIFIED BY 'new_password'

也可以使用 SET 語句修改密碼

SET PASSWORD='new_password'

4. Root 用戶修改普通用戶的密碼

root 用戶可以使用 ALTER 命令修改普通用戶的密碼

ALTER USER user [IDENTIFIED BY 'new_password'][,user [IDENTIFIED BY 'new_password']]...

也可以使用 SET 語句修改普通用戶的密碼

SET PASSWORD FOR 'username'@'hostname'='new_password'

普通用戶也可對自己的密碼進行管理,方式與 Root 用戶相同

密碼管理

1. 密碼過期策略

數(shù)據(jù)庫管理員可以手動設(shè)置賬號密碼過期,也可以建立一個自動密碼過期策略。過期策略可以是全局的,也可以為每個賬號設(shè)置單獨的過期策略

手動設(shè)置賬號密碼過期:

ALTER USER user PASSWORD EXPIRE

密碼過期策略基于最后修改密碼的時間自動將密碼設(shè)置為過期,MySQL 使用 default_password_lifetime 系統(tǒng)變量建立全局密碼過期策略,默認(rèn)值為 0 表示不使用自動過期策略。它允許的值是正整數(shù) N,表示密碼必須每隔 N 天進行修改。該值可在服務(wù)器的配置文件設(shè)置,也可以使用 SQL 語句設(shè)置,使用 SQL 語句方式如下:

SET PERSIST default_password_lifetime=180

每個賬號既可沿用全局密碼過期策略,也可單獨設(shè)置策略

# 設(shè)置賬號密碼90天過期
CREATE USER 'Justin@localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'Justin@localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
# 設(shè)置賬號密碼永不過期
CREATE USER 'Justin@localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'Justin@localhost' PASSWORD EXPIRE NEVER;
# 沿用全局密碼過期策略
CREATE USER 'Justin@localhost' PASSWORD EXPIRE DEFAULT;

2. 密碼重用策略

MySQL 限制使用已用過的密碼,重用限制策略基于密碼更改時間和使用時間,可以是全局的,也可以為每個賬號設(shè)置單獨的策略

MySQL 基于以下規(guī)則來限制密碼重用:

  1. 如果賬戶密碼限制基于密碼更改的數(shù)量,那么新密碼不能從最近限制的密碼數(shù)量中選擇,例如,如果密碼更改的最小值為3,那么新密碼不能與最近3個密碼中任何一個相同
  2. 如果賬戶密碼限制基于時間,那么新密碼不能從規(guī)定時間內(nèi)選擇,例如,如果重用周期為60天,那么新密碼不能從最近60天內(nèi)使用的密碼中選擇

可以在配置文件設(shè)置密碼重用策略,也可以使用 SQL 語句

# 密碼重用數(shù)量
SET PERSIST password_history=6;
# 密碼重用周期
SET PERSIST password_reuse_interval=365;

每個賬號既可沿用全局密碼重用策略,也可單獨設(shè)置策略

# 不能使用最近5個密碼
CREATE USER 'Justin@localhost' PASSWORD PASSWORD HISTORY 5;
ALTER USER 'Justin@localhost' PASSWORD PASSWORD HISTORY 5;
# 不能使用最近365天內(nèi)的密碼
CREATE USER 'Justin@localhost' PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'Justin@localhost' PASSWORD REUSE INTERVAL 365 DAY;

角色

在 MySQL 中,角色是權(quán)限的集合,可以為角色添加或移除權(quán)限。用戶可以被賦予角色,同時也被賦予角色包含的權(quán)限

1. 創(chuàng)建角色并授權(quán)

創(chuàng)建角色語句如下:

CREATE ROLE 'role_name'[@'host_name'][,'role_name'[@'host_name']]...

為角色授權(quán)語句如下:

GRANT privileges ON table_name TO 'role_name'[@'host_name'];

privileges 代表權(quán)限的名稱,多個權(quán)限以逗號1隔開,可以使用 SHOW 語句查詢權(quán)限名稱

SHOW PRIVILEGES\G;

2. 給用戶添加角色

GTANT role[,role2,...] TO user[,user2,...];

role 代表角色,user 代表用戶,添加之后如果角色處于未激活狀態(tài),需要先將用戶對應(yīng)的角色激活

SET ROLE DEFAULT

3. 編輯角色或權(quán)限

撤銷用戶角色的 SQL 語句如下:

REVOKE role FROM user;

撤銷角色權(quán)限的 SQL 語句如下:

REVOKE privileges ON tablename FROM 'rolename';

4. 刪除角色

DROP ROLE role[,role2]...

總結(jié)

到此這篇關(guān)于MySQL數(shù)據(jù)庫必知必會之安全管理的文章就介紹到這了,更多相關(guān)MySQL安全管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

长葛市| 濮阳市| 来凤县| 二手房| 清水县| 石林| 谷城县| 江阴市| 邢台县| 淳化县| 微山县| 双辽市| 通山县| 郎溪县| 潞西市| 承德市| 栾川县| 巴彦县| 新宁县| 恭城| 岑溪市| 改则县| 连山| 曲松县| 清镇市| 石嘴山市| 津南区| 中江县| 沈丘县| 德江县| 弥勒县| 绥中县| 大连市| 西宁市| 高州市| 公安县| 包头市| 同仁县| 阜新市| 木兰县| 墨竹工卡县|