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

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

        拓撲圖:

    wKiom1i2zc6Cf4b7AAGC0omV8Go838.jpg-wh_50

在主mysql創建SSL/RSA文件

    cd /usr/local/mysql/bin

    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

    查看錯誤日誌:

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

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 [email protected]:/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表中的數據


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章