MYSQL
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.
Baca Slengkapnya...
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 RELOAD ON *.* TO ‘flush’@’localhost’ IDENTIFIED BY “flushpass”
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
Setelah itu jangan lupa untuk
mengaktifkan perubahan yang telah dilakukan.
Tidak ada komentar:
Posting Komentar