MySQL adalah sistem basis data relasional sumber terbuka 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. Banyak aplikasi bergantung pada MySQL seperti WordPress, Joomla, TYPO3, phpBB, dan banyak lagi.
Beberapa fitur baru telah ditambahkan ke MySQL 8 termasuk, dukungan JSON, Kamus Data Transaksional, konfigurasi runtime persisten, Penyimpanan Dokumen, Petunjuk Pengoptimal, peran SQL, CTE, fungsi jendela, indeks Tak Terlihat, dan banyak lagi.
Apa yang akan Anda pelajari?
Dalam tutorial ini, Anda akan mempelajari beberapa hal yang berhubungan dengan server MySQL, dan di bawah ini adalah rincian tentang:
- Instal MySQL Server 8 di Debian Buster 10
- Mengatur Kata Sandi Root MySQL
- Penyebaran Server MySQL yang Aman (Ubah Alamat Bind, Port, dll.)
- Siapkan SSL dan Aktifkan Koneksi Jarak Jauh untuk Server MySQL
- Instal dan Konfigurasi phpMyAdmin
- Kueri Dasar MySQL untuk Membuat Pengguna, Basis Data, dll
- Mengatur cadangan otomatis database MySQL
Prasyarat
Kami akan menginstal MySQL Server 8.04 pada Debian Buster 10 terbaru dengan 2GB RAM dan 4 CPU untuk panduan ini. Selain itu, kita memerlukan hak akses root untuk menginstal paket dan mengedit konfigurasi sistem.
Langkah 1 - Tambahkan Repositori MySQL
Untuk tutorial ini, kita akan menginstal MySQL Server 8 dari repositori resmi MySQL. Untuk melakukannya, kita perlu menambahkan repositori resmi MySQL ke Server Debian kita.
Sebelum menambahkan repositori MySQL, instal paket 'GnuPG' menggunakan perintah apt di bawah ini.
sudo apt install gnupg -y
Setelah semua instalasi selesai, unduh repositori MySQL APT dan tambahkan ke sistem Anda.
wget -q http://repo.mysql.com/mysql-apt-config_0.8.15-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb
Biarkan repositori sebagai default dan pilih 'OK '.
Dan repositori MySQL resmi telah ditambahkan.
Selanjutnya, perbarui semua repositori yang tersedia di sistem Debian menggunakan perintah berikut.
sudo apt update
Dan Anda akan mendapatkan repositori MySQL resmi pada daftar di bawah ini.
Seperti yang terlihat, repositori MySQL resmi telah ditambahkan, dan kami siap untuk menginstal MySQL Server 8.0 ke Debian Buster 10.
Langkah 2 - Instal Server MySQL
Untuk menginstal MySQL Server 8.0 ke sistem Debian, jalankan perintah apt di bawah ini.
sudo apt install mysql-server
Sekarang ketik kata sandi root untuk instalasi MySQL Anda dan pilih 'OK '.
Ulangi kata sandi untuk pengguna root MySQL Anda.
Setelah itu, Anda akan diminta untuk mengkonfigurasi plugin otentikasi default MySQL. Pilih 'Enkripsi Kata Sandi Kuat ' seperti yang disarankan dan pilih 'Oke '.
Dan instalasi MySQL Server 8.0 selesai.
Sekarang periksa layanan MySQL menggunakan perintah berikut.
systemctl is-enabled mysql
systemctl status mysql
Di bawah ini adalah hasil yang akan Anda dapatkan.
Akibatnya, layanan MySQL aktif dan berjalan di Server Debian. Layanan akan berjalan secara otomatis pada setiap boot sistem.
Langkah 3 - Amankan Penerapan MySQL menggunakan mysql_secure_password
Pada langkah ini, kami akan meningkatkan keamanan instalasi server MySQL menggunakan 'mysql_secure_installation ' alat baris perintah.
'mysql_secure_installation ' akan membantu Anda meningkatkan penerapan MySQL Anda dari berbagai aspek seperti mengatur kekuatan kata sandi, menonaktifkan akses jarak jauh, dan menghapus pengguna anonim default dan database pengujian.
Sekarang jalankan 'mysql_secure_installation ' pada shell Anda.
mysql_secure_installation
Pada awal instalasi MySQL, Anda telah mengonfigurasi kata sandi root untuk MySQL. Sekarang ketik kata sandi untuk melanjutkan ke proses.
Enter the password for user root: TYPE YOUR MYSQL ROOT PASSWORD
Setelah itu, ketik 'Y ' untuk mengonfigurasi 'VALIDASI SANDI ' komponen.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of the password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
Sekarang pilih tingkat kebijakan validasi kata sandi untuk semua pengguna. Ketik '2 ' untuk menyiapkan 'KUAT ' kebijakan tingkat sandi.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters, and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.
Sekarang perintah 'mysql_secure_installation' akan memeriksa kekuatan kata sandi Anda saat ini. Seperti yang dapat dilihat, kekuatan kata sandi kami saat ini adalah '50 '. Sekarang ketik 'Y ' untuk mengubah kata sandi saat ini dengan kata sandi baru yang lebih kuat.
Estimated strength of the password: 50
Change the password for root? ((Press y|Y for Yes, any other key for No) : Y
Sekarang ketikkan kata sandi Anda yang kuat dan pastikan skornya 100 , lalu ketik 'Y ' untuk melanjutkan dengan sandi baru.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided? (Press y|Y for Yes, any other key for No) : Y
Akibatnya, komponen MySQL 'VALIDATE PASSWORD' telah dikonfigurasi dengan kebijakan kata sandi yang kuat, dan kata sandi MySQL baru telah dibuat.
Selanjutnya, Anda akan diminta untuk menghapus pengguna Anonim default. Ketik 'Y ' untuk menghapus pengguna anonim default untuk instalasi Anda.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without creating a user account. This is intended only for testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Selanjutnya, ketik 'Y ' lagi untuk menonaktifkan login jarak jauh MySQL dan jika Anda ingin server MySQL hanya dapat diakses secara lokal.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Setelah itu, hapus 'test' database default dari Server MySQL Anda. Ketik 'Y ' dan tekan Enter untuk melanjutkan.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Selanjutnya, ketik 'Y' lagi untuk memuat ulang tabel hak istimewa. Akibatnya, dan perubahan konfigurasi MySQL baru telah diterapkan.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Hasilnya, Secure MySQL Server Deployment menggunakan skrip 'mysql_secure_installation' telah selesai. Dan pada tahap ini, Anda telah mengaktifkan komponen 'VALIDATE PASSWORD' dengan kebijakan kata sandi kuat level '2', juga kata sandi root kuat baru untuk MySQL telah dikonfigurasi.
Langkah 4 - Amankan Server MySQL Menggunakan Konfigurasi Tambahan
Untuk tutorial ini, kami akan menambahkan konfigurasi tambahan untuk meningkatkan penyebaran Server MySQL. Kami akan menentukan bind-address Server MySQL, mengubah port default, menonaktifkan memuat file data, dan menyiapkan kebijakan kedaluwarsa kata sandi untuk semua pengguna MySQL.
Sekarang masuk ke direktori '/etc/mysql/conf.d/' dan buat konfigurasi baru 'mysqld.cnf' menggunakan editor vim.
cd /etc/mysql/conf.d/
vim mysqld.cnf
Rekatkan konfigurasi berikut ke dalamnya.
[mysqld]
# MySQL running on 127.0.0.1 with port 8320
bind-address=127.0.0.1
port=8320
# Disable LOAD DATA LOCA
local-infile=0
# Password Expiration to 60 Days
default_password_lifetime=60
# MySQLX Plugin running on 127.0.0.1 with port 8321
mysqlx_bind_address=127.0.0.1
mysqlx_port=8321
Simpan dan tutup.
Selanjutnya, restart layanan MySQL dan periksa port yang terbuka pada sistem menggunakan perintah berikut.
systemctl restart mysql
ss -plnt
Di bawah ini adalah hasil yang akan Anda dapatkan.
Seperti yang dapat dilihat, Server MySQL aktif dan berjalan pada alamat IP lokal '127.0.0.1' pada port TCP non-default '8320'.
Selanjutnya, untuk login ke shell MySQL dengan custom port, Anda dapat menggunakan perintah 'mysql' dengan opsi '-P port' seperti di bawah ini.
mysql -u root -P 8320 -p
Ketik kata sandi root untuk Server MySQL.
Setelah Anda masuk, jalankan kueri berikut untuk memeriksa konfigurasi port Server MySQL.
show variables like 'port';
Dan Anda akan mendapatkan Server MySQL berjalan pada custom port '8320' seperti di bawah ini.
Hasilnya, Anda telah mengonfigurasi Server MySQL untuk berjalan pada alamat IP lokal '127.0.0.1' dengan port TCP khusus '8320'.
Langkah 5 - Amankan dan Aktifkan Koneksi Jarak Jauh MySQL menggunakan SSL
Misalkan Anda ingin menyebarkan Server MySQL di jaringan internal dan mengizinkan host lain di jaringan yang sama untuk mengakses database di Server MySQL. Dalam hal ini, disarankan untuk mengaktifkan SSL untuk penerapan Server MySQL Anda.
Pada langkah ini, Anda akan mempelajari cara mengatur dan mengaktifkan SSL dan akses jarak jauh di Server MySQL.
Buat Sertifikat SSL
Secara default, MySQL Server 8.0 menghasilkan sertifikat SSL secara otomatis selama instalasi. Semua sertifikat SSL default tersedia di direktori '/var/lib/mysql'.
Untuk langkah ini, kami akan membuat sertifikat SSL baru untuk Server MySQL menggunakan 'mysql_ssl_rsa_setup ' alat baris perintah.
Sekarang buat direktori SSL baru '/etc/mysql/certs' dan ubah kepemilikan direktori tersebut menjadi pengguna 'mysql'.
mkdir -p /etc/mysql/certs/
sudo chown -R mysql:mysql /etc/mysql/certs
Selanjutnya, buat sertifikat SSL baru untuk Server MySQL menggunakan perintah berikut. Dan pastikan untuk mengubah '--suffix=STRING ' dengan Nama Umum Anda.
sudo mysql_ssl_rsa_setup --suffix=HakasMySQLSrv --uid=mysql --datadir=/etc/mysql/certs/
Setelah selesai, sertifikat SSL baru untuk Server MySQL telah dibuat di direktori '/etc/mysql/certs'.
Periksa sertifikat SSL Anda menggunakan perintah berikut.
ls -lah /etc/mysql/certs/
openssl verify -CAfile /etc/mysql/certs/ca.pem /etc/mysql/certs/server-cert.pem /etc/mysql/certs/client-cert.pem
Di bawah ini adalah hasil yang akan Anda dapatkan.
Sertifikat SSL baru untuk Server MySQL telah dibuat ke direktori '/etc/mysql/certs/'.
Aktifkan SSL dan Server MySQL Akses Jarak Jauh
Untuk mengaktifkan SSL dan akses jarak jauh di Server MySQL, Anda perlu mengubah opsi 'bind-address' dengan alamat IP jaringan internal Anda dan menambahkan konfigurasi SSL untuk MySQL.
Sekarang masuk ke direktori '/etc/mysql/conf.d/' dan edit konfigurasi yang telah kita buat di atas 'mysqld.cnf' menggunakan editor vim.
cd /etc/mysql/conf.d/
vim mysqld.cnf
Ubah 'bind-address' dengan alamat IP internal Anda seperti di bawah ini.
bind-address=172.16.0.3
Selanjutnya, tambahkan konfigurasi SSL untuk Server MySQL di bawah ini dan ubah jalur SSL dengan milik Anda.
ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem
Selain itu, Anda dapat menentukan versi TLS dari semua klien Anda dan memaksa mereka untuk hanya menggunakan koneksi SSL aman menggunakan konfigurasi berikut.
#require_secure_transport=ON
tls_version=TLSv1.1,TLSv1.2
Simpan dan tutup.
Selanjutnya, restart layanan MySQL untuk menerapkan konfigurasi baru dan periksa alamat IP server MySQL menggunakan perintah berikut.
systemctl restart mysql
ss -plnt
Dan Anda akan mendapatkan Server MySQL aktif dan berjalan di alamat IP jaringan internal dengan SSL diaktifkan di dalamnya.
Siapkan Klien dan Uji Koneksi SSL
Untuk terhubung ke Server MySQL dari host/klien lain, Anda harus membuat pengguna MySQL baru, menyalin sertifikat klien, dan menambahkan konfigurasi MySQL untuk klien.
Masuk ke shell MySQL menggunakan perintah berikut.
mysql -u root -P 8320 -p
Sekarang buat pengguna MySQL baru untuk koneksi jarak jauh menggunakan kueri berikut.
CREATE USER 'remoteuser'@'%' IDENTIFIED WITH mysql_native_password BY 'MyRemoteUserPasswordMySQL39==' REQUIRE SSL;
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Ketik 'keluar ' untuk keluar dari shell MySQL.
Selanjutnya, Anda perlu menyalin CA dan sertifikat serta kunci klien ke mesin klien menggunakan perintah SCP seperti di bawah ini.
scp /etc/mysql/certs/ca.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-cert.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-key.pem [email protected]:/certificates/directory/
Setelah itu, sambungkan ke mesin klien Anda dan buat konfigurasi baru menggunakan editor vim.
vim ~/.my.cnf
Rekatkan konfigurasi klien MySQL seperti di bawah ini dan ubah jalur sertifikat SSL klien dengan milik Anda.
[client]
ssl-ca=/home/gpk/certs/ca.pem
ssl-cert=/home/gpk/certs/client-cert.pem
ssl-key=/home/gpk/certs/client-key.pem
Simpan dan tutup.
Untuk terhubung ke Server MySQL jarak jauh dengan port khusus, jalankan perintah 'mysql' di bawah ini.
mysql -u remoteuser -h 172.16.0.3 -P 8320 -p
Setelah Anda masuk, periksa status koneksi Anda menggunakan kueri berikut.
STATUS
SELECT * FROM performance_schema.session_status
WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');
Di bawah ini adalah hasil yang akan Anda dapatkan.
Seperti yang terlihat, Anda telah masuk dengan koneksi aman SSL TLSv1.2 ke Server MySQL.
Akibatnya, akses jarak jauh dengan koneksi SSL aman untuk Server MySQL telah diaktifkan.
Langkah 6 - Instal dan Konfigurasi phpMyAdmin
Pada langkah ini, Anda akan belajar cara menginstal phpMyAdmin terbaru dengan server web Apache. Anda juga akan mempelajari cara terhubung ke Server MySQL pada host jarak jauh dengan port khusus dan kehilangan secara aman melalui SSL dari phpMyAdmin.
Sebelum melangkah lebih jauh, instal beberapa dependensi paket menggunakan perintah apt di bawah ini.
sudo apt install apache2 libapache2-mod-php php-imagick php-phpseclib php-php-gettext php-common php-mysql php-gd php-imap php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp unzip
Selanjutnya, buka direktori '/var/www/html' dan unduh kode sumber phpMyAdmin terbaru.
cd /var/www/html/
wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
Sekarang ekstrak kode sumber phpMyAdmin dan ganti namanya menjadi direktori baru bernama 'phpMyAdmin'.
tar -xf phpMyAdmin-latest-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
Selanjutnya, buka direktori '/var/www/phpMyAdmin' dan salin file konfigurasi default ke 'config.inc.php'.
cd /var/www/html/phpMyAdmin/
cp config.sample.inc.php config.inc.php
Edit file konfigurasi 'config.inc.php' menggunakan editor vim.
vim config.inc.php
Buat kode rahasia blowfish menggunakan tautan ini dan rekatkan kode ke baris 'blowfish_secret' seperti di bawah ini.
$cfg['blowfish_secret'] = '6}2]RFleN-JT=/vXD}L/0j0v.YALV/e3'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Selanjutnya, ketik detail Server MySQL Anda di bawah baris 'Konfigurasi Server' seperti di bawah ini.
/**
* Servers configuration
*/
$i = 0;
.....
/* Custom MySQL Server Configuration */
$cfg['Servers'][$i]['host'] = '172.16.0.3';
$cfg['Servers'][$i]['port'] = '8320';
.....
Setelah itu, rekatkan konfigurasi berikut untuk mengaktifkan komunikasi SSL dari phpMyAdmin ke Server MySQL. Dan pastikan untuk mengubah jalur klien dan sertifikat CA dengan milik Anda dan pastikan 'www-data' pengguna dapat mengakses sertifikat CA dan klien.
/* SSL Configuration */
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_key'] = '/opt/mysql/certs/client-key.pem';
$cfg['Servers'][$i]['ssl_cert'] = '/opt/mysql/certs/client-cert.pem';
$cfg['Servers'][$i]['ssl_ca'] = '/opt/mysql/certs/ca.pem';
/* Disable SSL Verification for Self-signed certificates */
/* The Good: Connection between phpMyAdmin and MySQL Server are Encrypted */
/* But you're still vulnerable with the MiTM */
$cfg['Servers'][$i]['ssl_verify'] = false;
/* Hide Some Databases */
$cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|sys|mysql)';
Simpan dan tutup.
Sekarang ubah kepemilikan direktori 'phpMyAdmin' menjadi pengguna 'www-data'.
sudo chown -R www-data:www-data /var/www/html/phpMyAdmin
Dan instalasi phpMyAdmin dan konfigurasi phpMyAdmin telah selesai.
Sekarang masuk ke Server MySQL, periksa status SSL MySQL, buat database baru dan pengguna untuk phpMyAdmin.
Masuk ke Server MySQL menggunakan perintah berikut.
mysql -u root -P 8329 -p
Sekarang periksa status SSL menggunakan kueri berikut.
SHOW VARIABLES LIKE '%ssl%';
STATUS
Di bawah ini adalah hasil yang akan Anda dapatkan.
Seperti yang dapat dilihat, server MySQL aktif dan berjalan dengan SSL diaktifkan di dalamnya, dan menggunakan sertifikat SSL yang telah kami buat. Kami juga terhubung ke Server MySQL melalui koneksi aman SSL menggunakan file konfigurasi '~/.my.cnf'.
Selanjutnya, buat database baru dan pengguna bernama 'phpmyadmin' menggunakan query berikut.
CREATE DATABASE phpmyadmin;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED WITH mysql_native_password BY 'phpMyAdminAdmn352#$';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Ketik 'keluar ' untuk keluar dari MySQL Shell.
Sekarang buka browser web Anda dan ketik alamat IP server dengan jalur 'phpMyAdmin' di bilah alamat.
http://server-ip/phpMyAdmin/
Pada halaman Login phpMyAdmin, ketik user 'phpmyadmin' dengan password yang telah kita buat di atas dan klik tombol 'GO'.
Dan Anda akan mendapatkan Dashboard phpMyAdmin seperti di bawah ini.
Hasilnya, instalasi dan konfigurasi phpMyAdmin telah selesai.
Langkah 7 - Buat Pengguna dan Basis Data MySQL
Untuk langkah ini, Anda akan mempelajari penggunaan utama kueri MySQL untuk mengelola pengguna, basis data, dan perintah dasar mysqldump untuk pencadangan basis data.
Hubungkan ke Server MySQL dan Periksa Status Koneksi
Untuk terhubung ke server MySQL, Anda dapat menggunakan baris perintah 'mysql'. Dan secara default, semua koneksi dari Server MySQL lokal akan menggunakan soket Unix, yang koneksi SSL tidak membuat koneksi lebih aman.
Hubungkan ke Server MySQL dengan konfigurasi default menggunakan perintah berikut.
mysql -u username -p
Jika Server MySQL Anda berjalan pada port kustom, gunakan opsi '-P port' di bawah ini.
mysql -u root -P 8320 -p
Jika server MySQL Anda berjalan di jaringan lokal dengan port kustom, gunakan opsi 'h host/IP Address' dan '-P port' di bawah.
mysql -u root -h 172.16.0.3 -P 8320 -p
Setelah Anda terhubung ke Server MySQL Anda, jalankan kueri berikut untuk memeriksa status koneksi.
STATUS
Dan Anda akan mendapatkan hasil sebagai berikut.
Dan Anda berhasil terhubung ke Server MySQL.
Buat dan Tampilkan Basis Data
Setelah terhubung ke shell MySQL, Anda akan belajar cara membuat database MySQL, memilih database, membuat tabel, dan menyisipkan data.
Untuk membuat database MySQL baru, gunakan kueri berikut.
CREATE DATABASE hakase_db;
CREATE DATABASE yume_db;
CREATE DATABASE juice_db;
Sekarang periksa semua database daftar di server MySQL Anda menggunakan kueri berikut.
SHOW DATABASES;
SHOW DATABASES LIKE "%db%";
Selanjutnya, Anda dapat beralih dan memilih database menggunakan kueri berikut.
USE hakase_db;
Selanjutnya, Anda dapat membuat tabel baru di database Anda menggunakan kueri 'CREATE TABLE' seperti di bawah ini.
CREATE TABLE users (first VARCHAR(20), last VARCHAR(20),
email VARCHAR(20), birth DATE, country VARCHAR(20));
Sekarang Anda dapat menggunakan 'DESCRIBE table-name' untuk memeriksa semua field pada database Anda.
DESCRIBE users;
Dan Anda akan mendapatkan semua detail bidang pada tabel 'pengguna'.
Selanjutnya, Anda dapat memasukkan data secara manual ke tabel Anda menggunakan kueri 'INSERT' seperti di bawah ini.
INSERT INTO users
VALUES ('Mark','Mine','[email protected]','1999-03-20','Canada');
Sekarang Anda telah berhasil memasukkan data ke database MySQL. Selanjutnya, periksa semua data pada tabel menggunakan query 'SELECT' seperti di bawah ini.
SELECT * FROM users;
SELECT email, birth, country FROM users;
Dan Anda akan mendapatkan semua data dari tabel Anda.
Buat Pengguna MySQL
Setelah membuat database, Anda akan mempelajari cara membuat pengguna di Server MySQL dan memberikan hak istimewa pengguna ke database.
Query MySQL dasar untuk membuat user adalah dengan menggunakan query 'CREATE USER'. Kemudian Anda dapat memberikan hak istimewa database kepada pengguna Anda menggunakan perintah 'GRANT' berikut dengan pilihannya. Dan yang terakhir Anda harus memuat ulang tabel hibah untuk menerapkan perubahan baru.
- Dasar
Buat pengguna baru bernama '[email protected]' dengan sandi 'MyHakasePasswordMySQL39==' dan izinkan semua hak istimewa 'hakase_db' kepada pengguna menggunakan kueri berikut.
CREATE USER 'hakase'@'localhost' IDENTIFIED BY 'MyHakasePasswordMySQL39==';
GRANT ALL PRIVILEGES ON hakase_db.* TO 'hakase'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Informasi tambahan, hostname '[email protected]' adalah bagian dari nama akun. '@localhost' hanya mengizinkan pengguna untuk terhubung dari server lokal. Jika tidak diberikan, defaultnya adalah '%' yang memungkinkan pengguna dari mana saja.
- Buat Pengguna untuk Akses Jarak Jauh dengan Plugin Otentikasi Tertentu
Kami akan membuat pengguna baru yang hanya dapat masuk dari alamat IP host tertentu dan menggunakan plugin autentikasi tertentu.
Kami akan membuat pengguna baru bernama 'yume' yang terhubung melalui IP klien '172.16.0.4' dengan plugin otentikasi 'mysql_native_password', dan pengguna akan diizinkan untuk mengakses database 'yume_db' saja.
CREATE USER 'yume'@'172.16.0.4' IDENTIFIED WITH mysql_native_password BY 'MyYumePasswordMySQL39==';
GRANT ALL PRIVILEGES ON yume_db.* TO 'yume'@'172.16.0.4' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Akibatnya, pengguna 'yume' hanya akan terhubung ke server MySQL dengan alamat IP '172.16.0.4'. Jika tidak, otentikasi pengguna akan ditolak oleh Server MySQL.
- Buat Pengguna dan Paksa untuk Menggunakan Koneksi SSL Terenkripsi
Untuk memaksa pengguna menggunakan koneksi aman SSL, Anda dapat menggunakan opsi 'REQUIRE SSL'. Jika koneksi aman gagal, Anda tidak dapat terhubung ke Server MySQL (tidak dapat membuat koneksi).
Untuk skenario yang lebih aman, Anda dapat menggunakan kueri 'REQUIRE X509', yang berarti koneksi ke Server MySQL hanya dibuat ketika mesin pengguna/klien menyediakan klien dan sertifikat CA.
Buat pengguna baru bernama 'jus' dengan nama host '%'. Opsi nama host '%' ini memungkinkan pengguna 'jus' untuk terhubung dari alamat IP mana pun, tetapi koneksi akan dibuat ketika mesin klien menyediakan sertifikat klien dan CA.
CREATE USER 'juice'@'%' IDENTIFIED WITH mysql_native_password BY 'MyJuicePasswordMySQL39==' REQUIRE X509;
GRANT ALL PRIVILEGES ON juice_db.* TO 'juice'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Akibatnya, pengguna 'jus' dapat terhubung ke Server MySQL saat mesin memberikan sertifikat klien dan CA.
Tampilkan Semua Pengguna dan Hibah yang Tersedia
Setelah membuat semua pengguna, periksa semua pengguna menggunakan kueri berikut.
SELECT User, Host FROM mysql.user;
SELECT User, Host, plugin FROM mysql.user;
Sekarang Anda akan mendapatkan detail pengguna, host, dan plugin autentikasi yang digunakan oleh pengguna.
Selanjutnya, periksa semua hak istimewa pengguna menggunakan kueri 'TAMPILKAN HIBAH' seperti di bawah ini.
SHOW GRANTS FOR 'hakase'@'localhost';
SHOW GRANTS FOR 'yume'@'172.16.0.3';
SHOW GRANTS FOR 'juice'@'%';
Sekarang Anda akan mendapatkan hak istimewa terperinci dari pengguna Anda.
Hasilnya, Anda telah mempelajari penggunaan utama Server MySQL, termasuk membuat database, membuat tabel, menyisipkan data ke tabel, membuat dan menampilkan pengguna, dan menampilkan detail hak istimewa setiap pengguna.
Langkah 8 - Tambahan:Buat Database MySQL Cadangan Tambahan
Untuk langkah ini, Anda akan mempelajari penggunaan utama dari perintah 'mysqldump' untuk mencadangkan semua database MySQL. Baris perintah 'mysqldump' memungkinkan Anda untuk membuat cadangan semua database, database tertentu atau beberapa, dan tabel backup.
Sebelum melangkah lebih jauh, buat direktori cadangan dan masuk ke dalamnya.
mkdir -p ~/backup; cd ~/backup
Dan Anda siap untuk membuat cadangan database MySQL menggunakan utilitas 'mysqldump'.
Cadangkan Semua Basis Data
Untuk mencadangkan semua database di Server MySQL, gunakan perintah mysqldump dengan opsi '--add-databases' di bawah ini.
mysqldump -u root -P 8320 --all-databases -p > alldbs.sql
Sekarang Anda akan mendapatkan semua cadangan database Anda ke satu file SQL bernama 'alldbs.sql'.
Cadangkan Basis Data Khusus
Untuk mencadangkan database MySQL tertentu, sertakan nama database Anda pada perintah mysqldump di bawah ini.
mysqldump -u root -P 8320 -p hakase_db > backup_hakase_db.sql
Hasilnya, Anda akan mendapatkan file backup SQL dari database 'hakase_db' bernama 'backup_hakase_db.sql' pada direktori backup.
Cadangkan Banyak Basis Data
Jika Anda ingin membuat cadangan beberapa database (tidak semua database di Server MySQL), gunakan opsi '--databases' di bawah ini.
mysqldump -u root -P 8320 -p --databases yume_db juice_db > multi-db-once.sql
Hasilnya, file cadangan untuk dua database Anda 'yume_db' dan 'juice_db' telah dibuat, bernama file 'multi-db-once.sql'.
Cadangan Otomatis Database MySQL
Untuk mengatur pencadangan otomatis untuk MySQL, kita akan menggunakan 'cron' Linux. Kami akan membuat skrip bash baru untuk database MySQL dan menjalankannya secara otomatis pada waktu tertentu menggunakan Linux Cron.
Sebelum melangkah lebih jauh, login ke shell MySQL menggunakan perintah berikut.
mysql -u root -P 8320 -p
Buat pengguna cadangan baru dengan beberapa hak istimewa menggunakan kueri berikut.
CREATE USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyBackupPasswordMySQL39==';
GRANT PROCESS, SELECT, LOCK TABLES, SHOW VIEW, EVENT ON *.* TO 'backup'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Sekarang ketik 'exit' untuk keluar dari shell MySQL.
Selanjutnya, buat direktori backup baru '/opt/backup/mysql' untuk menyimpan semua file backup database Anda.
mkdir -p /opt/backup/mysql
Setelah itu, masuk ke direktori '/usr/local/sbin' dan buat file bash baru 'auto_backup.sh' menggunakan editor vim.
cd /usr/local/sbin/
vim auto_backup.sh
Ubah rincian pengguna, kata sandi, dan port dengan milik Anda dan rekatkan konfigurasi ke dalamnya.
#!/bin/bash
# Basic configuration: datestamp e.g., YYYYMMDD
DATE=$(date +"%Y%m%d")
# Location of your backups (create the directory first!)
BACKUP_DIR="/opt/backup/mysql"
# MySQL login details
MYSQL_USER="backup"
MYSQL_PASSWORD="MyBackupPasswordMySQL39=="
# MySQL executable locations (no need to change this)
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
# MySQL databases you wish to skip
SKIPDATABASES="Database|information_schema|performance_schema|mysql"
# Number of days to keep the directories (older than X days will be removed)
RETENTION=14
# ---- DO NOT CHANGE BELOW THIS LINE ------------------------------------------
#
# Create a new directory into the backup directory location for this date
mkdir -p $BACKUP_DIR/$DATE
# Retrieve a list of all databases
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`
# Dumb the databases in seperate names and gzip the .sql file
for db in $databases; do
echo $db
$MYSQLDUMP --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done
# Remove files older than X days
find $BACKUP_DIR/* -mtime +$RETENTION -delete
Simpan dan tutup.
Now make the 'auto_backup.sh' script executable and run the script for testing purposes.
chmod +x auto_backup.sh
./auto_backup.sh
As a result, you will get your database backup files on the '/opt/mysql/backup-current-date' directory. Check using the following command.
ls -lah /opt/backup/mysql/
ls -lah /opt/backup/mysql/datedir/
Di bawah ini adalah hasil yang akan Anda dapatkan.
As a result, you will get compressed files of your database backup, which means the script is working.
Next, create a new cronjob that will be running the MySQL auto backup script 'auto_backup.sh' every day at the time '00:00'.
Set the default editor to 'vim' and create a new cronjob as user root using the following command.
export EDITOR=vim
crontab -u root -e
Sekarang rekatkan konfigurasi berikut ke dalamnya.
0 0 * * * sh /usr/local/sbin/auto_backup.sh
Simpan dan tutup.
The new cronjob for user root has been created. Check all cronjob list for the root user using the following command.
crontab -u root -l
And you will get details cron configuration for the user root.
As a result, you've successfully set up the automatic MySQL database backup using the bash script and Linux Cron.
Finally, you've learned how to install and secure the MySQL Database Server on the Debian Buster 10 with phpMyAdmin web-based database management. Also, you've learned the basic MySQL query for managing users, create database and tables, and using the mysqldump utility for backup databases.
Referensi
- https://dev.mysql.com/doc/refman/en/
- https://docs.phpmyadmin.net/en/latest/index.html