MySQL安全配置(1)
來(lái)源:易賢網(wǎng) 閱讀:1316 次 日期:2015-08-20 14:47:50
溫馨提示:易賢網(wǎng)小編為您整理了“MySQL安全配置(1)”,方便廣大網(wǎng)友查閱!

MySQL_Help_Link

MySQL安全配置

1 安全策略

1.1 管理意義上的數(shù)據(jù)安全

訪問(wèn) MySQL 數(shù)據(jù)庫(kù)必須首先訪問(wèn)數(shù)據(jù)庫(kù)的某個(gè)權(quán)限、即以某個(gè)權(quán)限模式用戶的身份登錄,大部分的安全管理主要通過(guò)模式用戶的權(quán)限來(lái)實(shí)現(xiàn)。

MySQL 的相關(guān)權(quán)限信息主要存放在 grant tables 的系統(tǒng)表中,即 mysql.User(全局級(jí)別權(quán)限) 、 mysql.db (數(shù)據(jù)庫(kù)級(jí)別權(quán)限)、 mysql.Host(數(shù)據(jù)庫(kù)級(jí)別權(quán)限) 、mysql.table_priv(表級(jí)別權(quán)限) 和、 mysql.column_pr(列級(jí)別權(quán)限)表中, MySQL 啟動(dòng)時(shí)裝入內(nèi)存。應(yīng)盡量使用 GRANT 、REVOKE 、CREATE USER 及 DROP USER 來(lái)進(jìn)行用戶和權(quán)限的變更操作。如 :GRANT SELECT.UPDATE,DELETE,INSERT,EXECUTE ON test_shop.* TO ‘ test_guest ‘@’localhost’;

查看某用戶權(quán)限,如 SHOW GRANTS FOR ‘test_guest’@’ localhost ‘

1.2 防范故障角度的數(shù)據(jù)安全

數(shù)據(jù)文件是操作系統(tǒng)級(jí)的對(duì)象,因此一般來(lái)講具有相當(dāng)?shù)拇嗳跣?、而且依賴于操作系統(tǒng)的性能特點(diǎn)。由于磁盤(pán)介質(zhì)的因素、一個(gè)大的數(shù)據(jù)文件上個(gè)別數(shù)據(jù)塊的損壞可能導(dǎo)致整個(gè)數(shù)據(jù)文件的不可用,這對(duì)一個(gè)系統(tǒng)來(lái)說(shuō)是災(zāi)難性的,而且大的表空間或數(shù)據(jù)文件的恢復(fù)是困難和耗時(shí)的。

巨大對(duì)象的分區(qū)在性能角度之外也有安全的因素,當(dāng)磁盤(pán)錯(cuò)誤使一個(gè)巨大表中一個(gè)單獨(dú)的數(shù)據(jù)塊不能讀寫(xiě)時(shí)可能導(dǎo)致整個(gè)表不可用,必須恢復(fù)包含該表的整個(gè)表空間。

考慮到數(shù)據(jù)倉(cāng)庫(kù)問(wèn)題??梢赃M(jìn)行以下操作:

對(duì)數(shù)據(jù)量大且不進(jìn)行寫(xiě)操作的表,使用 myisampack 工具,生成壓縮、只讀 MyISAM 表??梢詨嚎s 40% - 50% 的表文件空間。具體操作如下:

A 壓縮文件: >myisampack ../data/music_shop/ 表名 .MYI

B 重建索引: >myisamchk -rq --sort-index --analyze../data/test_shop/ 表名 .MYI

C 強(qiáng)制 mysqld 使用新表: > mysqladmin flush-tables

如果要進(jìn)行寫(xiě)操作,可以解壓縮一個(gè)壓縮的表,恢復(fù)原有狀態(tài),使用 myisamchk 。 如: myisamchk --unpack ../data/music_shop/ 表名 .MYI

