Tutorial Instalasi MySQL di OS Ubuntu 20.04

install mysql di ubuntu

MySQL adalah sistem manajemen database open source, yang biasanya dipasang sebagai bagian dari stack LAMP (Linux, Apache, MySQL, PHP / Python / Perl) . MySQL mengimplementasikan model relasional dan menggunakan Structured Query Language (lebih dikenal sebagai SQL) untuk mengelola datanya. Pada tutorial kali ini akan membahas cara menginstal MySQL versi 8.0 di server Ubuntu 20.04. Dengan mengikuti langkah-langkah berikut, Anda akan memiliki database relasional yang berfungsi yang dapat Anda gunakan untuk membangun situs web atau aplikasi Anda berikutnya.

installasi

Di Ubuntu 20.04, Anda dapat menginstal MySQL menggunakan repositori paket APT. Pada saat tutorial ini ditulis, versi MySQL yang tersedia di repositori default Ubuntu adalah versi 8.0.19. Untuk memasangnya, perbarui indeks paket di server Anda jika Anda belum melakukannya baru-baru ini dengan perintah berikut:

sudo apt update

Kemudian instal paket mysql-server:

sudo apt install mysql-server

dengan ini MySQL sudah terinstall. Langkah berikutnya adalah konfigurasi MySQL.

Konfigurasi

Untuk MySQL yang baru di install, Anda dapat menjalankan skrip keamanan DBMS. Skrip ini mengubah beberapa opsi default yang kurang aman seperti login root jarak jauh dan pengguna sampel.

Jalankan skrip berikut dengan sudo:

sudo mysql_secure_installation

script tersebut akan membawa Anda melalui serangkaian petunjuk di mana Anda dapat membuat beberapa perubahan pada opsi keamanan instalasi MySQL Anda. Perintah pertama akan menanyakan apakah Anda ingin menyiapkan Plugin Validate Password, yang dapat digunakan untuk menguji kekuatan sandi pengguna MySQL baru sebelum menganggapnya valid. Jika Anda memilih untuk mengatur Plugin Validasi Kata Sandi, setiap pengguna MySQL yang Anda buat yang mengautentikasi dengan kata sandi akan diminta untuk memiliki kata sandi yang sesuai dengan kebijakan yang Anda pilih. Tingkat kebijakan terkuat – yang dapat Anda pilih dengan memasukkan 2 – akan mensyaratkan kata sandi setidaknya sepanjang delapan karakter dan menyertakan campuran huruf besar, huruf kecil, angka, dan karakter khusus:

Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of 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

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

Terlepas dari apakah Anda memilih untuk mengatur Plugin Validasi Kata Sandi, perintah berikutnya adalah mengatur kata sandi untuk pengguna root MySQL. Masukkan dan kemudian konfirmasikan kata sandi aman pilihan Anda:

Output
Please set the password for root here.


New password: 

Re-enter new password: 

Perhatikan bahwa meskipun Anda telah menyetel sandi untuk pengguna root MySQL, pengguna ini saat ini tidak dikonfigurasi untuk mengautentikasi dengan sandi saat menyambungkan ke shell MySQL. Jika Anda menggunakan Plugin Validasi Sandi, Anda akan menerima umpan balik tentang kekuatan sandi baru Anda. Kemudian skrip akan menanyakan apakah Anda ingin melanjutkan dengan kata sandi yang baru saja Anda masukkan atau apakah Anda ingin memasukkan yang baru. Jika Anda puas dengan kekuatan sandi yang baru saja Anda masukkan, masukkan Y untuk melanjutkan skrip:

Output
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

Dari situ, Anda dapat menekan Y lalu ENTER untuk menerima default untuk semua pertanyaan berikutnya. Hal ini akan menghapus beberapa pengguna anonim dan database pengujian, menonaktifkan login root jarak jauh, dan memuat aturan baru ini sehingga MySQL segera menggunakan perubahan yang telah Anda buat. Setelah skrip selesai, instalasi MySQL Anda akan diamankan. Sekarang Anda dapat melanjutkan untuk membuat pengguna database khusus dengan klien MySQL.

