• Tidak ada hasil yang ditemukan

Hak Akses

Dalam dokumen E-COMMERCE PEMOGRAMAN WEB (Halaman 118-122)

Bab 5 MySQL

5.3. Hak Akses

Yang perlu kita perhatikan adalah: Kenapa sedemikian mudahnya kita mengakses MySQL (cukup mengetikkan ‘mysql’)? Kok tidak ada pertanyaan seperti username dan login?

Memang inilah yang harus diwaspadai. Pertama kali MySQL dijalankan dia akan membolehkan siapapun untuk masuk ke dalam sistem. Ini SANGAT BERBAHAYA SEKALI! Sekarang yang harus kita lakukan pertama kali adalah PEMBATASAN HAK AKSES.

Mari kita lihat apa saja yang sudah ada di MySQL. Masuklah ke dalam sistem MySQL dengan mengetikkan mysql pada sistem prompt. Jangan lupa, sebelumnya kita harus sudah mengaktifkan MySQL servernya dulu

Pertama kali MySQL dijalankan dia akan membolehkan

siapapun untuk masuk ke dalam sistem.

Ini SANGAT

BERBAHAYA

SEKALI! Sekarang

yang harus kita lakukan

pertama kali adalah

PEMBATASAN

HAK AKSES.

5E - C O M M E R C E P E M O G R A M A N W E B 101

C:\apache\mysql\bin>mysql <enter>

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is xx to server version:

3.23.47-nt.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>_

Pada MySQL prompt ketikkan sebagai berikut:

mysql>SHOW DATABASES ; +———————————+

| Database | +———————————+

| mysql |

| test | +———————————+

2 rows in set (0.00 sec)

Perintah diatas menampilkan database apa saja yang sudah ada sejak MySQL pertama kali diinstal. Disini ada 2 database, yaitu database mysql dan test. Database mysql berisi data-data tentang user, password, nama host, dan sebagainya (nanti kita lihat isinya yach..sabar..). Dan database test merupakan database untuk latihan bagi siapa saja yang mau. Kalau tidak diperlukan, kita bisa hapus database test ini.

Catatan:

MySQL berarti merujuk ke perangkat lunak/software database MySQL, sedangkan mysql (dengan huruf kecil) berarti merujuk ke sebuah nama database.

Sekarang kita lihat apa saja isi dari database mysql tersebut Aktifkan database mysql:

mysql>USE mysql ; Database changed

Kita sudah mengaktifkan database MySQL dan sistem memberi respon dengan pesan ‘Database changed’.

Tampilkan isi database MYSQL:

mysql>SHOW TABLES ; +————————————————————+

| Tables_in_mysql | +————————————————————+

| columns_priv |

| db |

| func |

| host |

| tables_priv |

| user | +————————————————————+

6 rows in set (0.00 sec)

MySQL berarti

merujuk ke perangkat

lunak/software database

MySQL, sedangkan

mysql (dengan huruf

kecil) berarti merujuk

ke sebuah nama

database.

102P E M A H A M AN T E N T A N G MYSQL5

Ada 6 tabel yang dapat dijelaskan kegunaannya sebagai berikut:

Nama Tabel Kegunaan

columns_priv Data hak akses user (user privileges) pada kolom-kolom tertentu di dalam suatu tabel.

db Nama database yang bisa diakses oleh user tertentu.

func  

host Nama-nama host yang diijinkan mengakses MYSQL

tables_priv Data hak akses user (user privileges) pada tabel-tabel tertentu di dalam suatu database.

user Nama-nama pengguna (user) yang diijinkan untuk mengakses MYSQL.

Yang akan kita lihat dahulu adalah isi tabel user. Tuliskan perintah dibawah ini pada MySQL prompt:

mysql>DESCRIBE user;

atau:

mysql> SHOW COLUMNS FROM user ;

Perintah tersebut untuk menampilkan kolom-kolom (field) apa saja yang ada di dalam sebuah tabel. Hasilnya adalah sebagai berikut:

+————————————+———————————+———+————+—————+————+

| Field | Type | Null | Key | Default | Extra | +————————————+———————————+———+————+—————+————+

| Host |char(60) binary | | Pri | | |

| User | char(16) binary | | Pri | | |

| Password | char(16) binary | | | | |

| Select_priv | enum(‘N’,’Y’) | | | N | |

| Insert_priv | enum(‘N’,’Y’) | | | N | |

| Update_priv | enum(‘N’,’Y’) | | | N | |

| Delete_priv | enum(‘N’,’Y’) | | | N | |

| Create_priv | enum(‘N’,’Y’) | | | N | |

| Drop_priv | enum(‘N’,’Y’) | | | N | |

| Reload_priv | enum(‘N’,’Y’) | | | N | |

| Shutdown_priv | enum(‘N’,’Y’) | | | N | |

| Process_priv | enum(‘N’,’Y’) | | | N | |

| File_priv | enum(‘N’,’Y’) | | | N | |

| Grant_priv | enum(‘N’,’Y’) | | | N | |

| References_priv | enum(‘N’,’Y’) | | | N | |

| Index_priv | enum(‘N’,’Y’) | | | N | |