最后,系統(tǒng)上線后,隨著數(shù)據(jù)量的增加,會(huì)發(fā)現(xiàn)數(shù)據(jù)目錄下的磁盤(pán)空間越來(lái)越下,造成安全隱患??梢圆扇煞N措施。一種針對(duì) MyISAM 存儲(chǔ)引擎的表,在建表時(shí)分別指定數(shù)據(jù)目錄和索引目錄到不同的磁盤(pán)空間,而默認(rèn)會(huì)同時(shí)放在數(shù)據(jù)目錄下。另外一種針對(duì) InnoDB 存儲(chǔ)引擎的表,因?yàn)閿?shù)據(jù)文件和索引文件在一起的,所以無(wú)法將它們分離。當(dāng)磁盤(pán)空間不足時(shí),可以增加一個(gè)新的數(shù)據(jù)文件,這個(gè)文件放在有充足空間的磁盤(pán)上。具體請(qǐng)查閱參數(shù)innodb_data_file_path 設(shè)置。

1.3 容災(zāi)與備份機(jī)制

建立主從數(shù)據(jù)庫(kù)集群,采用 MySQL 復(fù)制

MySQL 復(fù)制的優(yōu)點(diǎn):

1 如果主服務(wù)器出現(xiàn)問(wèn)題,可以快速切換到從服務(wù)器;

2 可以在從服務(wù)器上執(zhí)行查詢操作,降低主服務(wù)器的訪問(wèn)壓力;

3 可以在從服務(wù)器上執(zhí)行備份,以避免備份期間影響主服務(wù)器的;

應(yīng)注意的問(wèn)題:

由于實(shí)現(xiàn)的是異步的復(fù)制,所以主從服務(wù)器之間存在一定的差距。在從服務(wù)器上進(jìn)行的查詢操作要考慮到這些數(shù)據(jù)的差異,一般只有對(duì)實(shí)時(shí)性要求不高的數(shù)據(jù)可以通過(guò)從服務(wù)器查詢。

定期備份文件與數(shù)據(jù),通過(guò)各種方式保存文件與數(shù)據(jù)。

以下是幾點(diǎn)防范的措施:

制定一份數(shù)據(jù)庫(kù)備份 / 恢復(fù)計(jì)劃,并對(duì)計(jì)劃進(jìn)行仔細(xì)測(cè)試。

啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)器的二進(jìn)制變更日志,該功能的系統(tǒng)開(kāi)銷很小 ( 約為 1%) ,二進(jìn)制日志包含備份后進(jìn)行的所有更新,我們沒(méi)有理由不這樣做。(log-bin=file,file可以不指定)

定期檢查數(shù)據(jù)表,防范于未燃。

定期對(duì)備份文件進(jìn)行備份,以防備份文件失效。

把 MySQL 的數(shù)據(jù)目錄和備份文件分別放到兩個(gè)不同的驅(qū)動(dòng)器中,以平衡磁盤(pán) I/O 和增加數(shù)據(jù)的安全。

2 安全隱患

2.1 正確設(shè)置目錄權(quán)限

設(shè)置目錄權(quán)限的原則是軟件和數(shù)據(jù)分開(kāi),具體如下:

1. 將 mysql 安裝在單獨(dú)的用戶下

2. 安裝時(shí),以 root 用戶進(jìn)行安裝,mysql 的軟件默認(rèn)都為 root 權(quán)限

3. 安裝完畢后,將數(shù)據(jù)目錄權(quán)限設(shè)置為實(shí)際運(yùn)行 mysql 的用戶權(quán)限,比如:

Chown –R mysql:mysql /home/mysql/data

2.2 盡量避免以 root 權(quán)限運(yùn)行 mysql

將 4.1 的目錄權(quán)限設(shè)置完畢后,啟動(dòng)、停止 mysql 以及日常的維護(hù)工作都可以在

mysql 用戶下進(jìn)行,沒(méi)有必要 su 到 root 后再用—user=mysql 來(lái)啟動(dòng)和關(guān)閉 mysql,

這樣就沒(méi)有必要授權(quán)維護(hù)人員 root 權(quán)限,而且最重要的一定是因?yàn)槿魏尉哂?FILE權(quán)限的用戶能夠用 root 創(chuàng)建文件。

2.3 刪除匿名賬號(hào)

有些版本的 MySQL 安裝完之后會(huì)安裝一個(gè)空賬號(hào)( User = ‘‘ ),此賬號(hào)對(duì) test 數(shù)據(jù)庫(kù)有完全權(quán)限,為避免此賬號(hào)登陸后,建立大表,占用磁盤(pán)空間,影響系統(tǒng)安全,建議刪除

drop user ''@'localhost';