Membuat Pengguna MySQL Khusus dan Memberikan Privilege

Setelah instalasi, MySQL membuat akun pengguna root yang dapat Anda gunakan untuk mengelola database Anda. Pengguna ini memiliki hak penuh atas server MySQL, yang berarti ia memiliki kendali penuh atas setiap database, tabel, pengguna, dan sebagainya. Karena itu, sebaiknya hindari menggunakan akun ini di luar fungsi administratif. Langkah ini menguraikan cara menggunakan pengguna root MySQL untuk membuat akun pengguna baru dan memberinya privilege. Dalam sistem Ubuntu yang menjalankan MySQL 5.7 (dan versi yang lebih baru), pengguna root MySQL diatur untuk mengautentikasi menggunakan plugin auth_socket secara default, bukan dengan kata sandi. Plugin ini mengharuskan nama pengguna sistem operasi yang memanggil klien MySQL sesuai dengan nama pengguna MySQL yang ditentukan dalam perintah, jadi Anda harus menjalankan mysql dengan hak sudo untuk mendapatkan akses ke pengguna root MySQL:

sudo mysql

Setelah Anda memiliki akses ke prompt MySQL, Anda dapat membuat pengguna baru dengan perintah CREATE USER:

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

Setelah kata CREATE USER, Anda menentukan nama pengguna. kemudian diikuti dengan tanda @ dan kemudian nama host tempat pengguna ini akan terhubung. Jika Anda hanya berencana untuk mengakses pengguna ini secara lokal dari server Ubuntu Anda, Anda dapat mengisinya dengan localhost. Membungkus nama pengguna dan host dalam tanda kutip tunggal tidak selalu diperlukan, tetapi hal itu dapat membantu mencegah kesalahan. Anda memiliki beberapa opsi untuk memilih plugin autentikasi pengguna Anda. Plugin auth_socket yang disebutkan sebelumnya bisa jadi nyaman, karena memberikan keamanan yang kuat tanpa mengharuskan pengguna yang valid memasukkan kata sandi untuk mengakses database. Tetapi itu juga mencegah koneksi jarak jauh, yang dapat mempersulit banyak hal ketika program eksternal perlu berinteraksi dengan MySQL. Sebagai alternatif, Anda dapat menghilangkan bagian WITH authentication plugin dari sintaks sepenuhnya agar pengguna mengautentikasi dengan plugin default MySQL, yaitu caching_sha2_password. Dokumentasi MySQL merekomendasikan plugin ini untuk pengguna yang ingin masuk dengan kata sandi karena fitur keamanannya yang kuat. Jalankan perintah berikut untuk membuat pengguna yang mengautentikasi dengan caching_sha2_password. Pastikan untuk mengubah sammy ke nama pengguna dan kata sandi pilihan Anda menjadi kata sandi yang kuat yang Anda pilih:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Pada beberapa versi PHP ada masalah umum yang menyebabkan masalah dengan caching_sha2_password. Jika Anda berencana menggunakan database ini dengan aplikasi PHP – phpMyAdmin, misalnya – Anda mungkin ingin membuat pengguna yang akan mengautentikasi dengan yang lebih lama, meskipun masih aman, plugin mysql_native_password sebagai gantinya:

CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Jika Anda tidak yakin, Anda dapat membuat pengguna yang mengautentikasi dengan caching_sha2_plugin dan kemudian MENGUBAHnya nanti dengan perintah ini:

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Setelah membuat pengguna baru, Anda dapat memberi mereka privilege yang sesuai. Sintaks untuk memberikan hak pengguna adalah sebagai berikut:

GRANT PRIVILEGE ON database.table TO 'username'@'host';

