MySQL adalah sistem manajemen basis data yang umumnya dipasang sebagai bagian dari tumpukan LAMP (Linux, Apache, MySQL, PHP / Python / Perl. Pada tutorial ini akan menjelaskan cara menginstal MySQL di server Ubuntu 18.04.

cara install mysql di ubuntu 18.04
Install MySQL di Ubuntu 18.04

Untuk mengikuti tutorial ini, Anda memerlukan sebuah server Ubuntu 18.04 yang diatur agar user non-root memiliki hak akses sudo dan firewall.

Contents

Langkah 1 – Menginstal MySQL

Di Ubuntu 18.04, hanya versi terbaru dari MySQL yang disertakan dalam repositori paket APT secara default. Untuk menginstalnya, perbarui indeks paket pada server Anda dengan apt:

$ sudo apt update

Kemudian instal paket default:

$ sudo apt install mysql-server

Langkah 2 – Mengkonfigurasi MySQL

Untuk instalasi baru, Anda perlu menjalankan skrip keamanan bawaan dengan mengubah beberapa opsi default yang kurang aman, seperti login root jarak jauh dan sampel user. Pada versi MySQL yang lebih lama, Anda perlu menginisialisasi direktori data secara manual juga, tetapi hal tersebut dilakukan secara otomatis pada versi terkini.

Jalankan skrip keamanan berikut

$ sudo mysql_secure_installation

Kemudian Anda akan melalui serangkaian tahap konfirmasi dimana Anda dapat membuat beberapa perubahan pada opsi keamanan instalasi MySQL. Prompt pertama akan menanyakan apakah Anda ingin mengatur Plugin Validate Password Plugin, yang digunakan untuk menguji kekuatan kata sandi MySQL. Apapun pilihan Anda, prompt berikutnya adalah mengatur kata sandi untuk user root MySQL. Masukkan dan konfirmasikan kata sandi aman pilihan Anda.

Dari sana, ketik Y dan kemudian ENTER untuk pada semua pertanyaan berikutnya. Proses ini akan menghapus beberapa user anonim dan database pengujian, menonaktifkan login root jarak jauh, dan memuat aturan baru sehingga MySQL segera menerima pengaturan yang telah Anda buat.

Untuk menginisialisasi direktori data MySQL, gunakan mysql_install_db untuk versi sebelum 5.7.6, dan mysqld --initialize untuk 5.7.6 dan yang lebih baru. Namun, jika Anda menginstal MySQL dari distribusi Debian, seperti dijelaskan pada Langkah 1, direktori data diinisialisasi secara otomatis; Anda tidak perlu melakukan apa pun. Jika Anda tetap mencoba menjalankan perintah, Anda akan melihat pesan error berikut:

Output
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

Perhatikan bahwa meskipun Anda telah menetapkan kata sandi untuk root user MySQL, user ini tidak dikonfigurasikan untuk mengautentikasi dengan kata sandi saat menyambungkan ke shell MySQL. Jika Anda suka, Anda dapat menyesuaikan pengaturan ini dengan mengikuti Langkah 3.

Langkah 3 – (Opsional) Menyesuaikan Otentikasi User dan Hak Istimewa

Dalam sistem Ubuntu yang menjalankan MySQL 5.7 (dan versi yang lebih baru), root user MySQL diatur untuk mengotentikasi menggunakan plugin auth_socket secara default daripada dengan kata sandi. Hal ini bisa meningkatkan keamanan dan kegunaan dalam banyak kasus, tetapi juga dapat menyulitkan ketika Anda perlu mengizinkan program eksternal (mis., PhpMyAdmin) untuk mengakses user.

Agar kata sandi terhubung ke MySQL sebagai root, Anda harus mengganti metode otentikasi dari auth_socket ke mysql_native_password. Untuk melakukan ini, buka prompt MySQL dari terminal Anda:

$ sudo mysql 

Selanjutnya, periksa metode otentikasi mana yang Anda (setiap akun user MySQL) gunakan dengan perintah berikut:

mysql>  SELECT user,authentication_string,plugin,host FROM mysql.user; 
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Dalam contoh ini, Anda dapat melihat bahwa user root sebenarnya mengautentikasi menggunakan plugin auth_socket. Untuk mengonfigurasi akun root untuk mengautentikasi dengan kata sandi, jalankan perintah ALTER USER berikut. Pastikan untuk mengubah kata sandi menjadi kata sandi pilihan Anda, dan perhatikan bahwa perintah ini akan mengubah kata sandi root yang Anda atur di Langkah 2:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 

Kemudian, jalankan FLUSH PRIVILEGES yang memberi tahu server agar memuat ulang tabel hibah dan menerapkan perubahan baru Anda:

mysql>  FLUSH PRIVILEGES; 

Periksa kembali metode otentikasi yang digunakan oleh tiap user Anda untuk mengonfirmasi bahwa root tidak lagi diautentikasi menggunakan plugin auth_socket:

 mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; 
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Anda dapat melihat dalam output contoh bahwa user MySQL root sekarang mengautentikasi menggunakan kata sandi. Setelah Anda mengonfirmasi di server Anda sendiri, Anda dapat keluar dari shell MySQL:

mysql>  exit 

Atau mungkin hal itu lebih sesuai dengan alur kerja beberapa orang untuk terhubung ke MySQL dengan user khusus. Untuk membuat user tersebut, buka shell MySQL sekali lagi:

 $ sudo mysql 

Catatan: Jika Anda mengaktifkan otentikasi kata sandi untuk root, seperti yang dijelaskan dalam paragraf sebelumnya, Anda harus menggunakan perintah yang berbeda untuk mengakses shell MySQL. Selanjutnya akan dijalankan klien MySQL dengan hak user biasa, dan Anda hanya akan mendapatkan hak administrator dalam basis data melalui mengautentikasi:

 $ mysql -u root -p 

Dari sana, buat user baru dan berikan kata sandi yang kuat:

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

Lalu, beri user baru tersebut hak istimewa yang sesuai. Misalnya, Anda bisa memberikan hak user untuk semua tabel dalam database, serta hak untuk menambah, mengubah, dan menghapus hak user, dengan perintah berikut:

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

Perhatikan bahwa, pada titik ini, Anda tidak perlu menjalankan perintah FLUSH PRIVILEGES lagi. Perintah ini hanya diperlukan ketika Anda memodifikasi tabel hibah menggunakan pernyataan seperti INSERT, UPDATE, atau DELETE. Karena Anda membuat pengguna baru, alih-alih memodifikasi yang sudah ada, FLUSH PRIVILEGES tidak diperlukan di sini.

Setelah itu, tutup shell MySQL:

mysql> exit 

Terakhir, mari kita uji hasil instalasi MySQL.

Langkah 4 — Menguji MySQL

Terlepas dari bagaimana cara Anda menginstalnya, MySQL seharusnya sudah berjalan secara otomatis. Untuk mengujinya, periksa statusnya dengan:

$ systemctl status mysql.service 

Anda akan melihat output seperti berikut:

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
 Main PID: 3754 (mysqld)
    Tasks: 28
   Memory: 142.3M
      CPU: 1.994s
   CGroup: /system.slice/mysql.service
           └─3754 /usr/sbin/mysqld

Jika MySQL tidak berjalan, Anda dapat menjalankannya dengan perintah sudo systemctl start mysql.

Untuk pemeriksaan tambahan, Anda dapat mencoba menyambungkan ke database menggunakan tool mysqladmin , yang merupakan klien yang memungkinkan Anda menjalankan perintah administratif. Sebagai contoh, perintah ini terhubung ke MySQL sebagai root (-u root) , meminta kata sandi (-p), dan mengembalikan ke versi sebelumnya.

$ sudo mysqladmin -p -u root version 

Setelah itu, Anda akan melihat output seperti berikut:

mysqladmin  Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, 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      5.7.21-1ubuntu1
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         30 min 54 sec

Threads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006

Hal itu menandakan bahwa MySQL sudah berhasil diaktifkan dan berjalan dengan baik.