Catatan :Artikel ini mengasumsikan bahwa Anda telah menginstal dan mengkonfigurasi MySQL®di server Anda.
Aktifkan SSL untuk MySQL
Sebelum menginstal sertifikat SSL Anda di database MySQL Anda, buat cadangan dan hapus file sertifikat default. Anda dapat memilih nama direktori Anda sendiri untuk langkah ini. Contoh ini menggunakan mysql-backup-certs direktori. Untuk melakukan langkah-langkah berikut, alihkan ke pengguna root.
-
Buat direktori cadangan baru:
mkdir -p ~/mysql-backup-certs/
-
Buka /var/lib/mysql direktori dan pindahkan setiap sertifikat default ke direktori cadangan yang baru Anda buat:
cd /var/lib/mysql mv ca.pem ca-key.pem ~/mysql-backup-certs/ mv server-key.pem server-cert.pem ~/mysql-backup-certs/ mv client-key.pem client-cert.pem ~/mysql-backup-certs/ mv private_key.pem public_key.pem ~/mysql-backup-certs/
-
Mulai ulang MySQL dengan menjalankan salah satu perintah berikut:
service mysqld restart
atau
systemctl restart mysqld
-
Gunakan salah satu dari perintah berikut untuk memeriksa
mysqld
status:service mysqld status
atau
systemctl status mysqld
-
Periksa status SSL dari dalam shell MySQL. Untuk melakukan ini, masuk ke MySQL sebagai pengguna root:
mysql -u root -p (Enter MySQL root password)
-
Jalankan kueri berikut untuk memeriksa status SSL di MySQL:
SHOW GLOBAL VARIABLES LIKE '%ssl%'; STATUS;
Catatan :Anda tidak perlu menggunakan huruf kapital. Contoh menggunakannya untuk membedakan sintaks perintah dari apa yang Anda kueri.
Pada perintah sebelumnya, Anda ingin melihat status SSL sebagaidinonaktifkan , dan pengguna root terhubung tanpa SSL.
-
Untuk mengaktifkan koneksi SSL dengan sertifikat kami sendiri dengan mengeditmy.cnf file, jalankan salah satu perintah berikut:
vim /etc/my.cnf
atau
nano /etc/my.cnf
-
Temukan [mysqld] dan tambahkan pengaturan konfigurasi berikut:
# You will use your own SSL certificates directory for these. The following are examples only. ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/server-cert.pem ssl-key=/etc/pki/tls/private/server-key.pem
-
Simpan dan keluar dari file. Kemudian, restart MySQL dengan menjalankan salah satu perintah berikut:
service mysqld restart
atau
systemctl restart mysqld
-
Setelah MySQL dicadangkan, masuk kembali ke shell MySQL:
mysql -u root -p (Enter MySQL root password)
-
Jalankan lagi kueri SSL:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
-
Jika nilai bagian SSL menunjukkan ya , SSL diaktifkan untuk MySQL. Namun, Anda masih melihat bahwa pengguna root tidak terhubung dengan menggunakan SSL. Ini normal. Jika Anda ingin mengubah ini, Anda dapat memaksa semua koneksi pengguna localhost untuk menggunakan SSL. Anda perlu mengedit my.cnf file lagi dengan menjalankan salah satu perintah berikut:
vim /etc/my.cnf
atau
nano /etc/my.cnf
-
Masukkan konfigurasi berikut di akhir:
[client] ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/client-cert.pem ssl-key=/etc/pki/tls/private/client-key.pem
-
Mulai ulang MySQL. Setelah MySQL dicadangkan, masuk ke shell MySQL lagi:
mysql -u root -p (Enter MySQL root password)
-
Jalankan lagi kueri berikut:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
Jika Anda hanya ingin mengaktifkan koneksi SSL dari koneksi localhost, maka Anda sudah selesai. Namun, jika Anda juga ingin mengaktifkan remotelogin untuk MySQL, baca terus.
Aktifkan koneksi jarak jauh untuk MySQL
Instruksi berikut mengaktifkan koneksi jarak jauh untuk MySQL. Selain itu, pengguna jarak jauh ini harus memiliki file sertifikat yang ditandatangani oleh otoritas sertifikat (CA) Anda untuk terhubung.
Contoh ini menunjukkan (dengan menggunakan tiga tanda bintang:***
) pengaturan yang memaksa tanda tangan CA jika Anda ingin mengizinkan koneksi jarak jauh tanpa CA.
-
Gunakan editor teks baris perintah pilihan Anda untuk mengedit /etc/my.cnf file lagi:
vim /etc/my.cnf
atau
nano /etc/my.cnf
-
Sertakan yang berikut ini di bagian bawah [mysqld] bagian:
bind-address = * require_secure_transport = ON ***
-
Simpan dan keluar dari file menggunakan
:wq
. -
Mulai ulang MySQL. Konfirmasikan MySQL berjalan lagi. Anda harus masuk ke shell MySQL lagi.
-
Setelah Anda masuk, buat pengguna dengan menjalankan salah satu perintah berikut:
CREATE USER 'example'@'%' IDENTIFIED BY 'password';
atau
CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; ***
-
Setelah Anda memberikan izin kepada pengguna ini ke database yang Anda inginkan agar mereka memiliki izin, hapus hak istimewa untuk memperbarui izin MySQL dari dalam shell:
flush privileges;
Anda mungkin telah memperhatikan bahwa %
terletak setelah @
simbol di create user
sebelumnya perintah adalah apa yang sebenarnya menunjukkan pengguna sebagai pengguna jarak jauh.
Sebagai bonus, jika Anda memiliki pengguna yang mengakses MySQL hanya dari alamat IP statis, Anda dapat memasukkan alamat IP tersebut sebagai ganti %
untuk memungkinkan pengguna tersebut mengakses MySQL dari alamat IP spesifik mereka. Namun, perhatikan bahwa pengguna dapat mengakses database hanya dari alamat IP tersebut. Jika alamat IP mereka berubah, mereka tidak lagi memiliki akses. Itulah sebabnya sebagian besar admin menggunakan pengaturan jarak jauh umum %
sebagai gantinya.
Anda sekarang telah mengaktifkan koneksi SSL serta akses jarak jauh ke database MySQL Anda.