Nilai PRIVILEGE dalam sintaks contoh ini menentukan tindakan apa yang diizinkan untuk dilakukan pengguna pada database dan tabel yang ditentukan. Anda dapat memberikan beberapa privilege kepada pengguna yang sama dalam satu perintah dengan memisahkan masing-masing dengan koma. Anda juga dapat memberikan hak pengguna secara global dengan memasukkan tanda bintang (*) sebagai pengganti nama database dan tabel. Dalam SQL, tanda bintang adalah karakter khusus yang digunakan untuk mewakili “semua” database atau tabel. Sebagai ilustrasi, perintah berikut memberikan hak akses global kepada pengguna untuk membuat, mengubah, dan menghapus database, tabel, dan pengguna, serta kemampuan untuk memasukkan, memperbarui, dan menghapus data dari tabel mana pun di server. Sintaks ini juga memberi pengguna kemampuan untuk meminta data dengan SELECT, membuat foreign key dengan kata kunci REFERENCES, dan melakukan operasi FLUSH dengan privilege RELOAD. Namun, Anda sebaiknya hanya memberikan izin yang mereka butuhkan kepada pengguna, jadi silakan sesuaikan privilege pengguna Anda sendiri seperlunya. Anda dapat menemukan daftar lengkap privilege yang tersedia di dokumentasi resmi MySQL. Jalankan pernyataan GRANT , ganti sammy dengan nama pengguna MySQL Anda sendiri, untuk memberikan privilege berikut kepada pengguna Anda:

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Perhatikan bahwa statement ini juga termasuk WITH GRANT OPTION. Ini akan memungkinkan pengguna MySQL Anda untuk memberikan semua yang dimilikinya kepada pengguna lain di sistem.

Peringatan: Beberapa pengguna mungkin ingin memberi pengguna MySQL mereka privilege ALL PRIVILEGES, yang akan memberi mereka hak pengguna super yang luas yang mirip dengan privilege pengguna root, seperti:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Privilege seluas itu tidak boleh diberikan dengan mudah, karena siapa pun yang memiliki akses ke pengguna MySQL ini akan memiliki kendali penuh atas setiap database di server.

Setelah itu , menjalankan perintah FLUSH PRIVILEGES merupakan praktik yang baik. Ini akan membebaskan semua memori yang di-cache server sebagai hasil dari pernyataan CREATE USER dan GRANT sebelumnya:

FLUSH PRIVILEGES;

Kemudian Anda dapat keluar dari klien MySQL:

exit

Kedepannya, untuk masuk sebagai pengguna MySQL baru Anda, Anda akan menggunakan perintah seperti berikut:

mysql -u sammy -p

flag -p akan menyebabkan klien MySQL meminta Anda memasukkan kata sandi pengguna MySQL Anda untuk mengautentikasi. Terakhir, mari kita uji penginstalan MySQL.

Testing MySQL

Terlepas dari bagaimana Anda menginstalnya, MySQL sudah mulai berjalan secara otomatis. Untuk mengujinya, periksa statusnya.

systemctl status mysql.service

Anda akan melihat output yang mirip dengan berikut ini:

Output
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
             └─10382 /usr/sbin/mysqld

Jika MySQL tidak berjalan, Anda dapat memulainya dengan sudo systemctl start mysql. Untuk pemeriksaan tambahan, Anda dapat mencoba menyambungkan ke database menggunakan tool mysqladmin, yaitu klien yang memungkinkan Anda menjalankan perintah administratif. Misalnya, perintah ini mengatakan untuk terhubung sebagai pengguna MySQL bernama sammy (-u sammy), meminta kata sandi (-p), dan mengembalikan versinya. Pastikan untuk mengubah sammy menjadi nama pengguna MySQL khusus Anda, dan masukkan kata sandi pengguna tersebut saat diminta:

sudo mysqladmin -p -u sammy version

Anda akan melihat output seperti ini:

Output
mysqladmin  Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version      8.0.19-0ubuntu5
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         10 min 44 sec

Threads: 2  Questions: 25  Slow queries: 0  Opens: 149  Flush tables: 3  Open tables: 69  Queries per second avg: 0.038

traffic bot

Tutorial Instalasi MySQL di OS Ubuntu 20.04

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top