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

SQL代表結構化查詢語言,它是用于訪問數(shù)據(jù)庫的標準化語言。 當前版本的語言遵循SQL:2003標準。
MySQL是一個關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。 這意味著數(shù)據(jù)庫將數(shù)據(jù)存儲在單獨的表中,結構被組織成為速度優(yōu)化的物理文件。 用戶使用SQL來設置管理不同數(shù)據(jù)字段之間關系的規(guī)則。
安裝 MySQL
# yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
該命令將添加可以用于安裝數(shù)據(jù)庫系統(tǒng)的MySQL存儲庫:
# yum install -y mysql-community-server
在安裝過程結束時,使用systemd工具啟動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可以通過執(zhí)行netstat工具看到3306端口,
# netstat -plntu | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 8776/mysqld
MySQL配置
在MySQL服務器的初始啟動時,將創(chuàng)建一個超級用戶帳戶('root'@'localhost),并將默認密碼設置并存儲在錯誤日志文件中。 通過執(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
輸入使用上一個命令顯示的自動生成的密碼。
接下來,使用以下查詢更改密碼:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'RootStrongPassword1!';
刷新權限并退出:
mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> EXIT; Bye
為MySQL啟用SSL
注意:在生產(chǎn)中,始終使用更安全和“personal”的證書。
從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 --------------
如您所見,SSL沒有被使用。 所以,下一步是啟用它。
在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服務。
# 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
啟用客戶端
此時尚未使用SSL。 這是因為我們需要通過SSL強制所有的客戶端連接。 所以,退出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
再次保存,退出并重新啟動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)在啟用,連接通過它進行保護。
啟用遠程連接
編輯MySQL配置文件:
# $EDITOR /etc/my.cnf
在[mysqld]部分的末尾粘貼以下行:
bind-address = * require_secure_transport = ON
保存,退出并重啟MySQL。
# systemctl restart mysqld
為遠程連接創(chuàng)建新用戶
此時,SSL和遠程連接已啟用。 接下來要做的是創(chuàng)建一個新的MySQL用戶:
# mysql -u root -p
創(chuàng)建一個新用戶:
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;
總結
通過上一步,我們已經(jīng)為MySQL配置好了。 現(xiàn)在,可以使用創(chuàng)建的憑據(jù)遠程登錄數(shù)據(jù)庫系統(tǒng)。 當然,客戶端必須具有證書副本才能通過SSL連接。
標題名稱:CentOS7上安裝MySQL并配置遠程安全連接
文章出自:http://m.fisionsoft.com.cn/article/dhhsdjc.html


咨詢
建站咨詢
