SSL安全套接層,即其繼任者傳輸層安全是爲網絡通信提供安全即數據完整性的一種安全協議。複製默認是明文進行傳輸,通過SSL加密可以大大提高數據的安全性。
拓撲圖:
在主mysql創建SSL/RSA文件
cd /usr/local/mysql/bin
mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/dsata 創建新的SSL文件
重啓mysqld服務:
systemctl restart mysqld
查看錯誤日誌:
vim /usr/local/mysql/data/mysqld.err
根據報錯信息顯示不能獲得私鑰,我們就可以查看這個文件,用命令ls
沒有r權限,所以使用chmod設置權限。
chmod +r /usr/local/mysql/data/server-key.pem
然後設置完權限,重啓mysql服務。登錄mysql,執行show variables like '%ssl%';
注意:啓用mysql支持ssl安全連接主要用於mysql主從複製,internet複製建議採用ssl連接。
在主mysql上的操作完成後,再生成一個複製賬號:REQUIRE SSL
在mysql上啓用二進制日誌並重啓mysql服務
vim /etc/my.cnf
log-bin=mysql-bin 在mysql主配置文件添加此行
systemct restart mysqld
查看主mysql的狀態:show master status;
需要記住file和position的值,因爲從服務器中需要
防火牆允許3306/tcp通信
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
從服務器上配置主配置文件
注意的是主從服務器的主配置文件中的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,添加內容
重啓mysqld服務
然後查看是否有錯誤日誌
查看SSL是否被支持
在配置主從複製之前可以在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
SSL測試連接成功,並且登入的SSL協議是:Cipher in use is DHE-RSA-AES256-SHA
最後開始配置主從replicate,登錄從mysql
啓動從:
查看從的狀態:
slave_IO_Running:Yes
Slave_SQL_Running:Yes
測試:可以在主服務器上創建一個表,表中插入一行數據。
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表中的數據