Sabtu, 14 Mei 2011

Administrasi Umum MySQL



Administrasi Umum MySQL


1. Pendahuluan
Dalam tugas administrasi MySQL ada beberapa hal penting yang perlu diketahui dan dilaksanakan :
? Memulai dan mematikan server (startup & shutdown)
Anda harus dapat memulai dan menghentikan aktifitas server secara manual lewat command line dan harus mengetahui bagaimana membuat server dapat hidup ataupun mati secara otomatis saat system booting atupun shutdown. Penting juga untuk mengetahui apa yang dilakukan jika server crash atau tidak bisa start sebagaimana biasa.
? Mengatur dan memelihara (maintenance) user account
Anda harus mengetahui perbedaan antara user MySQL dengan user di Linux. Anda juga harus tahu bagaimana cara setup user account di MySQL secara spesifik, seperti user siapa saja yang bisa koneksi ke server dan dari mana saja ia boleh koneksi. User baru harus anda beritahu bagaimana seharusnya ia dapat terkoneksi ke server.
? Memelihara file log
Anda harus mengetahui file log mana yang bisa dimaintain dan bagaimana cara melakukan maintain file log.
? Membackup database dan menyalinnya
Bakcup ini sangat penting untuk dibuat untuk persiapan jika system crash. Anda harus dapat membackupnya kemudian menyalinnya kembali jka system sudah baik. Dalam membackup database ini, terdapat cara tersendiri yang berbeda dengan cara backup biasa di Linux, karena database merupakan system yang independent.

Selain hal-hal di atas yang penting lagi adalah memastikan bahwa data yang anda disimpan dalam keadaan aman. Administrator system MySQL bertanggung jawab untuk mengontrol akses data di server dan harus tahu hal-hal berikut :

? Keamanan file system
Anda harus memastikan bahwa user yang tidak berkepentingan tidak bisa mengakses database anda, sehingga anda harus bagaimana setup user account di Linux untuk server MySQL, bagaimana setup permisi data dan direktori sehingga ia hanya dimiliki oleh user tertentu, dan bagaimana memulai server dengan mengaktifkan hak istimewa (privileges) user.
? Keamanan system
Anda harus mengetahui bagaimana system keamanan MySQL bekerja sehingga pada saat setup user account, anda dapat memberikan hak istimewa (privilege) yang semestinya. User yang terkoneksi via network harus diset permisinya sehingga ia hanya bisa melakukan hak privilege tertentu saja.

2. Mengamankan Instalasi MySQL yang baru
Ketika anda baru selesai menginstall MySQL, akan terdapat dua buah database yaitu database mysql dan database test. Anda dapat terkoneksi ke MySQL tanpa password lewat localhost sebagai root, dan anda akan mempunyai semua hak privileges dan bisa melakukan apa saja. Jika anda masuk ke system MySQL sebagai user biasa (anonymous) dengan tanpa password, maka anda akan masuk ke system dan hanya boleh mengakses databases ‘tes’ saja, serta tidak bisa melakukan hak administratif.

Koneksi ke server dari localhost dapat dilakukan dengan menuliskan hostname secara spesifik dengan localhost atau dengan nama host-nya. Sebagai contoh, jika nama host adalah smkti.sch.id, maka klien dalam host tersebut dapat terkoneksi ke server tanpa password untuk mengakses database test dengan perintah :
$ mysql –h localhost test
$ mysql –h smkti.sch.id test

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11 to server version: 3.23.40
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

Kenyataan bahwa anda dapat terkoneksi tanpa password ke server sebagai root menandakan bahwa server tidak aman. Untuk itu pertama kali yang harus anda lakukan setelah instalasi adalah mengeset password untuk root. Lakukan perintah berikut :

$ mysqladmin –u root password “password_anda”
dengan “password_anda” anda isi dengan password yang akan anda gunakan. Setelah anda setup password root, maka anda perlu mengetikkan password anda setiap kali koneksi ke MySQL sebagai root.

3.Mengatur Startup dan Shutdown untuk Server MySQL

Salah satu tujuan dalam administrasi MySQL adalah memastikan bahwa server selalu berjalan sebaik mungkin sehingga klien dapat mengaksesnya setiap saat. Namun kadang-kadang ada baiknya server dimatikan untuk beberapa saat karena sesuatu hal.
Server dapat dihidupkan secara otomatis maupun manual. Jika dihidupkan secara manual, ia akan memakai account user yang menghidupkannya dan berjalan sebagai user tersebut. Hal ini akan mengakibatkan masing-masing user dapat menjalankan MySQL sendiri-sendiri sehingga akan terjadi perbedaan kepemilikan dalam data-data di system MySQL. Ini tidak baik untuk administrasi dan hak akses akan dibatasi untuk user selain root .
Hal tersebut dapat dicegah dengan membuatkan user dan group tersendiri untuk system MySQL sehingga server dapat berjalan sebagai user tersebut.
Prosedurnya adalah sbb :
1. Buatkan account untuk MySQL dengan user dan group mysql.
# groupadd mysql
# useradd –g mysql mysql

