mysql基於ssl的主從複製

當mysql/mariadb跨越互聯網進行復制時別人能夠竊取到mysql/mariadb的複製信息, 這些信息是明文的, 所以存在不安全性, 這裏經過ssl對複製的信息進行加密mysql

     1. 建立證書中心sql

在主服務器上建立證書中心vim

cd /etc/pki/CA
生成私鑰
(umask 077;openssl genrsa -out private/cakey.pem 2048)

生成自簽名證書
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 7300

建立證書編號
mkdir certs crl newcerts
touch index.txt
echo 00 > serial


      2.  爲主服務器建立證書安全

服務器的名稱必須固定, 在申請證書時要輸入服務器名稱, 這書和服務器名稱對應;bash

建立私鑰
mkdir /usr/lcoal/mysql/ssl
cd /usr/local/mysql/ssl
(umask 077;openssl genrsa -out /etc/mysql/ssl/master.key 2048)
生成證書申請
openssl req -new -key master.key -out master.csr
在證書服務器上對master的證書進行簽發
openssl ca -in master.csr -out master.crt -days 365

     3. 建立從服務器證書服務器

(umask 077;openssl genrsa -out /etc/mysql/ssl/slave.key 2048)
openssl req -new -key slave.key -out slave.csr
將從服務器的證書申請文件複製到證書服務器上進行簽發
openssl ca -in slave.csr -out slave.crt -days 365

     4. ×××權限和mysql配置文件ide

將證書的公鑰cacert.pem複製到主從服務器的目錄下
cd /etc/mysql/ssl
cp /etc/pki/CA/cacert.pem ./
chown -R mysql.mysql master.crt master.key cacert.pem
chmod 600 master.crt master.key cacert.pem

vim /etc/my.cnf

log-bin=master-log
server-id=1
skip_name_resolve = ON
innodb_file_per_table = ON
ssl
ssl_ca      = /etc/mysql/ssl/cacert.pem
ssl_cert    = /etc/mysql/ssl/master.crt
ssl_key     = /etc/mysql/ssl/master.key

修改從服務器配置 
cd /etc/mysql/ssl
cp /etc/pki/CA/cacert.pem ./
chown -R mysql.mysql slave.crt slave.key cacert.pem
chmod 600 slave.crt slave.key cacert.pem

vim /etc/my.cnf

relay-log=relay-log
server-id=2
skip_name_resolve = ON
innodb_file_per_table = ON
ssl
ssl_ca      = /etc/mysql/ssl/cacert.pem
ssl_cert    = /etc/mysql/ssl/slave.crt
ssl_key     = /etc/mysql/ssl/slave.key

     5. 在主服務上建立複製用戶加密

MariaDB [(none)]> GTANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'10.1.52.%' IDENTIFIED BY 'replpass' REQUIRE SSL;
MariaDB [(none)]> FLUSH PRIVILEGES;
查看主服務器當前二進制位置
MariaDB [(none)]> SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000005 |     7918 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

     6. 在從服務器上開始複製    spa

MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST='10.1.52.11',
    -> MASTER_USER='repluser',
    -> MASTER_PASSWORD='replpass',
    -> MASTER_LOG_FILE='master-log.000001',
    -> MASTER_LOG_POS=495,
    -> MASTER_SSL=1,
    -> MASTER_SSL_CA='/etc/mysql/ssl/cacert.pem',
    -> MASTER_SSL_CERT='/etc/mysql/ssl/slave.crt',
    -> MASTER_SSL_KEY='/etc/mysql/ssl/slave.key';
MariaDB [(none)]> START SLAVE;

    7. 查看從服務器的狀態orm

MariaDB [(none)]> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.1.52.11
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-log.000005
          Read_Master_Log_Pos: 7918
               Relay_Log_File: relay-log.000002
                Relay_Log_Pos: 7940
        Relay_Master_Log_File: master-log.000005
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 7918
              Relay_Log_Space: 8228
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: Yes
           Master_SSL_CA_File: /etc/mysql/ssl/cacert.pem
           Master_SSL_CA_Path:
              Master_SSL_Cert: /etc/mysql/ssl/slave.crt
            Master_SSL_Cipher:
               Master_SSL_Key: /etc/mysql/ssl/slave.key
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
1 row in set (0.00 sec)
相關文章
相關標籤/搜索