drop user ''@' localhost.localdomain’;

2.4 給 root 賬號(hào)設(shè)置口令

建議以一句話的拼音為口令。如 SET PASSWORD=PASSWORD(‘woshiyitiaoyu’)

并且限定只能通過(guò) localhost 訪問(wèn)。

2.5 只授予賬號(hào)必須的權(quán)限

如: Grant select,insert,update,delete on tablename to ‘username’@’hostname’

2.6 除 root 外,任何用戶不應(yīng)有 mysql 庫(kù) user 表的存取權(quán)限

如果擁有 mysql 庫(kù)中 user 表的存取權(quán)限(select、update、insert、delete), 就

可以輕易的增加、修改、刪除其他的用戶權(quán)限,造成系統(tǒng)的安全隱患。

如:use mysql;delete from db where user<>‘root’ and db=‘mysql’

2.7 不要把 file 、 process 、或 super 權(quán)限授予管理員以外的賬號(hào)

會(huì)產(chǎn)生保密信息外泄,查看管理員執(zhí)行的動(dòng)作,普通用戶執(zhí)行 kill 命令等嚴(yán)重的安全隱患。

FILE 權(quán)限可以被濫用于將服務(wù)器主機(jī)上 MySQL 能讀取的任何文件讀入到數(shù)據(jù)庫(kù)表中。包括任何人可讀的文件和服務(wù)器數(shù)據(jù)目錄中的文件。可以使用 SELECT 訪問(wèn)數(shù)據(jù)庫(kù)表,然后將其內(nèi)容傳輸?shù)娇蛻舳松稀2灰蚍枪芾碛脩羰谟?FILE 權(quán)限。

有這權(quán)限的任何用戶能在擁有 mysqld 守護(hù)進(jìn)程權(quán)限的文件系統(tǒng)那里寫(xiě)一個(gè)文件!為了更加安全,由 SELECT ... INTO OUTFILE 生成的所有文件對(duì)每個(gè)人是可寫(xiě)的,并且你不能覆蓋已經(jīng)存在的文件。

file 權(quán)限也可以被用來(lái)讀取任何作為運(yùn)行服務(wù)器的 Unix 用戶可讀取或訪問(wèn)的文件。使用該權(quán)限,你可以將任何文件讀入數(shù)據(jù)庫(kù)表。這可能被濫用,例如,通過(guò)使用 LOADDATA 裝載“/etc/passwd”進(jìn)一個(gè)數(shù)據(jù)庫(kù)表,然后能用 SELECT 顯示它。PROCESS 權(quán)限能被用來(lái)察看當(dāng)前執(zhí)行的查詢的明文文本,包括設(shè)定或改變密碼的查詢。

SUPER 權(quán)限能用來(lái)終止其它用戶或更改服務(wù)器的操作方式。比如 kill 進(jìn)程不要將 PROCESS 或 SUPER 權(quán)限授給非管理用戶。mysqladmin processlist 的輸出顯示出當(dāng)前執(zhí)行的查詢正文,如果另外的用戶發(fā)出一個(gè) UPDATE user SETpassword=PASSWORD('not_secure')查詢,被允許執(zhí)行那個(gè)命令的任何用戶可能看得到

2.8 LOAD DATA LOCAL 帶來(lái)的安全問(wèn)題

由 MySQL 服務(wù)器啟動(dòng)文件從客戶端向服務(wù)器主機(jī)的傳輸。理論上,打過(guò)補(bǔ)丁的服務(wù)器可以告訴客戶端程序傳輸服務(wù)器選擇的文件,而不是客戶用LOAD DATA 語(yǔ)句

指定的文件。這樣服務(wù)器可以訪問(wèn)客戶端上客戶有讀訪問(wèn)權(quán)限的任何文件。

在 Web 環(huán)境中,客戶從 Web 服務(wù)器連接,用戶可以使用 LOAD DATA LOCAL 來(lái)讀取 Web 服務(wù)器進(jìn)程有讀訪問(wèn)權(quán)限的任何文件(假定用戶可以運(yùn)行 SQL 服務(wù)器的任何命令)。在這種環(huán)境中,MySQL 服務(wù)器的客戶實(shí)際上是 Web 服務(wù)器,而不是連接 Web 服

務(wù)器的用戶運(yùn)行的程序。

