MySQL-এ SSL/TLS ইনক্রিপশন ইমপ্লিমেন্ট করে ডেটা ট্রান্সমিশন সিকিউর করা যায়, যা হ্যাকিং, ফিশিং আটকে রক্ষা করে।
১. SSL স্ট্যাটাস চেক
mysql -u root -p mysql> SHOW VARIABLES LIKE '%ssl%'; -- have_ssl: DISABLED (ডিফল্ট)
২. SSL সার্টিফিকেট জেনারেট (OpenSSL)
mkdir /etc/certificates cd /etc/certificates # CA কি জেনারেট openssl genrsa 2048 > ca-key.pem # সার্ভার সার্টিফিকেট openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem # ক্লায়েন্ট সার্টিফিকেট openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
৩. MySQL সার্ভার কনফিগ (my.cnf)
[mysqld] ssl-ca=/etc/certificates/ca-cert.pem ssl-cert=/etc/certificates/server-cert.pem ssl-key=/etc/certificates/server-key.pem
৪. MySQL রিস্টার্ট এবং SSL ভেরিফাই
service mysqld restart mysql -u root -p mysql> SHOW VARIABLES LIKE '%ssl%'; -- have_ssl: YES, have_openssl: YES
৫. SSL-রিকোয়ার্ড ইউজার তৈরি
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ssl_user'@'%' IDENTIFIED BY 'password' REQUIRE SSL; mysql> FLUSH PRIVILEGES;
৬. ক্লায়েন্ট সাইড কনফিগারেশন
সার্ভার থেকে ক্লায়েন্ট সার্টিফিকেট কপি করুন:
scp /etc/certificates/client-*.pem root@client_ip:/etc/certificates/
ক্লায়েন্ট my.cnf:
[client] ssl-ca=/etc/certificates/ca-cert.pem ssl-cert=/etc/certificates/client-cert.pem ssl-key=/etc/certificates/client-key.pem
৭. SSL কানেকশন টেস্ট
mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h server_ip -u ssl_user -p # কানেকশন 후: mysql> STATUS; -- SSL: Cipher in use is DHE-RSA-AES256-SHA (ইনক্রিপশন এক্টিভ)
এই সেটআপে MySQL ক্লায়েন্ট-সার্ভার কমিউনিকেশন ফুলি ইনক্রিপ্টেড হয়, ডেটা চুরি বা ম্যান-ইন-দ-মিডল আটকে থেকে রক্ষা পায়।