Anda di halaman 1dari 11

MANAJEMEN USER

Mengaktifkan Keamanan Standar


Saat pertama kali kita menggunakan MySQL setelah proses instalasi selesai, MySQL dapat digunakan oleh siapa
saja tanpa harus menggunakan password dan nama user (user login). Hal ini sangat berbahaya karena pintu
menjadi terbuka dan sangat mudah untuk dimasuki oleh orang-orang yang tidak bertanggung jawab dan mungkin
saja mempunyai niat yang tidak baik terhadap sistem database kita. Maka hal pertama yang harus dilakukan
setelah berhasil menginstal MySQL adalah mengaktifkan password untuk root dan menghapus anonym user.
Anonym user yaitu user tanpa identitas dan tanpa password. Dengan mengaktifkan keamanan standar, maka
tidak semua orang dapat masuk kedalam sistem kita tanpa menyebutkan identitas diri (user login) dan
passwordnya terlebih dahulu.
untuk melakukan langka-langkah berikutnya, anda harus login sebagai root pada sistem operasi anda dan aktifkan
database MySQL
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use mysql;
Database changed

Tampilkanlah seluruh tabel yang ada pada database mysql


mysql> show tables;
+---------------------------+
| Tables_in_mysql
|
+---------------------------+
| columns_priv
|
| db
|
| func
|
| help_category
|
| help_keyword
|
| help_relation
|
| help_topic
|
| host
|
| proc
|
| procs_priv
|
| tables_priv
|
| time_zone
|
| time_zone_leap_second
|
| time_zone_name
|
| time_zone_transition
|
| time_zone_transition_type |
| user
|
| user_info
|
+---------------------------+
18 rows in set (0.00 sec)

Tabel-tabel User, db, host, tables_priv dan columns_priv digunakan untuk mengatur user dan ijin akses masingmasing user (user privileges). Oleh karena itu, kelima tabel tersebut disebut grant tables, fungsi-fungsi tabel-tabel
tersebut adalah :
Nama Tabel

Fungsi

Tingkatan Akses

User

Db

Host

Tables_priv
Columns_priv

Berisi data user yang mendapat


ijin akses MySQL, asal koneksi
dari mana saja, dan ijin akses
yang diberikan kepada user
tersebut. Tabel ini bersifat
global
Mengatur database apasaja
yang dapat diakses oleh
seorang user, berikut ijin
aksesnya
Mengatur asal host (bila lebih
dari
satu
host)
yang
diperkenankan bagi seorang
user untuk mengakses MySQL
Mengatur tabel apasaja yang
boleh diakses oleh seorang
user, berikut jenis ijin aksesnya
Mengatur kolom (field) apasaja
yang dapat diakses oleh
seorang user, berikut jenis ijin
aksesnya

Global

Database

Database

Tabel
Kolom (field)

Jenis Ijin Akses User (User Privileges)


Ijin akses secara umum dapat dikategorikan menjadi 3 bagian yaitu
1. Tingkatan Akses User Biasa, mencakup ijin akses ke dalam database, atau kolom, sebagai berikut :
ALTER, digunakan untuk mengubah tabel dan index yang sudah ada. Misalnya menambah kolom
baru atau menghapus kolom pada tabel.
CREATE, digunakan untuk membuat database atau tabel yang baru.
DELETE, digunakan untuk menghapus record.
DROP, digunakan untuk menghapus tabel dan database.
INDEX, digunakan untuk membuat index baru atau menghapus sebuah index
INSERT, digunakan untuk menambah record pada tabel.
SELECT,digunakan untuk menampilkan data dari suatu tabel (atau beberapa tabel sekaligus)
UPDATE, digunakan untuk peremajaan data
REFERENCES
2. Tingkatan Akses Administrator (Global Administrativ) hanya digunakan oleh user setingkat root atau
administrator dan tidak diberikan kepada user biasa. Ijin akses ini adalah sebagai berikut :
FILE, digunakan untuk membaca dan menulis file di dalam server MySQL.
PROCESS digunakan untuk menampilkan dan menghentikan suatu proses yang dilakukan user.
RELOAD digunakan untuk membaca ulang tabel ijin akses (grant tables), melakukan proses flush pada
file log, dsb. Flush dapat diartikan sebagai penulisan ulang pada file log tentang perubahan-