解決方法:

可以用--local-infile=0 選項(xiàng)啟動(dòng) mysqld 從服務(wù)器端禁用所有 LOAD DATA

LOCAL 命令。

對(duì)于 mysql 命令行客戶端,可以通過(guò)指定--local-infile[=1]選項(xiàng)啟用 LOAD

DATA LOCAL,或通過(guò)--local-infile=0 選項(xiàng)禁用。類似地,對(duì)于 mysqlimport,--local or -L 選項(xiàng)啟用本地?cái)?shù)據(jù)文件裝載。在任何情況下,成功進(jìn)行本地裝載需要服務(wù)器啟用相關(guān)選項(xiàng)。

2.9 使用 MERGE 存儲(chǔ)引擎潛藏的安全漏洞

Merge 表在某些版本中可能存在以下安全漏洞:

用戶 A 賦予表 T 的權(quán)限給用戶 B

用戶 B 創(chuàng)建一個(gè)包含 T 的 merge 表,做各種操作

用戶 A 收回對(duì) T 的權(quán)限

安全隱患:用戶 B 通過(guò) merge 表仍然可以訪問(wèn)表 A 中的數(shù)據(jù)


2.10 盡量避免通過(guò) symlinks 訪問(wèn)表

不要允許使用表的符號(hào)鏈接。(可以用--skip-symbolic-links 選項(xiàng)禁用)。如果 你

用 root 運(yùn)行 mysqld 則特別重要,因?yàn)槿魏螌?duì)服務(wù)器的數(shù)據(jù)目錄有寫(xiě)訪問(wèn)權(quán)限的人

則能夠刪除系統(tǒng)中的任何文件!

2.11 防止 DNS 欺騙

如果你不信任你的 DNS,你應(yīng)該在授權(quán)表中使用 IP 數(shù)字而不是主機(jī)名。在任何情況下,你應(yīng)該非常小心地使用包含通配符的主機(jī)名來(lái)創(chuàng)建 授權(quán)表?xiàng)l目!

2.12 DROP TABLE 命令并不收回以前的相關(guān)訪問(wèn)授權(quán)

drop 表的時(shí)候,其他用戶對(duì)此表的權(quán)限并沒(méi)有被收回,這樣導(dǎo)致重新創(chuàng)建同名的表時(shí),以前其他用戶對(duì)此表的權(quán)限會(huì)自動(dòng)賦予,導(dǎo)致權(quán)限外流。

因此,要在刪除表時(shí),同時(shí)取消其他用戶在此表上的相應(yīng)權(quán)限。

2.13 REVOKE 命令漏洞

grant all privileges on *.* to guest@localhost; 后

revoke all privileges on *.* from guest@localhost; 不起作用,必須針對(duì)每個(gè)數(shù)據(jù)單獨(dú)使用 revoke

2.14 如果可能,給所有用戶加上訪問(wèn) IP 限制

給所有用戶加上 ip 限制將拒絕所有未知的主機(jī)進(jìn)行的連接,保證只有受信任的主

機(jī)才可以進(jìn)行連接。例如:

Grant select on dbname.* to ‘username’@’ip’ identified by ’passwd’;

2.15 嚴(yán)格控制操作系統(tǒng)帳號(hào)和權(quán)限

在數(shù)據(jù)庫(kù)服務(wù)器上要嚴(yán)格控制操作系統(tǒng)的帳號(hào)和權(quán)限,比如:

鎖定 mysql 用戶

其他任何用戶都采取獨(dú)立的帳號(hào)登陸,管理員通過(guò)普通用戶管理 mysql;或者通過(guò) root su到 mysql 用戶下進(jìn)行管理。

禁止修改 mysql 用戶下的任何資源

2.16 增加防火墻

購(gòu)買(mǎi)防火墻。這樣可以保護(hù)你防范各種軟件中至少 50%的各種類型的攻擊。把MySQL放到防火墻后或隔離區(qū)(DMZ)

2.17 嚴(yán)格模式

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

2.18 限制MYSQL的訪問(wèn)目錄

--chroot

2.19 防止在連接MYSQL是使用TCP/IP套接字

--skip-networking

2.20 防止連接到MYSQL數(shù)據(jù)庫(kù)時(shí)使用主機(jī)名

