MySQL adalah sistem database relasional open source yang bekerja pada banyak Sistem Operasi termasuk Windows, Linux, MacOS dan FreeBSD. Ini mungkin RDBMS OpenSource yang paling populer dan komponen utama dari LAMP dan LEMP Stacks. Ada banyak aplikasi yang bergantung pada MySQL seperti Wordpress, Joomla, TYPO3, phpBB dan masih banyak lagi
Dalam tutorial ini, saya akan menunjukkan kepada Anda langkah demi langkah untuk mengonfigurasi MySQL dengan aman untuk koneksi jarak jauh. Saat Anda perlu mengakses MySQL dari jarak jauh, Anda harus menggunakan VPN karena MySQL tidak mengenkripsi data yang ditransfer atau Anda dapat mengonfigurasi MySQL untuk menggunakan SSL, seperti yang akan saya tunjukkan dalam tutorial ini. Dalam konfigurasi ini, hanya pengguna dengan file sertifikat SSL yang benar yang diizinkan untuk terhubung ke server MySQL, dan lalu lintas dienkripsi. Kami akan menginstal MySQL versi terbaru, dan kemudian mengkonfigurasi SSL untuk koneksi jarak jauh. Untuk sistem dasarnya, saya akan menggunakan server CentOS 7
Apa yang akan kita lakukan
- Instal MySQL
- Konfigurasi Kata Sandi Root MySQL
- Hasilkan File Sertifikat SSL Baru yang Ditandatangani Sendiri
- Aktifkan SSL untuk MySQL
- Aktifkan Koneksi Jarak Jauh
- Pengujian
Prasyarat
- Server CentOS7
- Hak istimewa root
Langkah 1 - Instal MySQL
Dalam tutorial ini, kita akan menggunakan MySQL 5. 7, versi terbaru saat ini. Itu diinstal dari repositori MySQL, jadi kita harus menambahkan repositori CentOS baru ke sistem terlebih dahulu
Tambahkan repositori baru untuk MySQL dengan perintah yum di bawah ini
yum localinstall //dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpmAnda akan diminta untuk menginstal paket baru, ketik 'y' dan tekan 'Enter' untuk konfirmasi
Sekarang Anda dapat menginstal MySQL versi terbaru 5. 7 ke server seperti ini
yum -y install mysql-community-server_Setelah instalasi selesai, mulai layanan MySQL dan aktifkan agar berjalan secara otomatis saat boot dengan perintah systemctl
systemctl start mysqldsystemctl enable mysqld
Pastikan MySQL berjalan dengan memeriksa port yang digunakan oleh MySQL (3306). Periksa dengan perintah netstat di bawah
netstat -plntuMySQL telah diinstal pada CentOS 7 dari repositori MySQL
Langkah 2 - Konfigurasi Kata Sandi Root MySQL
Secara default, MySQL5. 7 menghasilkan kata sandi root default untuk Anda saat memulai layanan pertama kali. Kata sandi disimpan dalam file log MySQL '/var/log/mysqld. catatan'
Untuk melihat password root MySQL default, Anda dapat menggunakan perintah grep di bawah ini
grep 'temporary' /var/log/mysqld.log_Anda akan melihat hasil mirip dengan yang di bawah ini, kata sandi default saya adalah 'wxtX8Te&Uh1K'
A temporary password is generated for [email protected]: wxtX8Te&Uh1KSambungkan ke shell MySQL dengan kata sandi default dan ganti kata sandi dengan kata sandi Anda sendiri
mysql -u root -pTYPE IN DEFAULT PASSWORD_
Sekarang ganti kata sandi default dengan kata sandi Anda sendiri. Dalam tutorial ini, saya akan menggunakan '[email protected]' sebagai kata sandi root MySQL yang baru. Jalankan kueri MySQL di bawah ini
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]';flush privileges;
exit;
Sekarang Anda dapat terhubung kembali dengan kata sandi baru '[email protected]'
mysql -u root -pTYPE NEW PASSWORD '[email protected]'_
Langkah 3 - Hasilkan File Sertifikat Baru yang Ditandatangani Sendiri
Secara default, MySQL5. 7 memiliki file sertifikat SSL sendiri di direktori '/var/lib/mysql'. Namun dalam tutorial ini, saya akan menunjukkan cara membuat file Sertifikat SSL Anda sendiri dengan OpenSSL, lalu mengonfigurasinya dengan MySQL
Pada langkah ini, kami akan membuat file sertifikat baru yang ditandatangani sendiri. Kami membutuhkan 3 sertifikat, Sertifikat CA, Sertifikat dan Kunci Server, Sertifikat dan Kunci Klien. Kami akan membuatnya dengan OpenSSL
Buat direktori baru untuk file sertifikat SSL '/etc/certs/' dan buka direktori tersebut
mkdir -p /etc/certscd /etc/certs_
Hasilkan sertifikat CA baru ca. pem
yum -y install mysql-community-server_0Selanjutnya, kita harus membuat sertifikat sisi server. Buat sertifikat server baru server-cert. pem dan kunci server. file pem. Hasilkan file sertifikat baru, hapus frasa sandi dan tandatangani dengan sertifikat CA
yum -y install mysql-community-server_1Sekarang buat file sertifikat untuk klien. Server MySQL hanya akan menerima koneksi jarak jauh dari klien yang memiliki file sertifikat ini. Hasilkan file sertifikat klien baru, hapus frasa sandi dan tandatangani menggunakan sertifikat CA
yum -y install mysql-community-server_2Catatan
Info sertifikat CA harus berbeda dari info klien dan server
Semua sertifikat yang kami perlukan untuk penyiapan ini telah dibuat. Sekarang kita dapat memverifikasi file sertifikat dengan perintah di bawah ini
yum -y install mysql-community-server_3Pastikan tidak ada error, hasilnya seperti di bawah ini
Semua file Sertifikat telah diverifikasi. Ubah pemilik direktori sertifikat menjadi pengguna 'mysql' dan ubah izin semua file kunci
yum -y install mysql-community-server_4Langkah 4 - Aktifkan SSL untuk MySQL
Pada langkah ini, kami akan mengaktifkan SSL untuk MySQL. Sebelum kita mulai mengonfigurasi dan mengaktifkan SSL di MySQL, kita perlu mencadangkan file sertifikat default ke direktori cadangan baru
Buat direktori cadangan baru 'mysql-certs' untuk semua sertifikat
yum -y install mysql-community-server_5Buka direktori '/var/lib/mysql' dan pindahkan semua sertifikat default ke direktori cadangan
yum -y install mysql-community-server_6Sekarang restart layanan MySQL
yum -y install mysql-community-server_7Selanjutnya, periksa SSL dari shell MySQL. Login ke mysql dengan kata sandi baru
TYPE NEW PASSWORD '[email protected]'_
Jalankan kueri di bawah ini agar kami dapat melihat status SSL untuk MySQL
yum -y install mysql-community-server_9Anda akan melihat status SSL 'DISABLED', dan pengguna root telah terhubung tanpa SSL
Selanjutnya, kita akan mengaktifkan koneksi SSL untuk MySQL. Kita harus mengedit file konfigurasi MySQL 'my. cnf' dengan vim
systemctl start mysqldsystemctl enable mysqld0
Di bagian '[mysqld]', rekatkan konfigurasi di bawah ini
systemctl start mysqldsystemctl enable mysqld1
Simpan file dan keluar dari vim, restart layanan MySQL
yum -y install mysql-community-server_7Sekarang login ke MySQL lagi dan periksa SSL
mysql -u root -pTYPE NEW PASSWORD '[email protected]'_
Jalankan kueri di bawah untuk memastikan nilai bagian SSL adalah 'YA'
systemctl start mysqldsystemctl enable mysqld_4
Anda akan melihat bahwa SSL untuk MySQL diaktifkan, tetapi pengguna root masih belum terhubung menggunakan koneksi SSL
Untuk memaksa semua koneksi pengguna lokal dengan SSL, edit file konfigurasi mysql 'my. cnf' lagi
systemctl start mysqldsystemctl enable mysqld0
Rekatkan konfigurasi di bawah ini ke akhir baris
systemctl start mysqldsystemctl enable mysqld6
Simpan dan keluar, lalu restart MySQL
yum -y install mysql-community-server_7Hubungkan ke MySQL lagi dan periksa koneksi dan SSL diaktifkan
systemctl start mysqldsystemctl enable mysqld_8
SSL telah diaktifkan dan koneksi lokal juga menggunakan SSL
Langkah 5 - Aktifkan Koneksi Jarak Jauh
Pada langkah-langkah di atas, kami telah mengaktifkan SSL untuk server MySQL, dan koneksi lokal terpaksa menggunakan SSL. Pada langkah ini, kami akan mengaktifkan koneksi jarak jauh untuk MySQL, tetapi kami hanya mengizinkan klien yang memiliki file sertifikat yang ditandatangani oleh CA kami untuk terhubung ke server MySQL
Edit file konfigurasi MySQL dengan vim
systemctl start mysqldsystemctl enable mysqld0
Rekatkan konfigurasi ini di bawah di akhir bagian '[mysqld]'
netstat -plntu0Simpan file dan keluar dari editor, restart MySQL
Selanjutnya, buat pengguna baru untuk koneksi jarak jauh. Saya akan membuat pengguna baru bernama 'hakase' dengan kata sandi '[email protected]' dan memberikan semua hak istimewa kepada pengguna 'hakase'. pengguna 'hakase' hanya akan dapat terhubung dengan kunci Sertifikat
netstat -plntu2Pengguna baru untuk koneksi jarak jauh telah dibuat
Catatan
Anda mungkin melihat '1 peringatan' di hasil kueri mysql. Itu hanya peringatan tentang penggunaan kueri ALTER USER alih-alih GRANT karena kueri 'GRANT' akan ditinggalkan dalam rilis berikutnya
Langkah 6 - Pengujian
Di bagian akhir tutorial ini, kita akan menguji apakah pengguna baru bernama 'hakase' dapat terhubung ke server MySQL dari jarak jauh dengan file sertifikat. Tiga sertifikat untuk klien harus diunduh
- Sertifikat CA - ca. pem
- Sertifikat klien - sertifikat klien. pem
- Kunci klien - kunci klien. pem
Saya telah masuk ke sistem Linux lain dan menginstal paket klien-mysql di sana. Kemudian saya mengunduh semua file sertifikat klien dengan SCP. Sekarang saya akan terhubung ke server MySQL dengan file sertifikat
netstat -plntu_310. 0. 15. 11 = alamat IP Server MySQL
Anda dapat melihat status koneksi dengan kueri ini di bawah
netstat -plntu_4Hakase pengguna dengan alamat IP 10. 0. 15. 10 Terhubung ke server MySQL dengan alamat IP 10. 0. 15. 11, koneksi melalui TCP/IP pada port 3306 dan menggunakan SSL
Saat Anda mencoba terhubung tanpa file Sertifikat, Anda akan melihat kesalahan seperti di bawah ini
Selanjutnya, saya akan menguji dengan GUI MySQLWorkbench dari host saya
Di bawah ini adalah konfigurasi saya - Pengaturan Parameter
Konfigurasi SSL - Mengatur SSL
Dan di bawah hasil koneksi dengan file SSL Client Certificate
Pengguna baru berhasil terhubung dari jarak jauh ke server database MySQL dengan koneksi SSL. Saat pengguna mencoba terhubung tanpa file Sertifikat, hasilnya akan 'ditolak'. Instalasi dan Konfigurasi MySQL dengan koneksi SSL telah berhasil