新聞中心
介紹
mysql是由Oracle公司開(kāi)發(fā)的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng)。

SQL代表結(jié)構(gòu)化查詢語(yǔ)言,它是用于訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)化語(yǔ)言。 當(dāng)前版本的語(yǔ)言遵循SQL:2003標(biāo)準(zhǔn)。
MySQL是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。 這意味著數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)在單獨(dú)的表中,結(jié)構(gòu)被組織成為速度優(yōu)化的物理文件。 用戶使用SQL來(lái)設(shè)置管理不同數(shù)據(jù)字段之間關(guān)系的規(guī)則。
安裝 MySQL
# yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
該命令將添加可以用于安裝數(shù)據(jù)庫(kù)系統(tǒng)的MySQL存儲(chǔ)庫(kù):
# yum install -y mysql-community-server
在安裝過(guò)程結(jié)束時(shí),使用systemd工具啟動(dòng)MySQL:
# systemctl start mysqld
檢查MySQL狀態(tài):
mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) ...
MySQL可以通過(guò)執(zhí)行netstat工具看到3306端口,
# netstat -plntu | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 8776/mysqld
MySQL配置
在MySQL服務(wù)器的初始啟動(dòng)時(shí),將創(chuàng)建一個(gè)超級(jí)用戶帳戶('root'@'localhost),并將默認(rèn)密碼設(shè)置并存儲(chǔ)在錯(cuò)誤日志文件中。 通過(guò)執(zhí)行以下命令顯示此密碼:
# grep 'temporary password' /var/log/mysqld.log
輸出為:
[Note] A temporary password is generated for root@localhost: en>_g6syXIXq
第一步是更改root密碼。
登錄到MySQL shell:
# mysql -u root -p
輸入使用上一個(gè)命令顯示的自動(dòng)生成的密碼。
接下來(lái),使用以下查詢更改密碼:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'RootStrongPassword1!';
刷新權(quán)限并退出:
mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> EXIT; Bye
為MySQL啟用SSL
注意:在生產(chǎn)中,始終使用更安全和“personal”的證書(shū)。
從MySQL shell檢查SSL。
# mysql -u root -p mysql> SHOW GLOBAL VARIABLES LIKE '%ssl%'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | ca.pem | | ssl_capath | | | ssl_cert | server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | server-key.pem | +---------------+-----------------+ 9 rows in set (0.01 sec)
檢查SSL狀態(tài):
mysql> STATUS; -------------- mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper Connection id: 4 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.18 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 27 min 25 sec Threads: 1 Questions: 12 Slow queries: 0 Opens: 113 Flush tables: 1 Open tables: 106 Queries per second avg: 0.007 --------------
如您所見(jiàn),SSL沒(méi)有被使用。 所以,下一步是啟用它。
在MySQL配置文件中啟用SSL
編輯MySQL配置文件:
# $EDITOR /etc/my.cnf
在[mysqld]部分,粘貼以下內(nèi)容:
ssl-ca=/var/lib/mysql/ca.pem ssl-cert=/var/lib/mysql/server-cert.pem ssl-key=/var/lib/mysql/server-key.pem
保存,退出并重啟MySQL服務(wù)。
# systemctl restart mysqld
再次檢查MySQL shell中的SSL狀態(tài)。
# mysql -u root -p mysql> STATUS; mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper Connection id: 5 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.18 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 1 min 2 sec Threads: 1 Questions: 6 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.096
啟用客戶端
此時(shí)尚未使用SSL。 這是因?yàn)槲覀冃枰ㄟ^(guò)SSL強(qiáng)制所有的客戶端連接。 所以,退出MySQL shell并再次編輯my.cnf文件。
# $EDITOR /etc/my.cnf
在文件末尾粘貼以下內(nèi)容:
[client] ssl-ca=/var/lib/mysql/ca.pem ssl-cert=/var/lib/mysql/client-cert.pem ssl-key=/var/lib/mysql/client-key.pem
再次保存,退出并重新啟動(dòng)MySQL:
# systemctl restart mysqld
檢查MySQL狀態(tài)如上所述:
mysql> STATUS -------------- mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper Connection id: 3 Current database: Current user: root@localhost SSL: Cipher in use is DHE-RSA-AES256-SHA Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.18 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 UNIX socket: /var/lib/mysql/mysql.sock Uptime: 1 min 32 sec Threads: 1 Questions: 6 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.065
現(xiàn)在啟用,連接通過(guò)它進(jìn)行保護(hù)。
啟用遠(yuǎn)程連接
編輯MySQL配置文件:
# $EDITOR /etc/my.cnf
在[mysqld]部分的末尾粘貼以下行:
bind-address = * require_secure_transport = ON
保存,退出并重啟MySQL。
# systemctl restart mysqld
為遠(yuǎn)程連接創(chuàng)建新用戶
此時(shí),SSL和遠(yuǎn)程連接已啟用。 接下來(lái)要做的是創(chuàng)建一個(gè)新的MySQL用戶:
# mysql -u root -p
創(chuàng)建一個(gè)新用戶:
mysql> CREATE USER 'gmolica'@'%' IDENTIFIED BY 'Unixmen1!' REQUIRE X509; mysql> GRANT ALL PRIVILEGES ON *.* TO 'gmolica'@'%' IDENTIFIED BY 'Unixmen1!' REQUIRE X509; mysql> FLUSH PRIVILEGES; mysql> EXIT;
總結(jié)
通過(guò)上一步,我們已經(jīng)為MySQL配置好了。 現(xiàn)在,可以使用創(chuàng)建的憑據(jù)遠(yuǎn)程登錄數(shù)據(jù)庫(kù)系統(tǒng)。 當(dāng)然,客戶端必須具有證書(shū)副本才能通過(guò)SSL連接。
新聞名稱(chēng):CentOS7上安裝MySQL并配置遠(yuǎn)程安全連接
本文來(lái)源:http://www.dlmjj.cn/article/dhhsdjc.html


咨詢
建站咨詢