perubahan terakhir yang terjadi, serta memerintahkan sistem MySQL untuk memperhatikan
perubahan-perubahan tersebut.
SHUTDOWN digunakan untuk mematikan server MySQL. Digunakan dengan MYSQLADMIN
SHUTDOWN.
CREATE TEMPORARY TABLE digunakan untuk membuat tabel temporer
EXECUTE digunakan untuk menajlankan perintah
LOCK TABLES digunakan untuk mengunci tabel
REPLICATION CLIENT digunakan untuk proses replikasi database pada klien
REPLICATION SLAVE digunakan untuk proses replikasi database sebagai database sekunder (slave)
SHOW DATABASES digunakan untuk menampilkan selutuh database yang ada di server MySQL
SUPER
3. Tingkatan akses khusus (Special Privileges) dapat diterapkan pada setiap user dengan ijin akses sebagai
berikut :
ALL digunakan untuk memberikan semua ijin akses sehingga user tersebut memiliki hak akses seperti
layaknya seorang root.
USAGE digunakan untuk sekedar membuat user saja tapi tidak memberikan ijin akses apapun kepada
user tersebut (user bisa masuk ke dalam MySQL server dengan password yang ditentukan, tetapi
tidak bisa melakukan hal lainnya
Database mysql merupakan database yang sangat penting dan vital didalam sistem MySQL, karena fungsinya
mengatur ijin akses semua user yang terdaftar. Maka database mysql ini tidak boleh diakses oleh siapapun juga,
kecuali System Administrator (root) yang bersangkutan. Bila anda seorang root jangan pernah memberikan orang
lain untuk mengakses database mysql.
Pada MySQL versi 5.0.45 terdapat tabel user pada database mysql sebagai berikut :
mysql> desc user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field
| Type
| Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host
| char(60)
| NO
| PRI |
|
|
| User
| char(16)
| NO
| PRI |
|
|
| Password
| char(41)
| NO
|
|
|
|
| Select_priv
| enum('N','Y')
| NO
|
| N
|
|
| Insert_priv
| enum('N','Y')
| NO
|
| N
|
|
| Update_priv
| enum('N','Y')
| NO
|
| N
|
|
| Delete_priv
| enum('N','Y')
| NO
|
| N
|
|
| Create_priv
| enum('N','Y')
| NO
|
| N
|
|
| Drop_priv
| enum('N','Y')
| NO
|
| N
|
|
| Reload_priv
| enum('N','Y')
| NO
|
| N
|
|
| Shutdown_priv
| enum('N','Y')
| NO
|
| N
|
|
| Process_priv
| enum('N','Y')
| NO
|
| N
|
|
| File_priv
| enum('N','Y')
| NO
|
| N
|
|
| Grant_priv
| enum('N','Y')
| NO
|
| N
|
|
| References_priv
| enum('N','Y')
| NO
|
| N
|
|
| Index_priv
| enum('N','Y')
| NO
|
| N
|
|
| Alter_priv
| enum('N','Y')
| NO
|
| N
|
|
| Show_db_priv
| enum('N','Y')
| NO
|
| N
|
|
| Super_priv
| enum('N','Y')
| NO
|
| N
|
|
| Create_tmp_table_priv | enum('N','Y')
| NO
|
| N
|
|

| Lock_tables_priv
| enum('N','Y')
| NO
|
| N
|
|
| Execute_priv
| enum('N','Y')
| NO
|
| N
|
|
| Repl_slave_priv
| enum('N','Y')
| NO
|
| N
|
|
| Repl_client_priv
| enum('N','Y')
| NO
|
| N
|
|
| Create_view_priv
| enum('N','Y')
| NO
|
| N
|
|
| Show_view_priv
| enum('N','Y')
| NO
|
| N
|
|
| Create_routine_priv
| enum('N','Y')
| NO
|
| N
|
|
| Alter_routine_priv
| enum('N','Y')
| NO
|
| N
|
|
| Create_user_priv
| enum('N','Y')
| NO
|
| N
|
|
| ssl_type
| enum('','ANY','X509','SPECIFIED') | NO
|
|
|
|
| ssl_cipher
| blob
| NO
|
|
|
|
| x509_issuer
| blob
| NO
|
|
|
|
| x509_subject
| blob
| NO
|
|
|
|
| max_questions
| int(11) unsigned
| NO
|
| 0
|
|
| max_updates
| int(11) unsigned
| NO
|
| 0
|
|
| max_connections
| int(11) unsigned
| NO
|
| 0
|
|
| max_user_connections | int(11) unsigned
| NO
|
| 0
|
|
+-----------------------+-----------------------------------+------+-----+---------+-------+
37 rows in set (0.02 sec)

Bagian-bagian dari struktur tabel tersebut dapat dijelaskan diantaranya yaitu :

Host, digunakan untuk menentukan alamat tempat komputer pengakses database. Anda dapat
memasukkan host bernilai localhost apabila ingin menggunakan database pada server lokal (pada mesin
yang sama dengan aplikasi yang mengakses).

User, digunakan untuk merekam User ID. Kolom ini sebaiknya dibentuk dengan sistem unik, karena akan
digunakan untuk merekam account pada saat login MySQL.

Password, digunakan untuk menyimpan data kunci dari user yang ada. Setiap user memiliki satu buah
password. Dalam kolom ini setiap password yang masuk akan dienkripsi dengan sistem password.

Select_priv, digunakan untuk memberikan hak akses pada user. Arti select_priv adalah ijin user untuk
melakukan perintah select (menampilkan data). Apabila anda memasukkan YES, berarti user tersebut
dapat melakukan seleksi data, dan apabila NO maka user tersebut tidak dapat melakukan seleksi data.

Insert_priv, merupakan hak akses yang diberikan pada user untuk memasukkan data ke dalam tabel.
Apabila anda memasukkan YES, berarti user tersebut dapat memasukkan data, dan apabila NO maka user
tersebut tidak dapat memasukkan data.

Update_priv, adalah hak akses yang dapat diberikan kepada user untuk melakukan perubahan/
peremajaan data miliknya. Apabila anda memasukkan YES, berarti user tersebut dapat melakukan
perubahan data, dan apabila NO maka user tersebut tidak dapat melakukan perubahan data.

Delete_priv, adalah hak akses yang diberikan untuk melakukan penghapusan data. Apabila anda
memasukkan YES, berarti user tersebut dapat melakukan penghapusan data, dan apabila NO maka user
tersebut tidak dapat melakukan penghapusan data.

Create_priv, adalah hak akses yang diberikan untuk membuat database dan tabel baru. Apabila anda
memasukkan YES, berarti user tersebut dapat membuat database dan tabel baru, dan apabila NO maka
user tersebut tidak dapat membuat database dan tabel baru.

Drop_priv, digunakan untuk memberikan hak akses kepada user untuk menghapus database maupun
tabel. Apabila anda memasukkan YES, berarti user tersebut dapat menghapus database dan tabel, dan
apabila NO maka user tersebut tidak dapat menghapus database dan tabel

Reload_priv, adalah hak akses untuk melakukan refresh server. Kolom ini biasanya hanya digunakan oleh
para administrator pada database MySQL.

Shutdown_priv, biasanya hanya digunakan oleh para DBA dalam menangani database server, jika bernilai
YES, user dapat mematikan server MySQL dari komputer manapun.

Process_priv, digunakan untuk mengetahui proses server MySQL itu sendiri.

File_priv, digunakan untuk mengakses file.

Grant_priv, digunakan untuk mengatur setiap user dalam mengakses database, yaitu database apa yang
boleh dan tidak untuk diakses.

References_priv, digunakan untuk melihat referensi dari server.

Index_priv, digunakan untuk melakukan pengaturan boleh tidaknya user membentuk sebuah kolom
index.

Alter_priv, alter merupakan salah satu perintah DML. Fungsinya untuk melakukan perubahan struktur
tabel yang telah dibuat. Apabila bernilai YES maka user dapat melakukan perubahan jika NO user tidak
dapat melakukan perubahan pada setiap tabel yang sudah dibuat

Menghapus Anonym User


Pada tabel user kita daat mengetahui bahwa setiap kolom (field) mewakili masing-masing 1 jenis ijin akses user.
Kita tampilkan data pada kolom user, host dan password saja.
mysql> select user, host, password from user;
+--------+-----------+------------+
| user
| host
| password
|
+--------+-----------+------------+
| root
| localhost | * xxxxxxxx |
| danish | %
| * xxxxxxxx |
| rizqan | %
| * xxxxxxxx |
| neny
| localhost | * xxxxxxxx |
| saya
| localhost | * xxxxxxxx |
| darwin | %
|
|
+--------+-----------+------------+
6 rows in set (0.00 sec)

User dan password yang kosong akan mengakibatkan siapapun dapat masuk begitu saja kedalam server database
mysql tanpa harus memasukkan identitas diri dan password. Pada kolom host diisi dengan tanda %, berarti user
yang bersangkutan dapat mengakses MySQL dari mesin (komputer) manapun juga.
Sebagai tindakan pengamanan awal, kita harus menghapus semua user tanpa identitas tersebut dengan perintah
DELETE yaitu DELETE FROM user WHERE user=; dan user tanpa password yaitu
mysql> DELETE FROM user WHERE user = 'darwin';
Query OK, 1 row affected (0.00 sec)

mysql> SELECT user, host, password FROM user;


+--------+-----------+------------+
| user
| host
| password
|
+--------+-----------+------------+
| root
| localhost | * xxxxxxxx |
| danish | %
| * xxxxxxxx |
| rizqan | %
| * xxxxxxxx |
| neny
| localhost | * xxxxxxxx |
| saya
| localhost | * xxxxxxxx |
+--------+-----------+------------+
5 rows in set (0.00 sec)

Memberikan Password Untuk Root


Pemberian Password untuk root dilakukan dengan perintah UPDATE yaitu
mysql> UPDATE user SET password = password('xxxxxx')
-> WHERE user = 'root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1

Changed: 1

Warnings: 0

Langsung dilanjutkan dengan perintah FLUSH


mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

Gantilah xxxxxx dengan password pilihan anda sendiri. Sebaiknya password hanya anda sendiri yang tahu dan
mudah anda ingat tapi tidak mudah ditebak oleh orang lain.
MySQL membaca grant tables hanya satu kali pada saat server pertama kali dijalankan. Bila kita menggunakan
perintah INSERT, UPDATE, DELETE pada kelima grant tables, maka harus diikuti perintah FLUSH. Perintah FLUSH
akan memerintahkan kepada sistem untuk membaca ulang kelima grant tables tanpa harus me-restart server
MySQL.

Manajemen User
Perintah GRANT digunakan untuk membuat user baru beserta ijin aksesnya. Sedangkan perintah REVOKE
digunakan untuk menghapus ijin akses user. Tetapi perintah REVOKE tidak berarti menghapus seorang user secara
permanen, dia tetap vbisa masuk (login) kedalam MySQL walaupun tidak berbuat apa-apa. Untuk menghapus
user secara permanen, digunakan perintah DELETE.
Bentuk umum dari perintah GRANT dan REVOKE adalah sebagai berikut :
Bentuk umum perintah GRANT
GRANT jenis_akses(nama_kolom) ON nama_database
TO nama_user IDENTIFIED BY nama_password
[WITH GRANT pilihan_akses]
Bentuk umum perintah REVOKE
REVOKE jenis_akses ON nama_database FROM user

Membuat User Baru


Untuk melakukan perintah ini kita harus masuk sebagai root. Kemudian lakukan perintah GRANT seperti dibawah
ini :
mysql> GRANT ALL PRIVILEGES ON *.* TO siapa@localhost
-> IDENTIFIED BY 'nama_password'
-> WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)
mysql> select user, host, password from user;
+--------+-----------+---------+
| user
| host
| password|
+--------+-----------+---------+
| root
| localhost | *xxxxxx |
| danish | %
| *xxxxxx |
| rizqan | %
| *xxxxxx |
| neny
| localhost | *xxxxxx |
| saya
| localhost | *xxxxxx |
| siapa | localhost | *xxxxxx |
+--------+-----------+---------+
6 rows in set (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO siapa@%


-> IDENTIFIED BY 'nama_password'
-> WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

Perintah kedua akan sama hasilnya dengan perintah dibawah ini :


mysql> GRANT ALL PRIVILEGES ON *.* TO siapa
-> IDENTIFIED BY 'nama_password'
-> WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

Perintah pertama dilakukan untuk membuat user baru dengan nama siapa dengan tingkatan akses sebagai
administrator, karena diberikan privileges ALL yang berarti dapat mengakses semua database yang ada didalam
server (ON *.*) selama lokasi pengakses tersebut dilakukan pada mesin lokal (siapa@localhost). Lokasi pengakses
biasa bisa disesuaikan dengan menggunakan alamat IP dan nama domain. Perintah WITH GRANT OPTION
memberikan wewenang kepada siapa untuk memberikan ijin akses (GRANT) kepada user-user lainnya.
Pada contoh perintah kedua, akses dapat dilakukan dari mesin mana saja diseluruh dunia selama user tersebut
dapat melakukan koneksi ke server MySQL (TO siapa@%) bisa juga ditulis tanpa tanda %, menjadi hanya TO
siapa.
mysql> GRANT USAGE ON *.* TO nana@localhost
-> IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.00 sec)

