A. Memberi password root
Sebelumnya, kalau kita ingin mengakses database MySQL kita, maka hanya
tinggal kita ketikkan mysql dan kita bisa langsung mengakses database
MySQL kita. Namun, bagaimana jika ada orang yang kita tidak kehendaki
mengetikkan kata itu juga? Tentu orang tersebut bisa langsung mengakses
database kita dan bisa mengubah atau malah menghapus database-database
yang ada di MySQL. Hal itu tentu akan sangat kita hindari. Untuk
menghindari hal itu, sebaiknya kita memberikan password kepada database
kita. Format untuk memberi password adalah:
# mysqladmin -u root password password_kita
misalnya kita ingin memberikan password pada MySQL kita berupa 123456, maka ketikkan:
# mysqladmin -u root password 123456
Jadi kalau ada orang yang hanya menulis mysql untuk masuk ke database kita, akan terjadi error seperti berikut:
ERROR 1045 (28000): Access denied for user ‘root’@'localhost’ (using password: NO)
Untuk mengakses mysql yang sudah diberi password, maka ketikkan:
# mysql -u root -p
dan masukkan password yang sudah kita buat.
B. Merubah Password root
Kalau kita ingin merubah password root, maka kita harus berada di dalam database MySQL dan ketikkan:
> update mysql.user set password=password(‘password_baru’) where user=’root’;
> flush privileges;
Flush priveleges digunakan bila terjadi perubahan yang dilakukan di
database MySQL, sehingga perubahan tersebut akan berpengaruh pada
selanjutnya. Sekarang keluar dari mysql dan ketikkan
# mysql -u root -p
masukkan password dengan password yang baru dibuat.
C. Lupa password root
Jika kita benar-benar lupa dengan password root mysql dan kita tidak
berada di lingkungan mysql tetapi di lingkungan linux, maka ikuti
langkah berikut ini:
1. Matikan MySQL
#/etc/init.d/mysqld stop
2. Masuk ke Server MySQL tanpa Password
# mysqld_safe –skip-grant-tables &
3. Akses ke Server MySQL
# mysql -u root
4. Membuat password root MySQL
mysql> use mysql;
mysql> update user set password=PASSWORD(“password_baru”) where User=’root’;
mysql> flush privileges;
mysql> quit;
5. Matikan Server MySQL
# /etc/init.d/mysqld stop
6. Mengetes Server MySQL
# /etc/init.d/mysqld start
# mysql -u root -p
masukkan password yang baru dibuat dan seharusnya kita sudah dapat untuk mengakses server MySQL kita.
D. Menambah User Baru
Setelah kita membuat password root untuk MySQL, maka selanjutnya kita
akan membahas cara menambah user baru pada database MySQL. Sangat tidak
dianjurkan untuk selalu mengakses database dengan user root, karena
dapat berakibat fatal jika kita memberikan perintah yang keliru. Untuk
menambah user baru, kita harus sebagai user root. Berikut adalah
langkah-langkahnya:
1. Masuk ke MySQL
# mysql -u root -p
2. Pilih Database MySQL
> use mysql;
3. Melihat Tabel-Tabel
> show tables;
4. Melihat tabel user
> describe user;
Akan terlihat sebagai berikut:
5. Masukkan User Baru
Untuk memasukkan user baru, maka ikuti perintah berikut:
Perintah di atas akan menambahkan user baru dengan nama dedi dan
password 123456. Untuk dapat melihat konfigurasi user yang baru dibuat,
maka ketikkan perintah berikut:
Setelah itu, jangan lupa untuk memberikan perintah:
> flush privileges;
Untuk mengetesnya, keluar dari MySQL lalu coba untuk mengakses database dengan user baru tersebut.
# mysql -u dedi -p
Namun, biasanya untuk memasukkan user baru digunakan perintah Grant
dimana perintah ini selain dapat menambah user baru juga dapat memberi
izin akses user tersebut sehingga kita tidak bekerja dua kali. Untuk
lebih jelasnya tentang perintah Grant, silahkan ke tutorial selanjutnya.
E. Menghapus User
Untuk menghapus user maka yang berhak melakukannya adalah root dengan format:
> delete from mysql.user where user=’nama_user’;
dalam kasus kita:
> delete from mysql.user where user=’dedi’;
Kalau sudah menghapus user, ketikkan: > flush privileges;
F. Merubah Password User
Untuk merubah password user, maka yang berhak melakukannya adalah root dengan perintah:
> update mysql.user set password=password(‘password_untuk_dedi’) where user=’dedi’;
G. Manajemen user
Untuk menjaga kestabilan dan keamanan database, maka kita harus
mengetahui proses yang sedang terjadi pada database server dengan cara
melihat siapa saja yang mengakses database kita. Ketikkan perintah
berikut:
> show processlist;
Perintah tersebut akan menampilkan user-user yang sedang mengakses MySQL server.
H. Konfigurasi Izin Akses User
Dengan MySQL, kita dapat mengatur izin akses tiap-tiap user, misalnya
user tertentu hanya dapat membaca data pada database tanpa bisa
melakukan modifikasi atau hanya dapat mengakses database yang ditentukan
saja serta beberapa izin-izin akses lainnya. Ada dua perintah yang
digunakan yaitu Grant dan Revoke.
1. Menggunakan Grant
Grant merupakan perintah untuk memberikan hak izin akses bagi user agar
dapat mengakses database, tabel, dan kolom. Selain itu kita dapat
menambahkan user baru dengan perintah grant ini. Izin akses pada MySQL
diatur dalam database sistem MySQL yang terdiri atas lima buah tabel
yaitu user, d, host, tables_priv dan columns_priv. Jika kita melakukan
perubahan izin akses pada user yang masih aktif bekerja dalam prompt
MySQL, MySQL tidak langsung menerapkan perubahan tersebut meski kita
telah mengetikkan flush privileges. Konfigurasi itu berlaku berlaku
ketika user tersebut menutup koneksi dengan database MySQL kemudian
melakukan koneksi kembali. Perintah Grant memiliki tingkat pilihan yang
dapat dipergunakan yaitu:
a. Izin Akses Penuh
Izin ini digunakan untuk mengakses seluruh database yang berada pada
server. Konfigurasi akses ini terletak pada tabel user. Untuk memberikan
izin akses penuh pada user, maka ikuti langkah-langkah berikut:
# mysql -u root -p
> use mysql;
> grant all privileges on * to dedi@localhost identified by ‘password’ with grant option;
Perintah di atas akan memberikan izin akses penuh setara dengan root
pada user dedi. Sebaiknya kita tidak memberikan izin akses ini pada user
lain, karena kaan terdapat multi root pada database server MySQL.
Option identified by ‘password’ akan menerapkan user tersebut agar
tetap memasukkan password saat mengakses database. Jika kita tidak
memberikan option password, user tersebut dapat mengakses database tanpa
harus memasukkan password terlebih dahulu. Sedangkan penyertaan option
with grant option akan memebrikan hak penuh pada user sehinga user
tersebut mampu memberikan perintah grant pada user lainnya.
Namun perintah di atas memiliki kekurangan yaitu ketika kita
sebelumnya tidak memilih database mysql sebagai database ktif maka
server akan mengabaikan akses reload, shutdown, process, file dan grant.
Berati user tersebut tetap tidak diizinkan mengakses perintah-perintah
tersebut. oleh karena itu, kita dapat mengganti tanda * menjadi tanda
*.*
Sebenarnya perintah grant juga secara otomatis dapat membuat user
baru. Misalnya user budi belum ada dalam user database namun dengan
perintah seperti diatas (dengan merubah dedi menjadi budi dan merubah
passwordnya juga), maka di dalam database mysql sudah terbentuk user
budi secara otomatis.
Jika kita tidak memasukkan option password pada perintah grant, maka
user tersebut bisa mengakses database MySQL tanpa harus memasukkan
password dan itu sangat beresiko.
b. Izin akses Database
Izin ini digunakan untuk mengakses tabel-tabel yang berada pada database
yang telah ditentukan, konfigurasi akses ini terletak pada tabel db dan
tabel host. Untuk memberikan izin akses database pada user, lakukan
seperti contoh berikut:
mysql>grant all on *.* to ‘wau’@’192.168.0.186′ identified by ‘yui’;
Perintah diatas akan mengatur user tini hanya dapat mengakses database latihan saja dan tidak dapat mengakses database lainnya.
c. Izin Akses Tabel
Izin ini digunakan untuk mengatur izin akases terhadap semua kolom yang
terdapat pada tabel yang ditentukan, konfigurasi akses ini terletak pada
tables_priv. Tabel tables_priv menyediakan perintah izin akses select,
insert, update, delete, create, drop, grant, references, index dan
alter. Untuk menggunakan izin akses tabel, ketikkan perintah berikut:
grant select on latihan
Perintah di atas menjelaskan bahwa user dimas hanya diperbolehkan
untuk melakukan perintah select pada tabel teman dalam database latihan.
Dia tidak bisa merubah pada tabel tersebut dan hanya diperbolehkan
untuk melihat saja.
d. Izin Akses Kolom
Izin ini digunakan untuk mengatur izin akses pada kolom yang ditentukan
saja. Konfigurasi ini terletak pada tabel columns_priv dan lebih sedikit
dibandingkan dengan teble tables_priv. Hak akses yang dizinkan meliputi
select, insert, update dan References. Contoh penggunaan izin akses
kolom adalah sebagai berikut:
Perintah di atas akan menjelaskan bahwa user deni hanya mendapat izin
melakukan update pada kolom nama saja, sedangkan field-field yang lain
tidak bisa dirubah oleh user deni. Kombinasi antara izin akses tabel dan
kolom dapat dilakukan dengan cara:
e. Menampilkan Izin Akses
Untuk mengetahui izin akses pada user, ketikkan:
> show grants;
2. Menggunakan Revoke
Revoke merupakan kebalikan dari Grant yaitu menghapu atau mencabut
kembali izin akses user yang sebelumnya telah diberikan. Tingkat pilihan
yang dapat digunakan juga sama dengan perintah Grant sehingga semua
izin akses dengan Grant dapat anda cabut lagi. Untuk menggunakan Revoke,
maka perintahnya sama dengan contoh-contoh diatas, hanya saja ganti
perintah grant menjadi revoke sehingga user tersebut tidsak bisa
mengakses suatu database atau kolom atau tabel.
3. Mengakses server mysql di server lain
Jika sebelumnya untuk mengakses database dengan mengetikan
# mysql -u root -p
maka kita langsung mengakses database, itu berarti database kita
berada dalam localhost. Lalu bagaimana kalau database kita terletak pada
server lain? Untuk mengaksesnya, maka ketikkan:
# mysql -u root -h alamat_ip
misalnya seorang host dari IP 192.168.1.3 ingin mengakses database server yang terletak pada 192.168.1.2, maka:
# mysql -u root -h 192.168.1.2
Jika ada error seperti berikut:
ERROR 1130 (00000): Host ’192.168.1.3′ is not allowed to connect to this MySQL server
maka itu berarti IP tersebut tidak diijinkan untuk mengakses database
tersebut. Agar IP tersebut diperbolehkan mengakses database, maka kita
harus memberikan perintah grant kepada database server tersebut.
Misalnya seseorang yang bernama susan ingin mengakses database coba yang
berada di database server yang mempunyai IP 192.168.1.2. Maka agar user
susan dapat mengakses database server, pastikan bahwa user susan sudah
ada dalam database klien. Untuk mengeceknya berikan perintah berikut:
> use mysql;
> select user from users;
Jika user susan belum ada, buatlah user tersebut seperti pada contoh di atas.
Kemudian dari sisi server, buat perintah grant dengan format:
> grant all on nama_database.* to nama_user@alamat_ip identified by ‘password_user’;
Dalam kasus ini:
> grant all on coba.* to
susan@192.168 This e-mail address is being protected from spambots, you need JavaScript enabled to view it
.1.3 identified by ’123456′;
> flush priveleges;
Untuk mengecek apakah user susan dapat mengakses database server, ketik perintah berikut:
> show grants for
susan@192.168 This e-mail address is being protected from spambots, you need JavaScript enabled to view it
.1.3
Setelah itu, coba akses kembali ke database server dengan cara:
# mysql -h 192.168.1.2 -u susan -p
Dan masukkan password untuk susan yaitu 123456, maka user susan hanya
dapat mengakses database coba yang ada di database server. Namun perlu
diperhatikan yaitu pada saat menuliskan perintah grant agar selalu
menulis identified by ‘password_user’, karena jika tidak ditulis, maka
akan membahayakan security database server sebab user susan bisa masuk
ke database server tanpa password. Dan lebih berbahaya lagi jika hal ini
diketahui oleh orang lain.
Tidak ada komentar:
Posting Komentar