--skip-name-resolve

2.21 防止沒(méi)有SHOW DATABASES權(quán)限的用戶使用此命令

--skip-show-database

2.22 如果對(duì)user表沒(méi)有INSERT權(quán)限,可以防止這些用戶通過(guò)GRANT命令創(chuàng)建用戶

--safe-user-create

3 其他安全配置

MySQL 本身帶有一些選項(xiàng),適當(dāng)?shù)氖褂眠@些選項(xiàng)將會(huì)使數(shù)據(jù)庫(kù)更加安全。

3.1 使用 skip-network

在網(wǎng)絡(luò)上不允許 TCP/IP 連接,所有到數(shù)據(jù)庫(kù)的連接必須由命名管道 (Named Pipes) 或共享內(nèi)存(Shared Memory) 或 UNIX 套接字 SOCKET 文件進(jìn)行。這個(gè)選項(xiàng)適合應(yīng)用和數(shù)據(jù)庫(kù)共用一臺(tái)服務(wù)器的情況,其他客戶端將無(wú)法通過(guò)網(wǎng)絡(luò)遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù),大大增強(qiáng)了數(shù)據(jù)庫(kù)的安全性,但同時(shí)也帶來(lái)了管理維護(hù)上的不方便。 MySQL 僅能通過(guò)命名管道或共享內(nèi)存 ( 在 widows 中 ) 或 Unix 套接字文件 ( 在 Unix 系統(tǒng)中 ) 來(lái)和客戶端連接交互。以下為配置實(shí)例:

skip-networking

-S 是 --socket 的簡(jiǎn)寫(xiě)形式,如: -s /tmp/mysql.sock,而其值必須和服務(wù)端設(shè)置的相同

--protocol 是嚴(yán)格指定連接類型,如果一些設(shè)置使用默認(rèn)值時(shí),如windows下服務(wù)器端設(shè)置--socket=mysql(mysql是默認(rèn)值),在連接時(shí)指定 --protocol=pipe 后 --socket=mysql 可省略指定。

1. 命名管道

只適合在 Windows 系統(tǒng)下用來(lái)連接本機(jī)的 MySQL ,性能可比一般的TCP/IP方式提升30%~50%。

服務(wù)端設(shè)置要求

enable-named-pipe #或 named_pipe=ON

socket=MySQL

客戶端連接

mysql --protocol=pipe --socket=mysql

2. 共享內(nèi)存

4.1版本后,mysql對(duì)windows系統(tǒng)還提供了共享內(nèi)存方式的連接

服務(wù)端設(shè)置要求

shared-memory=ON

shared_memory_base_name=MYSQL

客戶端連接

mysql --protocol=memory --shared-memory-base-name=mysql

3. UNIX套接字

linux和unix環(huán)境下,可以使用unix域套接字,來(lái)連接同在一臺(tái)機(jī)器上的mysql;

服務(wù)端設(shè)置要求

socket=/tmp/mysql.sock

客戶端連接

mysql --protocol=socket --socket=/tmp/mysql.sock

3.2 allow-suspicious-udfs

該選項(xiàng)控制是否可以載入主函數(shù)只有 xxx 符的用戶定義函數(shù)。默認(rèn)情況下,該選項(xiàng)被關(guān)閉,并且只能載入至少有輔助符的 UDF。這樣可以防止從未包含合法 UDF 的共享對(duì)象文件載入函數(shù)。

3.3 old-passwords

強(qiáng)制服務(wù)器為新密碼生成短(pre-4.1)密碼哈希。當(dāng)服務(wù)器必須支持舊版本客戶端程序時(shí),為了保證兼容性這很有用。

3.4 safe-user-create

如果啟用, 用戶不能用 GRANT 語(yǔ)句創(chuàng)建新用戶,除非用戶有 mysql.user 表的 INSERT

權(quán)限。如果你想讓用戶具有授權(quán)權(quán)限來(lái)創(chuàng)建新用戶,你應(yīng)給用戶授予下面的權(quán)限:

mysql> GRANT INSERT(user) ON mysql.user TO 'user_name '@'host_name';

這樣確保用戶不能直接更改權(quán)限列,必須使用 GRANT 語(yǔ)句給其它用戶授予該權(quán)限。

3.5 secure-auth