Walaupun diberikan perintan ON *.*, tetapi user nana ini tingkatannya adalah user biasa dengan tidak memiliki
izin akses apapun. Karena perintah yang digunakan adalah GRANT USAGE. Tetapi nana tetapi bisa masuk (login)
kedalam MySQL. User seperti ini disebut Dummy User (atau Blank User).
Untuk mengetahui ijin akses seorang user dapat dilihat pada tabel user kolom privileges. Bila kita melakukan
perintah SELECT * FROM USER, maka perhatikan pada kolom-kolom privileges isiannya harus tetap N pada user
selain root. Agar terlihat oleh layar, perintahnya akan dibagi-bagi :

mysql> SELECT user, select_priv, insert_priv, update_priv,


-> delete_priv, create_priv, drop_priv
-> FROM user;
+--------+-------------+-------------+-------------+-------------+-------------+-----------+
| user
| select_priv | insert_priv | update_priv | delete_priv | create_priv | drop_priv |
+--------+-------------+-------------+-------------+-------------+-------------+-----------+
| root
| Y
| Y
| Y
| Y
| Y
| Y
|
| danish | N
| N
| N
| N
| N
| N
|
| rizqan | N
| N
| N
| N
| N
| N
|
| neny
| Y
| Y
| Y
| Y
| Y
| Y
|
| saya
| Y
| Y
| Y
| Y
| Y
| Y
|
| siapa | Y
| Y
| Y
| Y
| Y
| Y
|
| nana
| N
| N
| N
| N
| N
| N
|
+--------+-------------+-------------+-------------+-------------+-------------+-----------+
7 rows in set (0.00 sec)

