Memberikan hak akses atau dapat juga disebut dengan grant pirivileges pada MySQL sangat sederhana. Namun, terkadang kita masih bingung dan sering kesulitan melakukan dengan benar. Pada tulisan ini kita akan membahas mengenai cara memberikan hak akses remote publik pada user database MySQL pada linux server dan pada kasus ini pada ubuntu server.
Diasumsikan teman-teman sudah bisa login ke MySQL server dengan akun root. User root memiliki hak akses untuk mengatur manajemen user. Untuk masuk ke MySQL, teman-teman bisa membuka terminal jika menggunakan MacOS atau Linux, dan bisa juga lewat Putty jika di Windows.
Lalu masuk menggunakan perintah:
#mysql –uroot –p
Lalu masukan password root dan setelah login berhasil aka nada tulisan Mysql>.
Membuat User Baru
Setelah berhasil menggunakan akun root, kita bisa membuat user dengan perintah dibawah ini.
Mysql> CREATE USER 'namauserbaru'@'localhost' IDENTIFIED BY 'password';
Mysql> CREATE USER 'namauserbaru'@'%' IDENTIFIED BY 'password';
Pada perintah diatas,’namauserbaru’ adalah username baru yang akan dibuat, dan localhost atau % adalah hostnya. Localhost dengan host client yang hanya dapat diakses dalam jaringan lokal dan % jika ingin bsa diakses secara publik. Kemudian, password adalah password untuk user baru tersebut.
Memberikan hak akses
Misalnya kita akan memberikan semua privileges ke user tadi, berarti kita bisa menggunakan perintah sebagai berikut:
Mysql> GRANT ALL PRIVILEGES ON * . * TO 'namauserbaru'@'localhost';
Mysql> GRANT ALL PRIVILEGES ON * . * TO 'namauserbaru'@'%';
*.* berarti semua database dan semua kolom, missal hanya ingin memberikan akses ke satu database saja, teman-teman bisa membuat perintah seperti ini:
Mysql> GRANT ALL PRIVILEGES ON nama_db . * TO 'namauserbaru'@'localhost';
Mysql> GRANT ALL PRIVILEGES ON nama_db . * TO '%'@'localhost';
Kemudian, all privileges berarti semua privileges dari menambah, mengubah, dan lain sebagainya. Teman-teman bisa menggantinya dengan list berikut:
Hak Akses
Keterangan
ALL [PRIVILEGES]
Memberikan seluruh hak akses, kecuali GRANT OPTION
ALTER
Hak akses untuk merubah tabel (ALTER TABLE)
ALTER ROUTINE
Hak akses untuk merubah stored routines
CREATE
Hak akses untuk membuat tabel dan database
CREATE ROUTINE
Hak akses untuk membuat dan menghapus stored routine
CREATE TABLESPACE
Hak akses untuk membuat, mengubah dan menghapus tablespaces dan log file
CREATE TEMPORARYTABLES
Hak akses untuk membuat tabel sementara CREATE TEMPORARY TABLE
CREATE USER
Hak akses untuk membuat, menghapus, dan mengubah user (CREATE USER, DROP USER, RENAME USER, dan REVOKE ALL PRIVILEGES)
CREATE VIEW
Hak akses untuk membuat dan mengubah views
DELETE
Hak akses untuk menghapus data (DELETE)
DROP
Hak akses untuk menghapus database, tabel dan view
EVENT
Hak akses untuk membuat event
EXECUTE
Hak akses untuk menjalankan stored routines
FILE
Hak akses untuk membuat server membaca maupun membuat file
GRANT OPTION
Hak akses untuk memberikan hak akses kepada user lainnya.
INDEX
Hak akses untuk membuat dan menghapus index
INSERT
Hak akses untuk menambahkan data (query INSERT)
LOCK TABLES
Hak akses untuk mengunci tabel (LOCK TABLES)
PROCESS
Hak akses untuk melihat seluruh proses (SHOW PROCESSLIST)
PROXY
Hak akses untuk proses proxy
REFERENCES
Belum diimplementasikan
RELOAD
Hak akses untuk operasi FLUSH
REPLICATION CLIENT
Hak akses untuk mengubah urutan master dan slave server
REPLICATION SLAVE
Hak akses untuk server replikasi untuk membaca log event biner dari server master
SELECT
Hak akses untuk melihat data (query SELECT)
SHOW DATABASES
Hak akses untuk melihat seluruh database (SHOW DATABASES)
SHOW VIEW
Hak akses untuk melihat pembuatan view (SHOW CREATE VIEW)
SHUTDOWN
Hak akses untuk mysqladmin shutdown
SUPER
Hak akses untuk fungsi administrasi server, seperti CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, dan perintah debug mysqladmin
TRIGGER
Hak akses untuk operasi trigger
UPDATE
Hak akses untuk memperbaharui data (UPDATE)
USAGE
Sama artinya dengan ?tanpa hak akses?
Mengkonfigurasi Server MySQL
Langkah selanjutnya adalah mengatur server MySQL untuk mendengarkan alamat IP tertentu atau semua alamat IP pada mesin.
Jika server MySQL dan klien dapat berkomunikasi satu sama lain melalui jaringan pribadi, maka opsi terbaik adalah mengatur server MySQL untuk mendengarkan hanya pada IP pribadi. Jika tidak, jika Anda ingin terhubung ke server melalui jaringan publik, atur server MySQL untuk mendengarkan semua alamat IP pada mesin.
Untuk melakukannya, Anda perlu mengedit file konfigurasi MySQL dan menambah atau mengubah nilai opsi bind-address . Anda dapat mengatur satu alamat IP dan rentang IP. Jika alamatnya adalah 0.0.0.0 , server MySQL menerima koneksi pada semua antarmuka IPv4 host. Jika Anda memiliki IPv6 yang dikonfigurasi pada sistem Anda, maka alih-alih 0.0.0.0 , gunakan :: .
Lokasi file konfigurasi MySQL berbeda tergantung pada distribusinya. Di Ubuntu dan Debian file tersebut terletak di /etc/mysql/mysql.conf.d/mysqld.cnf , sedangkan di distribusi berbasis Red Hat seperti CentOS, file tersebut berada di /etc/my.cnf .
Buka file dengan editor teks Anda:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Cari baris yang dimulai dengan bind-address dan atur nilainya ke alamat IP yang harus didengarkan oleh server MySQL.
Secara default, nilainya diatur ke 127.0.0.1 (hanya mendengarkan di localhost).
Dalam contoh ini, kita akan mengatur server MySQL untuk mendengarkan semua antarmuka IPv4 dengan mengubah nilainya menjadi 0.0.0.0
mysqld.cnf
bind-address = 0.0.0.0 # skip-networking
Jika ada baris yang berisi skip-networking , hapus atau komentari dengan menambahkan # di awal baris.
Di MySQL 8.0 dan lebih tinggi, arahan bind-address mungkin tidak ada. Dalam hal ini, tambahkan di bawah bagian.
Setelah selesai, mulai ulang layanan MySQL agar perubahan diterapkan. Hanya root atau pengguna dengan hak sudo yang dapat memulai kembali layanan.
Untuk memulai kembali layanan MySQL di Debian atau Ubuntu, ketik:
sudo systemctl restart mysql
Pada distribusi berbasis RedHat seperti CentOS untuk memulai kembali menjalankan layanan:
sudo systemctl restart mysqld
atau
sudo /etc/init.d/mysql restart
semoga bermanfaat.
No comments:
Post a Comment