不允許鑒定有舊(pre-4.1)密碼的賬戶

3.6 skip-grant-tables

這個(gè)選項(xiàng)導(dǎo)致服務(wù)器根本不使用權(quán)限系統(tǒng)。這給每個(gè)人以完全訪問(wèn)所有的數(shù)據(jù)庫(kù)的權(quán)力!(通過(guò)執(zhí)行 mysqladmin flush-privileges 或 mysqladmin reload 命令,或執(zhí)行 FLUSH PRIVILEGES 語(yǔ)句,你能告訴一個(gè)正在運(yùn)行的服務(wù)器再次開(kāi)始使用授權(quán)表 。 )

3.7 skip-show-database

使用該選項(xiàng),只允許有 SHOW DATABASES 權(quán)限的用戶執(zhí)行 SHOW DATABASES 語(yǔ)句,該

語(yǔ)句顯示所有數(shù)據(jù)庫(kù)名。不使用該選項(xiàng),允許所有用戶執(zhí)行 SHOW DATABASES,但

只顯示用戶有 SHOW DATABASES 權(quán)限或部分?jǐn)?shù)據(jù)庫(kù)權(quán)限的數(shù)據(jù)庫(kù)名。請(qǐng)注意全局權(quán)

限指數(shù)據(jù)庫(kù)的權(quán)限。

3.8 使用 SSL

SSL ( Secure Socket Layer 安全套接字)是一種安全協(xié)議,最初由 Netscape 公司所開(kāi)發(fā),用以保障在Internet 上數(shù)據(jù)傳輸?shù)陌踩?, 利用數(shù)據(jù)加密技術(shù),可確保數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸過(guò)程中不會(huì)被截取。

應(yīng)用場(chǎng)景,在主從數(shù)據(jù)庫(kù)復(fù)制中使用,提供以下服務(wù)保障。

a) 認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶和服務(wù)器。

b) 加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取。

c) 維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被破壞。

在 MySql 中使用 SSL 進(jìn)行安全傳輸,需要在命令行或選項(xiàng)文件中設(shè)置 ‘SSL’ 選項(xiàng)。下面以命令行為例,進(jìn)行安裝介紹。

A. 安裝證書(shū)管理工具

a) 所需部件Win32OpenSSL-0_9_8g.exe ,可從網(wǎng)上下載

b) 安裝 雙擊Win32OpenSSL-0_9_8g.exe 按提示進(jìn)行安裝。安裝在C:\OpenSSL 目錄下

c) 在C:\OpenSSL\bin 目錄下創(chuàng)建root ,server ,client 三個(gè)子路徑

d) 在創(chuàng)建證書(shū)時(shí)輸入的用戶名,密碼請(qǐng)妥善保存

B. 創(chuàng)建根證書(shū),并采用自簽名簽署它

a) 創(chuàng)建私鑰 進(jìn)入DOS 窗口,進(jìn)入C:\OpenSSL\bin 路徑,然后輸入openssl genrsa -out root/root-key.pem 1024 命令,按Enter 鍵。

b) 創(chuàng)建證書(shū)請(qǐng)求 繼續(xù)輸入openssl req -new -out root/root-req.csr -key root/root-key.pem ,然后按Enter 鍵,要求輸入一系列信息,可根據(jù)實(shí)際情況輸入,但是CommonName :一定要輸入root

c) 自簽署根證書(shū) 繼續(xù)輸入openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkey root/root-key.pem -days 3650 ,然后按Enter 鍵

d) 查看根證書(shū)內(nèi)容 要先進(jìn)入證書(shū)所在路徑 例:C:\OpenSSL\bin\root ,然后輸入keytool -printcert -file root-cert.pem,然后按Enter 鍵。

C. 創(chuàng)建服務(wù)器證書(shū),并采用根證書(shū)簽署它

a) 創(chuàng)建私鑰 進(jìn)入DOS 窗口,進(jìn)入C:\OpenSSL\bin 路徑,然后輸入openssl genrsa -out server/server-key.pem 1024 命令,按Enter 鍵。

b) 創(chuàng)建證書(shū)請(qǐng)求 繼續(xù)輸入openssl req -new -out server/server-req.csr -key server/server-key.pem ,然后按Enter鍵,要求輸入一系列信息,可根據(jù)實(shí)際情況輸入,但是CommonName :一定要輸入localhost 或服務(wù)器的域名(存在域名情況下)。