mysql> SELECT user, reload_priv, shutdown_priv, process_priv,


-> file_priv, grant_priv
-> FROM user;
+--------+-------------+---------------+--------------+-----------+------------+
| user
| reload_priv | shutdown_priv | process_priv | file_priv | grant_priv |
+--------+-------------+---------------+--------------+-----------+------------+
| root
| Y
| Y
| Y
| Y
| Y
|
| danish | N
| N
| N
| N
| N
|
| rizqan | N
| N
| N
| N
| N
|
| neny
| Y
| Y
| Y
| Y
| Y
|
| saya
| Y
| Y
| Y
| Y
| Y
|
| siapa | Y
| Y
| Y
| Y
| Y
|
| nana
| N
| N
| N
| N
| N
|
+--------+-------------+---------------+--------------+-----------+------------+
7 rows in set (0.00 sec)

mysql> SELECT user, references_priv, index_priv, alter_priv


-> FROM user;
+--------+-----------------+------------+------------+
| user
| references_priv | index_priv | alter_priv |
+--------+-----------------+------------+------------+
| root
| Y
| Y
| Y
|
| danish | N
| N
| N
|
| rizqan | N
| N
| N
|
| neny
| Y
| Y
| Y
|
| saya
| Y
| Y
| Y
|
| siapa | Y
| Y
| Y
|
| nana
| N
| N
| N
|
+--------+-----------------+------------+------------+
7 rows in set (0.00 sec)