| Alter_priv | enum(‘N’,’Y’) | | | N | |

+———————————+————————————+———+————+—————+————+ 17 rows in set (0.00 sec)

5E - C O M M E R C E P E M O G R A M A N W E B 103

Kita lihat sepintas bahwa tabel user ini mencakup nama user,nama host dari mana si user mengakses mysql, password dari user yang bersangkutan, dan sisanya adalah jenis-jenis hak akses (user privileges) yang dimiliki user tersebut. Mengenai jenis akses akan kita bahas nanti pada bab tersendiri yach...

karena ceritanya memang agak panjang dan teoritis...

Sedangkan mulai MySQL versi 4.0.xx (atau yang lebih baru), ada beberapa perubahan yang terjadi pada tabel user. Mari kita lihat apa saja perbedaannya dibanding dengan MySQL versi yang lebih lama:

mysql> desc user ;

+ --- + --- + --- + --- + --- + --- +

| Field | Type | Null | Key | Default | Extra |

+ --- + --- + --- + --- + --- + --- +

| Host | varchar(60)binary | | PRI | | |

| User | varchar(16)binary | | PRI | | |

| password | varchar(16) | | | N | |

| Select_priv | enum(‘N’,’Y’) | | | N | |

| Insert_priv | enum(‘N’,’Y’) | | | N | |

| Update_priv | enum(‘N’,’Y’) | | | N | |

| Delete_priv | enum(‘N’,’Y’) | | | N | |

| Create_priv | enum(‘N’,’Y’) | | | N | |

| Drop_priv | enum(‘N’,’Y’) | | | N | |

| Reload_priv | enum(‘N’,’Y’) | | | N | |

| Shutdown_priv | enum(‘N’,’Y’) | | | N | |

| Process_priv | enum(‘N’,’Y’) | | | N | |

| File_priv | enum(‘N’,’Y’) | | | N | |

| Grant_priv | enum(‘N’,’Y’) | | | N | |

| References_priv | enum(‘N’,’Y’) | | | N | |

| Index_priv | enum(‘N’,’Y’) | | | N | |

| Alter_priv | enum(‘N’,’Y’) | | | N | |

| Show_db_priv | enum(‘N’,’Y’) | | | N | |

| Super_priv | enum(‘N’,’Y’) | | | N | |

| Create_tmp_table_priv | enum(‘N’,’Y’) | | | N | |

| Lock_tables_priv | enum(‘N’,’Y’) | | | N | |

| Execute_priv | enum(‘N’,’Y’) | | | N | |

| Repl_slave_priv | enum(‘N’,’Y’) | | | N | |

| ssl_type | enum | | | | |

| |(‘’,’ANY’,’X509', | | | | |

| |’SPECIFIED’) | | | | |

| ssl_cipher | blob | | | | |

| x509_issuer | blob | | | | |

| x509_subject | blob | | | | |

| max_questions | int(11) | | | 0 | |

| max_updates | int(11) unsigned | | | 0 | |

| max_connections | int(11) unsigned | | | 0 | |

+ --- + --- + --- + --- + --- + --- + 31 rows in set (0.29 sec)

Terlihat ada penambahan 14 baris privileges baru, seperti super_priv, max_connections, dan sebagainya. Tetapi untuk sementara ini kita tidak akan membahasnya dulu secara detail.

104P E M A H A M AN T E N T A N G MYSQL5

Sekarang kita kembali ke bahasan sebelumnya yach... Untuk saat ini kita perlukan hanya 3 kolom pertama saja, yaitu kolom (field) host, user dan pass- word:

mysql> SELECT user, host, password FROM user ; +---+---+---+

| user | host | password | +---+---+---+

| root | localhost | |

| root | % | |

| | localhost | |

| | % | | +---+---+---+

4 rows in set (0.00 sec)

Nah, dari sini baru ketahuan kenapa bisa terjadi siapa saja yang nyelonong ke dalam MySQL kita. Perhatikan deh, untuk user root (ada 2 baris) sama sekali tidak memiliki password apapun. Dan kemudian, ada user yang ‘kosong’ (ada 2 baris, tidak bernama, tidak berwujud) dan anehnya lagi tidak ber-password. Kesemuanya ini SANGAT SANGAT BERBAHAYA!

Untuk itu harus diambil tindakan tegas! (hehehe... seperti aparat keamanan aja yach gaya bicaranya...:))

Tindakan keamanan pertama: Hapus user yang tidak berwujud itu:

mysql> DELETE FROM user WHERE user=’ ‘ ; Query OK, 2 rows affected (0.00 sec)

Keliatannya sudah OK nih. Tapi coba kita periksa lagi:

mysql> SELECT user, host, password FROM user ; +———+—————+———————+

| user | host | password | +———+—————+———————+

| root | localhost | |

| root | % | | +———+—————+———————+

2 rows in set (0.00 sec)

Ternyata emang OK tuch. User yang tidak berwujud itu telah lenyap.

Tugas selanjutnya, atau TINDAKAN PENGAMANAN KEDUA adalah MEMBERIKAN PASSWORD KEPADA ROOT.

Dalam dokumen E-COMMERCE PEMOGRAMAN WEB (Halaman 118-122)