c) 簽署服務(wù)器證書(shū) 繼續(xù)輸入openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650 ,然后按Enter 鍵。

d) 查看服務(wù)器證書(shū)內(nèi)容 要先進(jìn)入證書(shū)所在路徑 例:C:\OpenSSL\bin\server ,然后輸入keytool -printcert -file server-cert.pem ,然后按Enter 鍵。

D. 創(chuàng)建客戶證書(shū),并采用根證書(shū)簽署它

a) 創(chuàng)建私鑰 進(jìn)入DOS 窗口,進(jìn)入C:\OpenSSL\bin 路徑,然后輸入openssl genrsa -out client/client-key.pem 1024 命令,按Enter 鍵。

b) 創(chuàng)建證書(shū)請(qǐng)求 繼續(xù)輸入openssl req -new -out client/client-req.csr -key client/client-key.pem ,然后按Enter鍵,要求輸入一系列信息,可根據(jù)實(shí)際情況輸入,CommonName :輸入用戶ID 。

c) 簽署客戶證書(shū) 繼續(xù)輸入openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 3650 ,然后按Enter 鍵。

d) 查看客戶證書(shū)內(nèi)容 要先進(jìn)入證書(shū)所在路徑 例:C:\OpenSSL\bin\client ,然后輸入keytool -printcert -file client-cert.pem ,然后按Enter 鍵。

完成以上步驟后,將所生成的證書(shū)root 、server 和client 文件夾,拷到C:\mysll 目錄下。 至此,已部署完在啟動(dòng)服務(wù)器時(shí)所用的有關(guān)選項(xiàng)指明證書(shū)文件和密鑰文件。在建立加密連接前,要準(zhǔn)備三個(gè)文件,一個(gè) CA 證書(shū),是由可信賴第三方出具的證書(shū),用來(lái)驗(yàn)證客戶端和服務(wù)器端提供的證書(shū)。 CA 證書(shū)可向商業(yè)機(jī)構(gòu)購(gòu)買(mǎi),也可自行生成。第二個(gè)文件是證書(shū)文件,用于在連接時(shí)向?qū)Ψ阶C明自已身份的文件。第三個(gè)文件是密鑰文件,用來(lái)對(duì)在加密連接上傳輸數(shù)據(jù)的加密和解密。 MySQL 服務(wù)器端的證書(shū)文件和密鑰文件必須首先安裝,在 myssl 目錄里的幾個(gè)文件:root-cert.pem(CA 證書(shū) ) , server-cert.pem( 服務(wù)器證書(shū) ) , server-key.pem( 服務(wù)器公共密鑰 ) 。

在主數(shù)據(jù)庫(kù)創(chuàng)建從數(shù)據(jù)庫(kù)操作所用的用戶,并指定必須用SLL 認(rèn)證。

CREATE USER ‘test_guest’@’localhost’ IDENTIFIED BY ‘1234’;

GRANT ALL PRIVILEGES ON music_shop.* TO ‘ test_guest ‘@’10.12.1.42’ REQUIRE ssl;

關(guān)閉主數(shù)據(jù)庫(kù)

>mysqladmin -uroot shutdown

重啟服務(wù)器,使配置生效。

>mysqld--ssl-ca=C:\myssl\server\root-cert.pem --ssl-cert=C:\myssl\server\server-cert.pem --ssl-key=C:\myssl\server\server-key.pem

用從數(shù)據(jù)庫(kù)客戶程序建立加密連接。

>mysql -u test_guest --ssl-ca=C:\myssl\client\root-cert.pem --ssl-cert=C:\myssl\client\client-cert.pem --ssl-key=C:\myssl\client\client-key.pem

配置完成后,調(diào)用 mysql 程序運(yùn)行 \s 或 SHOW STATUS LIKE ‘SSL%’ 命令,如果看到 SSL: 的信息行就說(shuō)明是加密連接了。如果把 SSL 相關(guān)的配置寫(xiě)進(jìn)選項(xiàng)文件,則默認(rèn)是加密連接的。也可用 mysql 程序的 --skip-ssl 選項(xiàng)取消加密連接。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:MySQL安全配置(1)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)