Apabila user nana kolom privilegesnya diubah dari N menjadi Y, maka nana dapat mengakses semua database
yang ada didalam server MySQL.

Memberikan Ijin Akses Tertentu


Kita dapat memberikan ijin akses SELECT, INSERT, UPDATE dan DELETE kepada dian, yang hanya dapat digunakan
didalam database nanadb. Perintahnya sbb :
mysql> CREATE DATABASE nanadb;
Query OK, 1 row affected (0.01 sec)
mysql> CREATE DATABASE nanadb;
Query OK, 1 row affected (0.01 sec)
mysql> GRANT SELECT, INSERT, UPDATE, DELETE

-> ON nanadb.*
-> TO nana@localhost;
Query OK, 0 rows affected (0.09 sec)

Perintah diatas akan memberikan ijin akses (user privilileges) SELECT, INSERT, UPDATE dan DELETE kepada nana,
yang hanya bisa diakses dari mesin lokal (TO nana@localhost) dan hanya bisa menggunakan database nanadb
beserta seluruh tabelnya (ON nanadb.*). Dengan adanya perintah tersebut akan berpengaruh pada tabel user, db,
host, columns_priv, dan table_priv.
mysql> SELECT user, select_priv, insert_priv, update_priv,
-> delete_priv, create_priv, drop_priv
-> FROM db WHERE user = 'nana';
+------+-------------+-------------+-------------+-------------+-------------+-----------+
| user | select_priv | insert_priv | update_priv | delete_priv | create_priv | drop_priv |
+------+-------------+-------------+-------------+-------------+-------------+-----------+
| nana | Y
| Y
| Y
| Y
| N
| N
|
+------+-------------+-------------+-------------+-------------+-------------+-----------+
1 row in set (0.06 sec)

