Agar user root tidak dapat mengakses mysql db tertentu

Dalam hal pengamanan server MySQL, setidaknya ada beberapa faktor yang mempengaruhi. Kita belum cukup jika mengamankan satu sisi (faktor) saja, tetapi harus menyeluruh. Berikut ini beberapa faktor tersebut:

1. Server atau komputer tempat MySQL berada. Server tempat MySQL diinstall tentunya menjadi gerbang utama bagi penyusup (intruder). Untuk ini kita harus benar-benar memperhatikan faktor keamanan server. Kita dapat memasang firewall untuk membatasi akses penyusup ke server. Gunakan prinsip deny-all, allow-some, dimana kita menutup semua lubang dan hanya membuka yang diperlukan.
2. Server MySQL. Konfigurasi dan settingan dalam server MySQL juga sangat mempengaruhi keamanan data MySQL. Bagaimana jadinya jika user yang tidak berhak dapat mengakses sistem dan konfigurasi MySQL? Tentu sangat berbahaya.
3. Aplikasi (Pemrograman) yang digunakan. Aplikasi disini maksudnya dalah pemrograman yang menggunakan atau berhubungan langsung dengan MySQL. Sebagian besar penyusup akan memilih cara menyusup melalui aplikasi jika kedua hal diatas tidak dapat dilakukan. Dan banyak database yang kebobolan karena kelemahan dari sisi aplikasi. Secara sederhana kita dapat mengakses data ke MySQL melalui konsep yang sering disebut sebagai SQLInjection.
4. User atau pengguna. User atau pengguna server MySQL juga mempengaruhi keamanan datanya. Misalnya pemilihan password yang mudah ditebak (seperti tanggal lahir), kecerobohan user yang lupa logout setelah menggunakan MySQL atau user yang menuliskan passwordnya di buku catatan.

Memahami Hak Akses (Privileges) di MySQL

MySQL pada dasarnya merupakan sistem database yang aman. Di MySQL kita dapat mengatur hak akses tiap user terhadap data di database. MySQL memungkinkan kita mengatur hak akses user sampai pada tingkat kolom. Artinya kita dapat mengatur kolom tertentu dapat diakses oleh user siapa saja. Tentu, kita juga dapat mengatur hak akses user terhadap tabel, dan database.
Semua pengaturan hak akses (privileges) tersimpan di database mysql yang secara default sudah ada di sistem MySQL. Di dalam database mysql antara lain terdapat tabel-tabel sebagai berikut:

user. Tabel ini digunakan untuk menyimpan informasi user MySQL yang mencakup informasi user, password dan host user, serta informasi hak akses user.
db. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap database.
host. Tabel ini digunakan untuk menyimpan daftar komputer (bisa berupa alamat IP, nama komputer, atau %) yang berhak mengakses suatu database.
tables_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap tabel. Dengan kata lain menyimpan tabel ini dapat diakses oleh siapa dengan hak akses apa saja.
columns_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap kolom.
procs_priv. Tabel ini digunakan untuk menyimpan informasi mengenai hak akses user terhadap procedure.

proc. Tabel ini digunakan untuk menyimpan informasi mengenai daftar procedure dalam MySQL.
func. Tabel ini digunakan untuk menyimpan informasi mengenai function yang didefinisikan di MySQL.

GRANT dan REVOKE di MySQL

Untuk mengatur hak akses di MySQL, pada dasarnya kita menggunakan bentuk perintah GRANT dan REVOKE.
Berikut ini bentuk umum perintah GRANT dan REVOKE secara sederhana :

GRANT priv_type
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY 'password' ]
[WITH GRANT OPTION]
REVOKE priv_type
ON {tbl_name | * | *.* | db_name.*}
FROM user_name

Berikut ini pilihan untuk priv_type dalam bentuk umum perintah GRANT dan REVOKE di atas:

ALL PRIVILEGES       FILE                         RELOAD
ALTER                           INDEX                     SELECT
CREATE                       INSERT                  SHUTDOWN
DELETE                       PROCESS              UPDATE
DROP                           REFERENCES      USAGE

Perintah GRANT dan REVOKE dapat digunakan untuk membuat user baru maupun mengatur hak akses user yang sudah ada dengan hak akses (privileges ) tertentu. Tingkatan hak akses user dapat terbagi menjadi tingkatan global (tersimpan di tabel mysql.user), database (tersimpan di tabel mysql.host dan mysql.db), tabel (tersimpan di tabel mysql.tables_priv) dan kolom (tersimpan di tabel mysql.columns_priv). Setiap perubahan hak akses di MySQL, termasuk menambahkan user baru, tidak akan berlaku sebelum diakhiri dengan perintah FLUSH PRIVILEGES.

Bagaimana cara membuat hak akses user di MySQL?

Cara Membuat Hak Akses Tertentu untuk User MySQL.
CREATE – memperbolehkan user untuk membuat database atau tabel..
SELECT – memperbolehkan user untuk mengambil data..
INSERT – memperbolehkan user untuk memodifikasi entri yang ada di tabel..
DELETE – memperbolehkan user untuk menghapus entri tabel..

Apa yang dimaksud dengan hak akses privileges pada MySQL?

Secara singkat, maksud User Privilege MySQL adalah hak akses yang diberikan untuk pengguna tertentu agar bisa mengakses database beserta isinya di MySQL. Hak akses ini bersifat custom, artinya masing-masing pengguna bisa punya privilege yang berbeda.

Jelaskan hak akses privileges apa sajakah yang bisa diberikan pada user?

hak_akses adalah privileges yang akan berikan kepada user tersebut. Hak akses disini berisi query yang diperbolehkan, seperti: SELECT, INSERT, UPDATE, DELETE, atau query lainnya. Jika kita ingin memberikan hak penuh untuk semua query dasar tersebut, hak_akses ini bisa diisi dengan ALL.

Apa itu hak superuser?

Mengenal Hak Akses Superuser: 'root' User 'root' dalam istilah keamanan komputer sering disebut sebagai 'superuser'. Superuser merupakan tingkatan user tertinggi dimana user ini dapat melihat, mengubah, bahkan menghapus seluruh database dan menjalankan perintah apapun yang terdapat dalam MySQL.