2. Ubahlah kepemilikan direktori data MySQL untuk user dan group mysql.
# chown –R root /usr/local/mysql
# chown –R mysql /usr/local/mysql/var
# chgrp –R mysql /usr/local/mysql

Setelah itu server dapat dihidupkan dengan cara berikut :
? Gunakan script safe_mysqld dengan penambahan option user mysql dengan asumsi grant table telah terinstall. Script ini akan mencari lokasi server dan direktori data MySQL.
# safe_mysqld –-user=mysql &
? Dengan menggunakan script mysql.server. Sebenarnya script ini juga menggunakan fasilitas safe_mysqld, namun ia lebih mudah digunakan dan merupakan script yang biasa digunakan saat booting. Ia tersimpan di direktori support-files dalam source MySQL. Anda dapat memulai, menghentikan, mereload, atau melihat status server MySQL dengan menggunakan script ini.
# support-files/mysql.server start

Jika anda ingin menggunakan script mysql.server saat booting, anda dapat melakukan prosedur berikut :
? Salin file mysql.server tersebut dan letakkan di direktori /usr/local/mysql/mysql
# cp mysql.server /usr/local/mysql/mysql
? Ubah permisi filenya sehingga dapat diekseskusi
# chmod 750 /usr/local/mysql/mysql
? Edit file /etc/rc.d/rc.local dan tambahkan di baris terbawah :
/usr/local/mysql/mysql start

Sedangkan untuk menghentikan aktivitas server dapat dilakukan hal-hal berikut :
? Menggunakan perintah mysqladmin
# mysqladmin shutdown –u root –p
Enter password : ***
? Membunuh daemon mysql yaitu mysqld
# killall mysqld
? Dengan script mysql.server
# mysql.server stop


4. Mengatur User Account

Seorang administrator MySQL harus mengetahui bagaimana mengeset user account dengan menentukan user mana saja yang boleh terkoneksi, dari mana ia boleh terkoneksi dan apa saja yang boleh dilakukan saat terkoneksi ke server. Namun sebelumnya ada yang harus diketahui terlebih dahulu yatu hubungan antara user, grant table MySQL, dan hak istimewa (privilege).

4.1 Grant Tabel MySQL
Seperti yang telah diterangkan sebelumnya dalam system MySQL yan baru diinstall terdapat dua buah database yaitu database mysql, yang disebut juga grant table MySQL, dan database test. Di dalam database mysql tersebut terdapat lima buah table yaitu :

? Tabel user
Berisi daftar user yang boleh koneksi ke server beserta passwordnya yang terenkripsi, ditambah beberapa hak istimewa (privilege) yang dipunyainya. Privilege yang diberikan dalam table user bersifat global dan berlaku untuk semua database dalam system MySQL. Jadi misalnya seorang user diberikan privilege DELETE, maka ia dapat menghapus record dari semua table.
? Tabel db
Berisi daftar database dan daftar user yang dibolehkan untuk mengaksesnya. Privilege ditentukan di sini untuk masing-masing database.
? Tabel host
Digunakan bersama dengan table db untuk mengontrol hak akses pada suatu database dari host tertentu. Fungsi dari table ini sebenarnya telah dilakukan oleh table db sehingga table ini hampir jarang digunakan.
? Tabel tables_priv
Menentukan hak privilege untuk mengakses seluruh kolom dari table tertentu.
? Tabel columns_priv
Menentukan hak privilege untuk kolom. Privilege di sini ditentukan untuk masing-masing kolom dalam table tertentu.
Dapat dilihat dengan perintah :
$ mysqlshow mysql -u root -p
Enter password:
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+



4.2 Hak Istimewa (Privilege)
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 MySQL
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 - -
Update_priv Update_priv Update_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 - - - -



5. 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 :

? GRANT ALL ON *.* TO ‘robi’@’localhost’ IDENTIFIED BY “gold”
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.

? GRANT ALL ON contoh_db.* TO ‘max’@’%’ IDENTIFIED BY “diamond”

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 ‘joe’@’192.168.1.10’ IDENTIFIED BY “water”
GRANT ALL ON contoh_db.* TO ‘ardi’@’192.168.1.%’ IDENTIFIED BY “snow”
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 :
GRANT ALL ON *.* TO ‘robi’@’localhost’ IDENTIFIED BY “gold”
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


6. 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.











sip....

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More