Memberikan Ijin Akses per Tabel dan per Kolom


Perintah GRANT dapat juga diterapkan pertabel dan perkolom tabel. Sebagai contoh kita membuat tabel baru
bernama kaset didalam database nanadb.
mysql> use nanadb;
Database changed
mysql> CREATE TABLE kaset (no_kaset int primary key,
-> judul_kaset varchar(35), nama_artis varchar(35), tgl_beli date null default "0000-0000");
Query OK, 0 rows affected (0.19 sec)

Misalnya kita mempunyai user baru yang bernama saya yang akan kita beri ijin akses SELECT dan INSERT saja, dan
hanya berlaku pada kolom judul_kaset dan nama_artis didalam tabel kaset pada database nanadb. Maka bentuk
perintahnya adalah :
mysql> GRANT
-> SELECT (judul_kaset, nama_artis),
-> INSERT (judul_kaset, nama_artis)
-> ON nanadb.kaset
-> TO saya@localhost
-> IDENTIFIED BY 'xxxxxx';
Query OK, 0 rows affected (0.00 sec)
Tampilkanlah tabel table_priv. Untuk dapat melihat secara keseluruhan kita bagi tampilan menjadi beberapa
kolom
mysql> use mysql;
Database changed
mysql> SELECT host, db, user, table_name, grantor
-> FROM tables_priv WHERE user = 'saya';
+-----------+--------+------+------------+----------------+
| host
| db
| user | table_name | grantor
|
+-----------+--------+------+------------+----------------+
| localhost | nanadb | saya | kaset
| root@localhost |
+-----------+--------+------+------------+----------------+
1 row in set (0.00 sec)

