Bacar - Pelajari - Sebarkan
Server MySQL dapat dijalankan pada sistem operasi Windows maupun
keluarga UNIX. Adapun syntax query pada Win 9x dan keluarga
UNIX adalah sama. Syntax query pada MySQL tidak case sensitive.
A.
Login
ke Server MySQL:
Pada
Win 9x
Masuk pada mode command prompt ( run
-> command) , asumsikan MySQL diinstall pada direktori MySQL, maka user
harus pindah ke direktori MySQL lalu masuk ke direktori bin.
Asumsi, lokasi awal pada tampilan
command prompt adalah drive C, nama user adalah budi dan password adalah adi
syntaksnya: (note : nomor untuk
menunjukkan urutan langkah)
C:\cd mysql
C:\mysql>cd bin
C:\mysql\bin>winmysqladmin
C:\mysql\bin>mysql –u budi –p
password :***
Kalau berhasil akan ada prompt
Welcome to the MySQL monitor. Command end with
; tr\g.
Your MySQL connection id is 14 to server
version : 3.23.49
Type ‘help:’ or ‘\h’ for help. Type ‘\c’ to
clear the buffer.
- Pada
Keluarga UNIX
Pada shell ketik
# mysql –u budi –p
password:***
Kalau berhasil akan ada prompt
Welcome to the MySQL monitor. Command end with
; tr\g.
Your MySQL connection id is 14 to server
version : 3.23.49
Type ‘help:’ or ‘\h’ for help. Type ‘\c’ to
clear the buffer.
B. Strutur
Data Pada MySQL
Struktur penyimpanan data pada MySQL adalah sebagai berikut
Database
/ \
Table Table
/
\ / \
Field
Field Field Field
Database default yang dimiliki oleh root adalah mysql dan test.
Untuk dapat melihat database yang terdapat
pada MySQL digunakan perintah
mysql>show databases;
kemudian akan terlihat
+-------------------------+
|
Database |
+-------------------------+
|
mysql |
|
test |
+-------------------------+
Untuk dapat mempergunakan database mysql, digunakan
mysql> use mysql;
Untuk melihat isi database mysql ( table
yang terdapat di dalam database
mysql )
mysql> show tables;
( Note : Jika anda belum memilih
database yang dipergunakan, maka commandnya
menjadi
mysql> show tables from mysql; )
kemudian akan telihat :
Untuk melihat isi table user ( fields yang terdapat di dalam table user)
mysql>show fields from user;
kemudian akan terlihat:
Untuk melihat isi data yang terdapat pada
field host, user, password digunakan
mysql> select host, user, password from
user;
Untuk melihat semua data yang terdapat pada
field user digunakan
mysql>
select * from user;
Root
dapat menambahkan user baru pada server MySQL
Misalkan root menambahkan user budi dengan
password adi pada host localhost.
mysql> insert into user values(“
localhost”,”budi”,password(“adi”),”Y”,”Y”,”Y”, ”Y”,”Y”,”N”,”N”,”N”,”N”,”Y”,”N”,”Y”,”Y”,”Y”);
Sebagai
root, anda harus selalu mengawasi masalah keamanan data pada database server
anda, salah satu cara pencegahan pengaksesan database oleh orang lain dan
pemakaian hak akses database anda, adalah dengan cara memberikan password kepada
para user. Password yang disimpan dalam table user seharusnya disimpan dalam
bentuk enkripsi, oleh sebab itu dipergunakan perintah
password(“adi”)
pada
sintaks diatas, untuk user-user yang tidak memiliki password, sebaiknya user tersebut
di remove, sintaksnya:
mysql> delete from user where
password=’’;
Root
dapat mengubah passwordnya dengan cara
mysql> update user set
password=password(“password_baru”) where
user=”root”;
Untuk lebih jelasnya, baca
bagian E.
C. Database dan Table
Database Level
- Membuat database
Untuk
membuat database baru, sehingga tidak berlaku jika database sudah ada atau anda
tidak memiliki privilege.
Sintaksnya
:
CREATE
DATABASE nama_db
- Menghapus database
Untuk
menghapus database beserta seluruh table di dalamnya. Perintah ini tidak
berlaku jika database tidak ada atau anda tidak memiliki privilege. Sintaksnya :
DROP DATABASE
nama_db
- Menggunakan database
Untuk
menjadikan database menjadi default dan referensi dari table yang nantinya anda
gunakan. Perintah ini tidak berlaku jika database tidak ada atau anda tidak
memiliki privilege. Sintaksnya :
USE nama_db
- Menampilkan database
Untuk
menampilkan daftar yang ada dalam system saat itu. Sintaksnya :
SHOW DATABASES
Tampilannya
adalah :
+-----------------+
| Database |
+-----------------+
| contoh_db |
| mysql |
| test |
| ujian |
+-----------------+
4 rows in set (0.00 sec)
Table Level
- Membuat table
Untuk membuat table
minimal anda harus menentukan namanya dan tipe kolom yang anda inginkan.
Sintaks yang paling sederhana (tanpa ada definisi lain) adalah :
CREATE TABLE
nama_tbl
(kolom1
tipekolom1(),kolom2 tipekolom2(), …)
Contoh
: Anda ingin membuat table dengan nama profil yang memiliki kolom nama (bertipe
char, lebar 20), kolom umur (bertipe integer), kolom jenis_kelamin (bertipe
enum, berisi M dan F). Sintaksnya :
CREATE
TABLE profil (
nama CHAR(20), umur INT
NOT NULL,
jenis_kelamin
ENUM(‘F’,’M’) );
Sedangkan
perintah yang agak lengkap dalam membuat sebuah table adalah dengan menyertakan
definisi tertentu. Misalnya perintah seperti ini :
CREATE TABLE peserta (
No SMALL
INT UNSIGNED NOT NULL AUTO_INCREMENT,
Nama
CHAR(30) NOT NULL,
BidangStudi
ENUM(‘TS’,’WD’) NOT NULL,
PRIMARY KEY
(No),
INDEX
(Nama, BidangStudi) );
Perintah
di atas berarti membuat table peserta dengan kolom No sebagai PRIMARY KEY yaitu
indeks table yang unik yang tidak bisa diduplikat dengan atribut AUTO_INCREMENT
yaitu kolom yang otomatis dapat mengurutkan angka yang diisikan padanya.
Sedangkan kolom Nama dan BidangStudi dijadikan indeks biasa.
- Membuat indeks pada table
Menambahkan
indeks pada table yang sudah ada baik yang unik ataupun yang biasa.
Sintaksnya
:
CREATE INDEX nama_index ON nama_tbl
(nama_kolom)
CREATE UNIQUE
INDEX nama_index ON nama_tbl (nama_kolom)
- Menghapus table
Untuk
menghapus table dalam database tertentu. Jika dilakukan maka semua isi, indeks
dan atribut lain akan terhapus. Sintaksnya :
DROP
TABLE nama_tbl
- Menghapus indeks
Untuk
menghapus indeks pada suatu table. Sintaksnya :
DROP
INDEX nama-index ON nama_tbl
- Melihat
informasi table
Untuk melihat table apa saja yang ada
di database tertentu. Sintaksnya :
SHOW TABLES
FROM nama_db
Sedangkan
untuk melihat deskripsi table atau informasi tentang kolom gunakan sintaks :
DESC nama_tbl
nama_kolom
atau SHOW
COLUMNS FROM nama_tbl FROM nama_db
Misal
untuk contoh di atas akan ditampilkan :
+-----------------------------+
| Tables_in_contoh_db |
+-----------------------------+
| peserta |
| profil |
+-----------------------------+
2 rows in set (0.00 sec)
+-------------------------+-------------------------+-------+--------+---------------+------+
| Field |
Type | Null | Key | Default
|Extra|
+-------------------------+-------------------------+-------+--------+---------------+------+
| nama |
char(20) | YES | |
NULL | |
| umur |
int(11) | | 0 | | |
| jenis_kelamin | enum('F','M') | YES | |
NULL | |
+-------------------------+-------------------------+-------+--------+---------------+------+
3 rows in set (0.02 sec)
- Mendapatkan atau menampilkan
informasi dari table
Untuk
menampilkan isi table dengan option-option tertentu. Misalnya untuk menampilkan
seluruh isi table digunakan :
SELECT *
FROM nama_tbl
Untuk
menampilkan kolom-kolom tertentu saja :
SELECT
kolom1,kolom2,... FROM nama_tbl
Untuk
menampilkan isi suatu kolom dengan kondisi tertentu
SELECT
kolom1 FROM nama_tbl WHERE kolom2=isikolom
- Modifikasi struktur table
Dapat digunakan untuk
mengganti nama table atau mengubah strukturnya seperti manambah kolom atau
indeks, menghapus kolom atau indeks, mengubah tipe kolom dsb. Sintaks umum :
ALTER
TABLE nama_tbl action
Untuk
menambah kolom baru di tempat tertentu dapat menggunakan :
ALTER
TABLE nama_tbl
ADD
kolom_baru type() definisi
Untuk
menambah kolom_baru bertipe integer setelah kolom1 digunakan :
ALTER
TABLE nama_tbl
ADD
kolom_baru INT NOT NULL AFTER kolom1
Untuk
menambah indeks baru pada table tertentu baik yang unik ataupun yang biasa:
ALTER TABLE nama_tbl ADD INDEX nama_index (nama_kolom)
ALTER TABLE nama_tbl ADD UNIQUE nama_indeks (nama_kolom)
ALTER TABLE nama_tbl ADD PRIMARY KEY
nama_indeks (nama_kolom)
Untuk
mengubah nama kolom dan definisinya, misalnya mengubah nama kolom_baru dengan
tipe integer menjadi new_kolom dengan tipe char dengan lebar 30 digunakan:
ALTER
TABLE nama_tbl
CHANGE
kolom_baru new_kolom CHAR(30) NOT NULL
Untuk
menghapus suatu kolom dan seluruh atributnya, misal menghapus kolom1 :
ALTER
TABLE nama_tbl DROP kolom1
Untuk
menghapus indeks baik yang unik ataupun yang biasa digunakan :
ALTER
TABLE nama_tbl DROP nama_index
ALTER
TABLE nama_tbl DROP PRIMARY KEY
- Modifikasi informasi dalam table.
Untuk
menambah record atau baris baru dalam table, sintaksnya :
INSERT
INTO nama_tbl (nama_kolom) VALUES (isi_kolom)
atau INSERT
INTO nama_tbl SET nama_kolom=’isi_kolom’
Misalnya
untuk menambah dua baris pada table
profil dengan isi nama = deden
& ujang dan isi umur = 17 & 18
adalah :
INSERT INTO
profil (nama,umur) VALUES (deden,17), (ujang,18)
atau
INSERT INTO profil SET nama=’deden’,
umur=’17’;
INSERT
INTO profil SET nama=’ujang’, umur=’18’;
Untuk
memodifikasi record atau baris yang sudah ada yang bersesuaian dengan suatu
kolom. Misalnya untuk mengubah umur deden menjadi 18 pada contoh di atas dapat
digunakan sintaks :
UPDATE
profil SET umur=18 WHERE nama=’deden’;
Untuk
menghapus record atau baris tertentu dalam suatu table. Misalnya untuk
menghapus baris yang ada nama ujang digunakan sintaks :
DELETE
FROM profil WHERE nama=’ujang’;
Jika
WHERE tidak disertakan maka semua isi dalam table profil akan terhapus.
D. User dan Privileges
Dalam system MySQL user diberikan hak
istimewa (privilege) untuk mengakses suatu database beserta isinya yang
masing-masing user dapat berbeda haknya. Jadi semacam set permisi dalam file
system UNIX. Privilege tersebut terbagi atas :
Privilege untuk database dan table
Merupakan privilege yang
mengoperasikan perintah-perintah dalam database dan table, terdiri atas :
§
CREATE
Mengijinkan user untuk membuat
database dan table tapi tidak untuk membuat indeks.
§
DELETE
Mengijinkan user untuk menghapus
record pada table.
§
DROP
Mengijinkan user untuk menghilangkan
database dan table tapi tidak untuk menghilangkan indeks.
§
INDEX
Mengijinkan user untuk membuat indeks
dari table.
§
INSERT
Mengijinkan user untuk memasukkan
record baru pada table.
§
REFERENCES
Biasanya tidak digunakan.
§
SELECT
Mengijinkan user untuk menampilkan
data dari table dengan perintah SELECT. Privilege ini tidak berguna untuk
perintah SELECT yang tidak berhubungan dengan table.
§
UPDATE
Mengijinkan user untuk memodifikasi
record yang sudah ada di dalam table.
§
ALTER
Megijinkan
user untuk menggunakan perintah ALTER TABLE. Kadang-kadang cukup berbahaya
memberikan hak ini pada sembarang user. Misalnya seorang user diberikan akses
pada table-1 tapi tidak untuk table-2. Jika ia memiliki hak ini, maka ia dapat
merubah nama table-2 menjadi table-1 sehingga otomatis ia bisa mengaksesnya.
Privilege untuk administrative
Merupakan privilege untuk operasi
administrasi server dan mengontrol user dalam memberikan hak administratif pada
user lain, terdiri atas :
§ FILE
Mengijinkan
user untuk membaca atau menulis file di server. User ini akan dapat melihat
perintah yang sedang dieksekusi oleh orang lain. Sebagai contoh, seseorang
dengan hak seperti ini dapat melihat pasword user atau bahkan root yang sedang
dimodifikasi didalam tabel user. Jadi akan sangat berbahaya memberikan hak ini
pada sembarang user.
§ GRANT
Mengijinkan user untuk memberikan
privilege yang dimilikinya kepada orang lain termasuk GRANT privilege. Anda
harus berhati-hati memberikan hak ini karena jika ada dua user memiliki
privilege yang berbeda tapi sama-sama punya GRANT privilege, kemudian saling
memberikan privilege masing-masing, maka tentunya mereka akan lebih luas
aksesnya.
§ PROCESS
Mengijinkan user untuk melihat
informasi tentang proses apa yang sedang dijalankan server dengan perintah SHOW
PROCESSLIST atau untuk membunuh proses yang sedang berjalan dengan perintah
KILL.
§ RELOAD
Mengijinkan user untuk melakukan
operasi administrasi server seperti melakukan FLUSH ataupun perintah mysqladmin
reload, refresh, flush-host, flush-logs, flush-privileges, dan flush-tables.
§ SHUTDOWN
Mengijinkan user untuk menjalankan
perintah mysqladmin shutdown untuk mematikan server.
Semua privilege di atas merupakan
kolom-kolom yang terletak di dalam table-tabel pada database mysql.
Berikut contoh tampilan kolom dalam
tabel user :
+-----------+-------+------------------+-------------+-------------+
|
host | user | password | select_priv | insert_priv |
+-----------+-------+------------------+-------------+-------------+
|
localhost | | | N | N |
|
localhost | root | 19a8f79627287ead |
Y | Y |
|
localhost | trans | 3d0b6786550a1849 | Y | Y |
+-----------+-------+------------------+-------------+-------------+
+-------------+-------------+-------------+-----------+-------------+
|
update_priv | delete_priv | create_priv | drop_priv | reload_priv |
+-------------+-------------+-------------+-----------+-------------+
| N | N | N | N | N |
| Y | Y | Y | Y | Y |
| Y | Y | Y | Y | Y |
+-------------+-------------+-------------+-----------+-------------+
+---------------+--------------+-----------+------------+
|
shutdown_priv | process_priv | file_priv | grant_priv |
+---------------+--------------+-----------+------------+
| N | N | N | N |
| Y | Y | Y | Y |
| N | N | N | N |
+---------------+--------------+-----------+------------+
+-----------------+------------+------------+
|
references_priv | index_priv | alter_priv |
+-----------------+------------+------------+
| N | N | N |
| Y | Y | Y |
| N | Y | Y |
+-----------------+------------+------------+
Untuk lebih jelasnya lihat table berikut.
Struktur Grant Tabel Myself
user db host tables_priv column_priv
Kolom Akses
Host Host Host Host Host
User Db Db Db Db
Password User User User
Table_name Table_name
Column_name
Kolom Privilege Database/Tabel
Alter_priv Alter_priv Alter_priv - -
Select_priv Select_priv Select_priv - -
Insert_priv Insert_priv Insert_priv - -
Index_priv Index_priv Index_priv - -
Insert_priv Insert_priv Insert_priv - -
Index_priv Index_priv Index_priv - -
Update_priv Update_priv Update_priv - -
Delete_priv Delete_priv Delete_priv - -
Create_priv Create_priv Create_priv - -
Drop_priv Drop_priv Drop_priv - -
Delete_priv Delete_priv Delete_priv - -
Create_priv Create_priv Create_priv - -
Drop_priv Drop_priv Drop_priv - -
Reference_priv Reference_priv Reference_priv - -
Kolom Privilege Administratif
File_priv Grant_priv Grant_priv Table_priv Column_priv
Grant_priv - - - -
Reload_priv - - - -
Shutdown_priv - - - -
Process_priv - - - -
Shutdown_priv - - - -
Process_priv - - - -
E. Mengeset User
Membuat
User Baru
Setelah anda mengetahui tentang grant
table dan hak privilege, anda dapat mulai membuat user baru dan memberikan hak
istimewa kepada mereka. Secara umum sintaksnya adalah :
GRANT privilege (kolom)
ON
apa
TO
user INDENTIFIED BY “password”
WITH
GRANT OPTION
Untuk menggunakan perintah di atas
anda dapat mengganti kata yang dicetak miring dengan ketentuan sebagai berikut
:
§ privilege
Diiisi dengan hak privilege seperti
yang telah diterangkan di atas. Hak privilege yang tidak dapat diisikan di
bagian ini adalah GRANT privilege karena ia didefinisikan di tempat lain. Selain
itu, dapat juga diisikan perintah khusus yaitu :
ALL untuk
memberikan semua hak privilege pada user
USAGE jika
tidak ada hak privilege yang diberikan, meskipun user dibuat
§ kolom
Diisi dengan nama kolom tertentu yang
padanya diberikan hak privilege Ini adalah optional, dan jika lebih dari satu
kolom maka dipisahkan dengan tanda koma.
§ apa
Diisi dengan nama level yang akan
diberikan hak privilege padanya. Level di sini bisa berarti global (untuk semua
database dan semua table), datebase tertentu dengan semua table di dalamnya,
ataupun untuk table tertentu. Sedangkan untuk kolom didefinisikan dengan
perintah kolom seperti di atas.
§
user
Diisi dengan user yang akan memperoleh
hak privilege. Terdiri atas nama user dan nama host, jadi bisa juga anda
memberikan hak privilege yang berbeda untuk dua user dengan nama yang sama tapi
dari host yang berbeda. Nama user di sini adalah nama user di system MySQL, dan
bukan nama user di Linux. Tapi biasanya MySQL akan langsung menjadikan nama
user di Linux sebagai default jika saat koneksi tidak menyebutkan nama secara
spesifik.
§
password
Diisi dengan password yang akan
digunakan oleh user. Jika password dikosongkan berarti user tersebut dapat
masuk ke system dengan tanpa password. Password ditulis di dalam tanda string
dengan tulisan biasa karena dengan perintah GRANT ini, otomatis password akan
terenkripsi.
Sedangkan perintah WITH GRANT OPTION
adalah optional. Dengan perintah ini
GRANT privilege akan diberikan kepada user.
Perlu diketahui bahwa nama user,
password, nama database, dan nama table adalah case sensitive, artinya
sensitif dengan besar-kecilnya huruf.
Sedangkan nama host dan nama kolom dalam grant table tidak sensitif. Berikut
diberikan beberapa contoh penggunaan perintah ini :
WITH GRANT OPTION
Notasi *.* berarti user diberikan hak
untuk mengakses semua database dan semua table. Di sini anda menjadikan seorang
user sebagai superuser (setingkat root) dengan memberikan seluruh hak privilege
termasuk GRANT privilege kepadanya. Ia
§
GRANT ALL ON contoh_db.* TO ‘boris’@’localhost’ IDENTIFIED BY “ruby”
GRANT
ALL ON contoh_db.* TO ‘fred’@’ares.mars.net’
IDENTIFIED BY “quartz”
Notasi contoh_db.* berarti user diberikan hak untuk mengakses
semua table di dalam database contoh_db. Di sini anda memberikan semua hak
privilege kecuali GRANT privilege pada seorang user dari host tertentu.
Karakter ‘%’ berarti untuk semua
host. Jadi user tersebut dapat mengakses
semua table dalam database contoh_db dari seluruh host di dunia. Hal ini tentu
saja sangat tidak aman kecuali anda memiliki pertimbangan tertentu.
GRANT ALL ON contoh_db.* TO ‘rick’@’192.168.1.0/28’ IDENTIFIED BY
“air”
Nama host dapat juga diganti dengan
nomor IP yang spesifik seperti baris pertama. Pada baris kedua berarti user
dapat akses dari seluruh nomor IP di belakang 192.168.1. Sedangkan pada baris
ketiga user yang akses berasal dari range IP 192.168.1.0 – 192.168.1.15.
GRANT SELECT ON contoh_db.* TO ‘roy’@’%’ IDENTIFIED BY “rock”
GRANT SELECT,INSERT,DELETE,UPDATE ON
contoh_db.* TO ‘nani’@’%’
IDENTIFIED BY “neon”
Perintah-perintah
di atas memberitahukan bahwa user dibatasi hak privilege-nya hanya pada hal-hal
tertentu saja.
§
GRANT
SELECT ON contoh_db.anggota TO ‘asisten’@’localhost’
IDENTIFIED BY “apple”
GRANT UPDATE (nama) ON
contoh_db.anggota TO ‘asisten’@’localhost’
GRANT UPDATE (alamat,TTL,status) ON
contoh_db.anggota
TO ‘asisten’@’localhost’
Pada perintah pertama user dibolehkan
menampilkan table anggota dari database contoh_db serta mengeset
passwordnya. Sedangkan pada baris kedua
dan ketiga password tidak dituliskan lagi karena sebelumnya sudah ditentukan
untuk user yang sama dan hak akses table yang sama pula.
Itulah beberapa kegunaan perintah
GRANT untuk membuat user baru dan memberikan hak akses kepadanya. Untuk melihat
kembali privilege apa saja yang telah anda berikan kepada seorang user gunakan
perintah :
SHOW
GRANTS FOR user@host
Misal untuk user robi sebagai
superuser seperti contoh di atas akan terlihat tampilan berikut:
+--------------------------------------------------------------------------------------------------------------+
| Grants for
robi@localhost
|
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON
*.* TO 'robi'@'localhost' IDENTIFIED BY PASSWORD '5520dcc8561f8186' WITH GRANT
OPTION |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Sebenarnya prinsip kerja perintah ini
adalah memasukkan informasi atau data ke kolom-kolom dalam table privilege.
Untuk privilege dengan level global dimasukkan
ke table user, untuk privilege level database ke tabel db, sedangkan
untuk privilege dengan level table dan kolom dimasukkan ke table tables_priv
dan columns_priv.
Misalnya perintah untuk membuat
superuser yaitu :
WITH GRANT OPTION
akan sama dengan perintah INSERT di
table user seperti berikut :
INSERT INTO user VALUES
(“localhost”,”robi”,PASSWORD(“gold”),”Y”,”Y”, ”Y”,”Y”,”Y”,”Y”,”Y”,”Y”,”Y”,”Y”,”Y”,”Y”,”Y”,”Y”)
dengan tampilan tabel user sebagai
berikut :
+-----------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
| Host | User | Password | Select_priv | Insert_priv |
Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv |
Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv |
Index_priv | Alter_priv |
+-----------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
| localhost | robi|
5520dcc8561f8186 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
+-----------+------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
1 row in set (0.00 sec)
Atau untuk user yang dibatasi hak
privilege-nya seperti :
GRANT
RELOAD ON *.* TO ‘flush’@’localhost’
IDENTIFIED BY “flushpass”
akan sama dengan perintah :
INSERT
INTO user (Host,User,Password,Reload_priv)
VALUES
(“localhost”,”flush”,PASSWORD(“flushpass”),”Y”)
dengan tampilan dalam tabel user
sebagai berikut :
+-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
| Host | User
| Password | Select_priv |
Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv
| Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv |
Index_priv | Alter_priv |
+-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
| localhost | flush |
5cee8877294d3476 | N | N | N | N | N | N | Y | N | N | N | N | N | N
| N |
+-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
1 row in set (0.00 sec)
Jadi yang diset Y hanya privilege
RELOAD saja.
Sedangkan untuk privilege dengan level
database seperti :
GRANT
ALL ON contoh_db.* TO ‘boris’@’localhost’
IDENTIFIED BY “ruby”
maka selain dituliskan di table user,
data juga dituliskan di table db yaitu :
INSERT
INTO user (Host,User,Password)
VALUES (“localhost”,”boris”,PASSWORD(“ruby”))
INSERT
INTO db VALUES (“localhost”,”contoh_db”,”boris”,
”Y”,”Y”,”Y”,”Y”,”Y”,”Y”,”N”,”Y”,”Y”,”Y”)
kolom yang berisi “N” adalah kolom
GRANT privilege karena pada perintah ini memang tidak menyertakan hak GRANT
privilege kepada user. Tampilan pada tabel user :
+-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
| Host | User
| Password | Select_priv |
Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv
| Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv |
Index_priv | Alter_priv |
+-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
| localhost | boris |
545f44c858d7b58a | N | N | N | N | N | N | N | N | N | N | N | N | N | N |
+-----------+-------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+
1 row in set (0.00 sec)
terlihat bahwa semua privilege dalam
tabel user diset ‘N’. Sedangkan dalam tabel db :
+-----------+-----------+-------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+
| Host | Db | User
| Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv |
Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv |
+-----------+-----------+-------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+
| localhost | contoh_db | boris |
Y | Y | Y
| Y | Y | Y | N | Y | Y | Y |
+-----------+-----------+-------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+
1 row in set (0.00 sec)
terlihat bahwa semua diset ‘Y’ kecuali
privilege GRANT.
Namun perlu diingat bahwa jika anda
langsung memasukkan data ke tabel privilege, anda harus mengaktifkan semua
perubahan yang anda lakukan yaitu dengan perintah :
FLUSH PRIVILEGES;
Atau anda keluar dulu dari MySQL
kemudian melakukan perintah :
# mysqladmin –u root –p reload
Menghapus user dan mencabut hak privilege
Untuk menghapus user MySQL anda dapat
melakukan perintah DELETE pada tabel user dengan menghapus nama user dan nama
host-nya.
DELETE FROM user WHERE
User=”nama_user” and Host=”nama_host”
Sedangkan untuk mencabut hak privilege
seorang user dapat dilakukan dengan sintaks berikut :
REVOKE
privilege (kolom) ON apa FROM user
No comments:
Post a Comment