mysql基於ssl安全鏈接的主從複製

        SSL安全套接層,即其繼任者傳輸層安全是爲網絡通訊提供安全即數據完整性的一種安全協議。複製默認是明文進行傳輸,經過SSL加密能夠大大提升數據的安全性。mysql

        拓撲圖:
sql

    wKiom1i2zc6Cf4b7AAGC0omV8Go838.jpg-wh_50

在主mysql建立SSL/RSA文件數據庫

    cd /usr/local/mysql/bin
vim

    mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/dsata    建立新的SSL文件
安全

wKioL1i2vTKh6mvSAAE4Yr9q9-g741.jpg-wh_50

    重啓mysqld服務:
服務器

            systemctl restart mysqld
網絡

    查看錯誤日誌:
tcp

            vim /usr/local/mysql/data/mysqld.err
ide

wKiom1i2vkqD_A1LAACYiiIj6ks623.jpg-wh_50

    根據報錯信息顯示不能得到私鑰,咱們就能夠查看這個文件,用命令ls
測試

wKioL1i2vs_Tj8_5AABgpSKycaU011.jpg-wh_50

    沒有r權限,因此使用chmod設置權限。

        chmod +r /usr/local/mysql/data/server-key.pem

    而後設置完權限,重啓mysql服務。登陸mysql,執行show variables like '%ssl%';

wKiom1i2wEiiXRZIAAC7D9aqM00785.jpg-wh_50

    注意:啓用mysql支持ssl安全鏈接主要用於mysql主從複製,internet複製建議採用ssl鏈接。

    在主mysql上的操做完成後,再生成一個複製帳號:REQUIRE SSL

wKiom1i2wXSD2u4tAAEn24uOf2s870.jpg-wh_50

    在mysql上啓用二進制日誌並重啓mysql服務

        vim /etc/my.cnf

        log-bin=mysql-bin    在mysql主配置文件添加此行

        systemct restart mysqld

    查看主mysql的狀態:show master status;

wKiom1i2wq_TscnmAACVcEaBWmk606.jpg-wh_50

    須要記住file和position的值,由於從服務器中須要

    防火牆容許3306/tcp通訊

        firewall-cmd --permanent --add-port=3306/tcp

        firewall-cmd --reload

    從服務器上配置主配置文件

wKiom1i2w_DjATLwAADMpmYILZc739.jpg-wh_50

        注意的是主從服務器的主配置文件中的server_id要惟一。不能重複

    把主mysql生成的證書給了從服務器

        scap ca.pem client-cert.pem client-key.pem root@10.0.0.2:/usr/local/mysql/data

    設置client-key.pem的r權限

        chmod +r client-key.pem

    配置SSL:修改主配置文件/etc/my.cnf,添加內容

wKioL1i2xX6BsANXAABtscP8x4Y911.jpg-wh_50

    重啓mysqld服務

    而後查看是否有錯誤日誌

    查看SSL是否被支持

wKiom1i2xc2wHlRgAAC7D9aqM00458.jpg-wh_50

    在配置主從複製以前能夠在mysql上用SSL鏈接主服務器測試

        cd /usr/local/mysql/data

        mysql --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssk-key=client-key.pem -u rep -p123456 -h 10.0.0.1

wKioL1i2xsvwevb1AAFwQz3bNho408.jpg-wh_50


wKioL1i2xzvQVBiaAAEY8MV_EIw508.jpg-wh_50

    SSL測試鏈接成功,而且登入的SSL協議是:Cipher in use is DHE-RSA-AES256-SHA

    最後開始配置主從replicate,登陸從mysql

wKiom1i2yDuwKuUhAAC4BmSwkQQ088.jpg-wh_50

    啓動從:

wKioL1i2yNbQxyg5AABCQFkRHBk520.jpg-wh_50

    查看從的狀態:

        slave_IO_Running:Yes

        Slave_SQL_Running:Yes

wKiom1i2yYGScPLCAAFgdXXMrBs216.jpg-wh_50

測試:能夠在主服務器上建立一個表,表中插入一行數據。

            create database db1    建立數據庫

            use db1    進入db1數據庫

            create table test (id int);    建立一個名爲test的表

            insert into test values(1);    向表test中插入數據1

            select * from test;    查看test表

        在從服務器上

            show databases;    查看全部數據庫

            use db1;    進入db1數據庫

            show tables;    查看數據庫中的全部表

            select * from test;    查看test表中的數據

相關文章
相關標籤/搜索