mysql> SELECT host, db, user, table_priv, column_priv


-> FROM tables_priv WHERE user = 'saya';
+-----------+--------+------+------------+---------------+
| host
| db
| user | table_priv | column_priv
|
+-----------+--------+------+------------+---------------+
| localhost | nanadb | saya |
| Select,Insert |
+-----------+--------+------+------------+---------------+
1 row in set (0.00 sec)

Ketentuan-ketentuan nama kolom yang bisa diakses oleh saya pada tabel kaset dapat dilihat pada tabel
columns_priv :
mysql> SELECT * FROM columns_priv WHERE user = 'saya';
+-----------+--------+------+------------+-------------+---------------------+---------------+
| Host
| Db
| User | Table_name | Column_name | Timestamp
| Column_priv
|
+-----------+--------+------+------------+-------------+---------------------+---------------+
| localhost | nanadb | saya | kaset
| judul_kaset | 2012-05-16 07:04:59 | Select,Insert |
| localhost | nanadb | saya | kaset
| nama_artis | 2012-05-16 07:04:59 | Select,Insert |
+-----------+--------+------+------------+-------------+---------------------+---------------+
2 rows in set (0.00 sec)

Memberikan Ijin Akses Berdasarkan Lokasi Pengakses


mysql> GRANT CREATE, DROP
-> ON nanadb.*
-> TO saya@localhost;
Query OK, 0 rows affected (0.00 sec)

Perintan TO sebenarnya terdiri dari dua bagian, yaitu nama user dan alamat / lokasi pengakses. Pada perintah TO
kita memberikan ijin akses kepada user nana dengan alamat mesin localhost. Alamat ini bisa kita isi dengan
alamat IP dan nama domain.

Meenghapus Ijin Akses User


Untuk menghapus ijin akses seorang user, kita menggunakan perintah REVOKE. Tetapi perintah REVOKE tidak
menghapus keberadaan seorang user hanya menghapus ijin aksesnya, user tersebut masih dapat login. Untuk
menghapus user secara permanen kita harus menggunakan perintah DELETE langsung ke tabel user. Bentuk
umum perintahnya adalah :
Bentuk umum perintah REVOKE
REVOKE jenis_akses ON nama_database
FROM nama_user
Untuk menghapus ijin akses SELECT dan INSERT dari user nana
mysql> REVOKE SELECT, INSERT
-> ON nanadb.*
-> FROM nana@localhost;
Query OK, 0 rows affected (0.00 sec)

Untuk menghapus ijin akses CREATE dan DROP dari user nana
mysql> REVOKE CREATE, DROP
-> ON nanadb.*
-> FROM nana@localhost;
Query OK, 0 rows affected (0.00 sec)

Untukmenghapus seluruh ijin akses dari user nana :


mysql> REVOKE ALL PRIVILEGES
-> ON nanadb.*
-> FROM nana@localhost;
Query OK, 0 rows affected (0.00 sec)

Perintah diatas akan menghapus semua ijin akses yang dimiliki oleh user nana. Untuk menghapus secara
permanen kita gunakan perintah
mysql> DELETE FROM user WHERE user = 'nana';
Query OK, 1 row affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

Anda mungkin juga menyukai