Banyak situs web dinamis memerlukan database backend. Database dapat berisi
informasi yang ditampilkan halaman web kepada pengguna, atau tujuan database untuk
menyimpan informasi yang disediakan oleh pengguna. Dalam beberapa aplikasi, database
menyediakan informasi yang tersedia dan menyimpan informasi baru. MySQL, database
paling populer untuk digunakan di situs web, dikembangkan menjadi cepat dan kecil, khusus
untuk situs web. MySQL sangat populer untuk digunakan dengan situs web yang ditulis dalam
PHP karena PHP dan MySQL bekerja sama dengan sangat baik. Bab ini memberikan
pengenalan MySQL, dan menjelaskan cara kerjanya dan bagaimana kita dapat berkomunikasi
dengannya.
MySQL dikembangkan pada pertengahan 1990-an, dengan lebih dari 10 juta instalasi.
MySQL merupakan sistem manajemen database paling populer untuk server web. Saat ini,
MySQL menjadi teknologi matang yang menggerakkan banyak tujuan Internet yang paling
banyak dikunjungi. Salah satu alasan keberhasilannya adalah fakta bahwa, seperti PHP, gratis
untuk digunakan.
1.1 CARA KERJA MySQL
Perangkat lunak MySQL terdiri dari server MySQL, beberapa program utilitas yang
membantu dalam administrasi database MySQL, dan beberapa perangkat lunak pendukung
yang dibutuhkan server MySQL (tetapi kita tidak perlu mengetahuinya). Jantung dari sistem
adalah server MySQL. Server MySQL adalah pengelola sistem database. Ini menangani semua
instruksi database Anda. Misalnya, jika kita ingin membuat database baru, kita mengirim
pesan ke server MySQL yang mengatakan, misalnya, "buat database baru dan beri nama data
baru." Server MySQL kemudian membuat subdirektori di direktori datanya, menamai
subdirektori baru dengan data baru, dan menempatkan file yang diperlukan dengan format
yang diperlukan ke dalam subdirektori data baru. Dengan cara yang sama, untuk
menambahkan data ke database itu, kita mengirim pesan ke server MySQL, memberikannya
data dan memberi tahu di mana kita ingin data ditambahkan.
Sebelum kita dapat meneruskan instruksi ke server MySQL, ini harus berjalan terlebih
dahulu dan menunggu permintaan. Server MySQL biasanya diatur sehingga dimulai saat
komputer mulai dan terus berjalan sepanjang waktu. Ini adalah pengaturan biasa untuk
sebuah situs web. Namun, tidak perlu mengaturnya untuk memulai saat komputer dinyalakan.
Jika perlu, kita dapat memulainya secara manual kapan pun kita ingin mengakses database.
Saat sedang berjalan, server MySQL terus menerus mendengarkan pesan yang diarahkan ke
sana.
1.2 MEMAHAMI STRUKTUR DATABASE
MySQL adalah Sistem Manajemen database Relasional (RDBMS). Server MySQL kita
dapat mengelola banyak database secara bersamaan. Faktanya, banyak orang mungkin
memiliki database berbeda yang dikelola oleh satu server MySQL. Setiap database terdiri dari
struktur untuk menampung data dan data itu sendiri. Database bisa ada tanpa data, hanya
struktur, benar-benar kosong, memutar-mutar ibu jarinya dan menunggu data disimpan di
dalamnya. Data dalam database disimpan dalam satu atau lebih tabel. Kita harus membuat
2
Manajemen Database MySQL
database dan tabel sebelum kita bisa menambahkan data apa pun ke database. Pertama kita
membuat database kosong. Kemudian kita menambahkan tabel kosong ke database. Tabel
database diatur seperti tabel lain yang biasa kita gunakan — dalam baris dan kolom. Setiap
baris mewakili entitas dalam database, seperti pelanggan, buku, atau proyek. Setiap kolom
berisi item informasi tentang entitas, seperti nama pelanggan, nama buku, atau tanggal mulai
proyek. Tempat di mana baris dan kolom tertentu berpotongan, sel individual dari tabel,
disebut field.
Tabel dalam database dapat saling berhubungan, dan seringkali satu baris dalam satu
tabel terkait dengan beberapa baris di tabel lain. Misalnya, kita mungkin memiliki database
yang berisi data tentang buku yang kita miliki. Kita akan memiliki tabel buku dan tabel penulis.
Satu baris di tabel penulis mungkin berisi informasi tentang penulis beberapa buku di tabel
buku. Saat tabel terkait, kita menyertakan kolom dalam satu tabel untuk menampung data
yang cocok dengan data di kolom tabel lain. Hanya sesudah kita membuat struktur database,
kita dapat menambahkan data.
1.3 DASAR-DASAR MySQL
Dataabase adalah kumpulan terstruktur dari catatan atau data yang disimpan dalam
sistem komputer dan diatur sedemikian rupa agar informasinya dapat dicari dan dapat
diambil dengan cepat. SQL adalah singkatan dari Structured Query Language, merupakan
bahasa yang didasarkan pada bahasa Inggris dan juga digunakan dalam database lain seperti
Oracle dan Server Microsoft SQL. Ini dirancang untuk memungkinkan permintaan sederhana
dari database melalui perintah seperti:
SELECT title FROM publications WHERE author = 'Agus Wibowo';
Database MySQL berisi satu tabel atau lebih, yang masing-masing berisi record atau baris. Di
dalam baris ini terdapat berbagai kolom atau field yang berisi data masing-masing. Tabel
dibawah ini menunjukkan isi database dari contoh lima publikasi yang merinci penulis, judul,
jenis, dan tahun publikasi.
Tabel 1.1 Contoh database sederhana
Author Judul Jenis Tahun
Agus Wibowo Belajar PHP Dari Dasar Ilmiah 2020
Agus Wibowo Membangun PODCAST Ilmiah 2021
Mars Caroline W Teknik Desain Realis dan Tata Warna Ilmiah 2022
Sarwo Nugroho Potret Diri Sebagai Komunikasi Visual
Simbolik
Ilmiah 2022
Edy Jogatama P Desain Seni Rupa Klasik Ilmiah 2022
Setiap baris dalam tabel sama dengan baris dalam tabel MySQL, dan setiap elemen
dalam satu baris sama dengan satu field MySQL. Untuk mengidentifikasi database ini secara
unik, saya akan menyebutnya sebagai database publikasi. Dan, seperti yang akan kita amati,
semua publikasi ini dianggap sebagai literatur klasik, jadi saya akan menyebut tabel di dalam
database yang menyimpan detail klasik.
Ringkasan Persyaratan Database
Istilah utama yang perlu kita ketahui untuk saat ini adalah:
Database
Wadah keseluruhan untuk kumpulan data MySQL
3
Manajemen Database MySQL
Kolom
Subkontainer dalam database yang menyimpan data aktual
Baris
Sebuah catatan tunggal dalam sebuah tabel, yang berisi beberapa field
Kolom
Nama field dalam satu baris
Mohon dicatat bahwa, Saya tidak mencoba untuk mereproduksi terminologi yang tepat yang
digunakan dalam literatur akademis tentang database relasional, tetapi hanya untuk
memberikan istilah sehari-hari yang sederhana untuk membantu kita memahami konsep
dasar dan memulai dengan database dengan cepat.
1.4 MENGAKSES MYSQL MELALUI COMMAND LINE
Ada tiga cara utama di mana kita dapat berinteraksi dengan MySQL: memakai
command line, melalui antarmuka web seperti phpMyAdmin, dan melalui bahasa
programmeran seperti PHP.
Memulai Antarmuka Command line
Bagian berikut menjelaskan instruksi yang relevan untuk Windows, OS X, dan Linux.
User Windows
Jika kita menginstal Zend Server Free Edition WAMP, kita akan dapat mengakses executable
MySQL dari salah satu direktori berikut (yang pertama pada komputer 32 -bit, dan yang kedua
pada mesin 64-bit) :
C:\ Program Files\ Zend \ MySQL55\ bin
C:\ Program Files (x86) \ Zend \ MySQL55\ bin
Catatan : Jika kita menginstal Zend Server di tempat selain \ Program Files (atau \ Program Files
(x86)), kita harus memakai direktori itu.
Gambar 1.1 Mengakses MySQL dari Command prompt Windows
Secara default, user MySQL awal akan menjadi root dan tidak akan memiliki set
password. Jadi, untuk masuk ke antarmuka command line MySQL, pilih Start → Run, ketik
CMD ke dalam kolom Run, dan tekan Return. Ini akan memanggil Command Prompt
Windows. Dari situ, ketikkan salah satu dari yang berikut ini:
4
Manajemen Database MySQL
"C: \ Program Files\ Zend \ MySQL55\ bin\ mysql" -u root
"C: \ Program Files (x86) \ Zend \ MySQL55\ bin\ mysql" -u root
Catatan: Perhatikan tanda kutip di sekitar path dan nama file. Ini ada karena namanya berisi
spasi, yang tidak diinterpretasikan dengan benar oleh Command Prompt, dan tanda kutip
mengelompokkan bagian-bagian nama file ke dalam satu string untuk dipahami oleh program
perintah. Perintah ini memberi tahu MySQL untuk memasukkan kita sebagai user root tanpa
password. Kita sekarang akan masuk ke MySQL dan dapat mulai memasukkan perintah. Jadi,
untuk memastikan semuanya berfungsi sebagaimana mestinya, masukkan yang berikut ini:
SHOW databases;
Jika ini tidak berhasil dan kita mendapatkan pesan kesalahan, pastikan kita telah menginstal
MySQL dengan benar bersama dengan Zend Server. Jika tidak, kita bisa berpindah
memakai Antarmuka Command line.
User OS X
Untuk melanjutkan bab ini, kita harus menginstal Zend Server. Kita juga harus memiliki
server web yang sudah berjalan dan server MySQL. Untuk masuk ke antarmuka command line
MySQL, jalankan program Terminal (yang seharusnya tersedia di Finder→Utilities). Kemudian
panggil program MySQL, yang akan diinstal di direktori usrlocal/zend/mysql/bin. Secara
default, user MySQL awal adalah root, dan akan memiliki kata sandi root juga. Jadi, untuk
memulai program, ketikkan yang berikut ini:
usrlocal/zend/mysql/bin/mysql -u root
Perintah ini memberi tahu MySQL untuk memasukkan kita sebagai user root dan tidak
meminta kata sandi kita. Untuk memverifikasi bahwa semuanya baik-baik saja, ketik berikut
ini (hasilnya akan terlihat seperti output yang ditunjukkan pada Gambar dibawah ini):
SHOW databases
Gambar 1.2. Mengakses MySQL dari program Terminal OS X
5
Manajemen Database MySQL
Jika kita menerima pesan kesalahan seperti Can't connect to local MySQL server through
socket, ini berarti, kita belum memulai server MySQL. Selanjutnya, kita melanjutkan ke bagian
berikutnya, memakai Antarmuka Command-Line.
User Linux
Pertama-tama kita harus mengetik yang berikut untuk masuk ke sistem MySQL Anda:
mysql -u root -p
Ini memberitahu MySQL untuk memasukkan kita sebagai user root dan meminta kata sandi
kita. Jika kita memiliki kata sandi, masukkan; jika tidak, cukup tekan Return. sesudah kita
masuk, ketik berikut ini untuk menguji program (Anda akan melihat tanggapan seperti Gambar
dibawah ini):
SHOW databases;
Gambar 1.3 Mengakses MySQL memakai Linux
Mengakses MySQL melalui phpMyAdmin
Meskipun untuk memakai MySQL kita harus mempelajari perintah-perintah
utama ini dan cara kerjanya, sesudah kita memahaminya, akan jauh lebih cepat dan mudah
memakai program seperti phpMyAdmin untuk mengelola database dan tabel kita. Tetapi,
kita harus menginstal phpMyAdmin sebelum dapat memakai nya. Untuk melakukan ini,
panggil UI Zend dengan memasukkan yang berikut ini ke browser Anda, dan masuk:
http://localhost:10081/ZendServer/
6
Manajemen Database MySQL
Gambar 1.4 Dasbor Zend
Sekarang klik panah kiri dan kanan di sebelah kanan bagian DEPLOY SAMPLE APPS
sampai kita melihat logo phpMyAdmin dan klik untuk memulai pengunduhan; lalu klik Next
jika sudah selesai. Klik Next lagi, sesudah kita melihat informasi README, untu k memanggil
layar Application Detail.
Gambar 1.5 Konfigurasi phpMyAdmin untuk Zend
7
Manajemen Database MySQL
Di sini kita mungkin harus menerima default untuk Display Name dan Virtual Host,
tetapi perlu menentukan nama direktori untuk phpMyAdmin untuk menjauhkannya dari file
root dokumen kita. Disini, saya telah memasukkan nama phpmyadmin (semua dalam huruf
kecil sehingga saya tidak perlu memasukkan huruf kapital setiap kali saya mengetik URL untuk
memanggilnya). Lanjutkan mengklik Berikutnya dan menerima perjanjian lisensi apa pun
hingga kita melihat layar pada Gambar dibawah ini. Di sini kita harus memilih “Use HTTP
(Apache) Basic Authentication?” kotak centang dan berikan login dan kata sandi. Login default
adalah DBadmin, tetapi saya memilih untuk memakai admin saja; login dan kata sandi
kita terserah kita. Kecuali kita telah mengonfigurasinya secara berbeda, kita mungkin dapat
membiarkan IP, Port, User Database, dan Password seperti yang ditampilkan.
Gambar 1.6 Memasukkan parameter user phpMyAdmin
Sekarang klik Next, tinjau ringkasan yang ditampilkan, jika sudah siap, klik tombol
Deploy. sesudah beberapa detik, kita akan melihat bahwa aplikasi berhasil digunakan, sehingga
phpMyAdmin siap untuk diakses dengan memasukkan ini pada browser:
http://localhost/phpmyadmin
Ini akan memunculkan dialog yang ditunjukkan pada Gambar dibawah ini, di mana kita harus
memasukkan username dan password sebelum mengklik tombol Log In.
8
Manajemen Database MySQL
Gambar 1.7 Masuk ke phpMyAdmin
Browser kita sekarang akan terlihat seperti Gambar dibawah ini, dan phpMyAdmin
diap digunakan sebagai pengganti command line MySQL.
Gambar 1.8 Layar utama phpMyAdmin
memakai phpMyAdmin
Di panel kiri layar utama phpMyAdmin, kita dapat mengklik menu drop-down yang
bertuliskan “(Database)” untuk memilih database yang ingin kita gunakan. Fungsinya untuk
membuka database dan menampilkan tabelnya. Dari sini kita dapat melakukan semua operasi
utama, seperti membuat database baru, menambahkan tabel, membuat indeks, dan banyak
lagi lainnya. Untuk membaca dokumentasi pendukung phpMyAdmin, kunjungi
https://docs.phpmyadmin.net.
9
Manajemen Database MySQL
1.5 BERKOMUNIKASI DENGAN MySQL
Semua interaksi kita dengan database dilakukan dengan mengirimkan pesan ke server
MySQL. Server MySQL harus dapat memahami instruksi yang kita kirimkan. Kita
berkomunikasi memakai Structured Query Language (SQL), yang merupakan bahasa
komputer standar yang dipahami, setidaknya dalam beberapa bentuk, oleh sebagian besar
sistem manajemen database. Untuk membuat permintaan yang dapat dipahami MySQL, kita
membuat pernyataan SQL dan mengirimkannya ke MySQL server.
MySQL di server jauh
Jika kita mengakses MySQL di server jauh, kita harus Telnet (atau lebih baik, untuk
keamanan, gunakan SSH) ke mesin jarak jauh, yang mungkin akan menjadi jenis
Linux/FreeBSD/Unix box. Karena begitu masuk kesitu, tampilannya akan terlihat sedikit
berbeda. Hal ini tergantung pada bagaimana administrator sistem mengatur server, terutama
jika akses MySQL memakai kata sandi. Kita dapat mencoba mengetik kode yang berikut:
ini, yang mana user name-nya adalah user name yang kita buat sendiri:
mysql -u username -p
Masukkan kata sandi kita saat diminta. Kita dapat mencoba perintah berikut:
SHOW databases;
Disini, bisa jadi ada database lain yang sudah dibuat, dan test database tidak muncul. Ingatlah
juga bahwa administrator sistem memiliki kendali penuh atas segalanya dan kita dapat
menemukan beberapa pengaturan yang tidak terduga. Misalnya, kita mungkin diminta untuk
mengawali semua nama database yang kita buat dengan string identifikator unik untuk
memastikan bahwa itu benar-benar kita. Sehingga, jika kita memiliki masalah, bicarakan
dengan administrator sistem Anda, karena dia akan menyelesaikan masalah kita. Beri tahu
sysadmin bahwa kita memerlukan nama user dan kata sandi. Kita juga harus meminta
membuat database baru atau, minimal, memiliki setidaknya satu database yang siap untuk
kita gunakan. Selanjutnya, dalam database tersebut kita dapat membuat semua tabel yang
kita butuhkan.
memakai Antarmuka Command line
Selanjutnya untuk mengakses MySQLsecara langsung pada Windows, Mac OS X, atau
Linux memiliki cara dan peirntah yang sama karena semua perintah yang digunakan (dan
kesalahan yang mungkin kita terima) adalah identik.
Membangun kueri SQL
SQL hampir semuanya memakai bahasa Inggris; sebagian besar terdiri dari kata -
kata bahasa Inggris, disatukan menjadi rangkaian kata yang terdengar mirip dengan kalimat
bahasa Inggris. Secara umum (untungnya), kita tidak perlu memahami bahasa teknis misterius
apa pun untuk menulis kueri SQL hingga memiliki. Kata pertama dari setiap pernyataan adalah
namanya, yang merupakan kata tindakan (kata kerja) yang memberi tahu MySQL apa yang
ingin kita lakukan. Pernyataan yang kita bahas ini adalah CREATE, DROP, ALTER, SHOW,
INSERT, LOAD, SELECT, UPDATE, dan DELETE. Kosakata dasar ini cukup untuk membuat — dan
berinteraksi dengan — database di situs web. Nama pernyataan diikuti oleh kata dan frasa —
beberapa diperlukan dan beberapa opsional — yang memberi tahu MySQL cara melakukan
tindakan. Misalnya, kita selalu perlu memberi tahu MySQL apa yang harus dibuat, dan kita
selalu perlu memberi tahu tabel mana yang akan memasukkan data ke dalam atau untuk
memilih data.
10
Manajemen Database MySQL
Berikut ini adalah pernyataan SQL yang khas. Seperti yang kita lihat, ini memakai
kata-kata bahasa Inggris:
SELECT lastName FROM Member
Saat pernyataan memakai SELECT, itu dikenal sebagai kueri, karena kita meminta
informasi dari database. Kueri ini mengambil semua nama belakang yang disimpan dalam
tabel bernama Member. Kueri yang lebih rumit, seperti berikut ini, kurang seperti bahasa
Inggris:
SELECT lastName,firstName FROM Member WHERE state=”CA” AND city=”Fresno” ORDER BY
lastName
Kueri ini mengambil semua nama belakang dan nama depan member yang tinggal di Fresno
dan kemudian menempatkannya dalam urutan abjad berdasarkan nama belakang. Meskipun
kueri ini kurang seperti bahasa Inggris, itu masih cukup jelas. Berikut adalah beberapa poin
umum yang perlu diingat saat membuat pernyataan SQL, seperti yang diilustrasikan dalam
contoh kueri sebelumnya:
• Kapitalisasi: Dalam buku ini, kita menempatkan kata-kata bahasa SQL dalam huruf
besar semua; item informasi variabel (seperti nama kolom) biasanya diberi label yang
semuanya atau sebagian besar huruf kecil. Kita melakukan ini untuk memudahkan kita
membaca — bukan karena MySQL memerlukan format ini. Kasus kata-kata SQL tidak
masalah; misalnya, pilih sama dengan SELECT, sama dengan FROM, sejauh
menyangkut MySQL. Di sisi lain, kasus nama tabel, nama kolom, dan informasi variabel
lainnya penting jika sistem operasi kita adalah Unix atau Linux. Saat kita memakai
Unix atau Linux, MySQL harus sama persis dengan nama kolom, jadi kasus nama kolom
harus benar — misalnya, nama belakang tidak sama dengan nama belakang. Windows,
bagaimanapun, tidak pilih-pilih seperti Unix dan Linux; dari sudut pandangnya, nama
belakang dan nama belakang adalah sama.
• Spasi: Kata-kata SQL harus dipisahkan oleh satu spasi atau lebih. Tidak masalah berapa
banyak ruang yang kita gunakan; kita juga bisa memakai 20 spasi atau hanya 1
spasi. SQL juga tidak memperhatikan akhir baris. Kita dapat memulai baris baru di titik
mana pun dalam pernyataan SQL atau menulis seluruh pernyataan pada satu baris.
• Kutipan: Perhatikan bahwa CA dan Fresno diapit oleh tanda kutip ganda (“) pada kueri
sebelumnya. CA dan Fresno adalah serangkaian karakter yang disebut string teks, atau
string karakter. Kita meminta MySQL untuk membandingkan string teks dalam kueri
SQL dengan string teks yang sudah disimpan di database. Saat kita membandingkan
angka (seperti bilangan bulat) yang disimpan dalam kolom numerik, kita tidak
menyertakan angka dalam tanda kutip.
Kitamembahas detail kueri SQL tertentu di bagian buku tempat kita membahas
penggunaannya.
Titik Koma
Mari kita mulai dengan dasar-dasarnya. Apakah kita memperhatikan titik koma (;) di
akhir database SHOW ; perintah yang kita ketik? Titik koma digunakan oleh MySQL untuk
memisahkan atau mengakhiri perintah. Jika kita lupa memasukkannya, MySQL akan
mengeluarkan prompt secara terus menerus. Titik koma yang diperlukan dibuat menjadi
11
Manajemen Database MySQL
bagian dari sintaks untuk memungkinkan kita memasukkan perintah beberapa baris. Hal ini
juga memungkinkan kita untuk mengeluarkan lebih dari satu perintah pada satu waktu dengan
menempatkan titik koma sesudah masing-masing perintah. Ada enam petunjuk berbeda yang
diberikan MySQL kepada Anda, jadi kita akan selalu tahu di mana kita berada selama input
multiline.
Tabel 1.2 Enam perintah MySQL
Perintah MySQL Arti
Mysql Siap dan menunggu perintah
-> Menunggu baris pada sebuah perintah
‘> Menunggu baris string berikutnya dimulai dengan satu kutipan
“> Menunggu baris string berikutnya dimulai dengan tanda kutip ganda
`> Menunggu baris berikutnya dari string dimulai dengan backtick
/*> Menunggu baris komentar berikutnya dimulai dengan /*
Membatalkan perintah
Jika kita setengah jalan memasukkan perintah dan kita tidak ingin menjalankannya,
kita dapat memasukkan \ c dan tekan Return. Contoh dibawah ini menunjukkan cara
memakai nya \ c.
Contoh Membatalkan baris input
meaningless gibberish to mysql \ c
saat kita memasukkan \ c, MySQL akan mengabaikan semua perintah yang kita ketik
dan mengeluarkan prompt baru. Tanpa \ c, maka akan menampilkan pesan kesalahan. Namun
jika kita telah membuka string atau komentar, sebelum memakai \ c kita harus menutup
string terlebih dahulu karen jika tidak, MySQL akan mengira \ c hanyalah bagian dari string.
Perhatikan contoh membatalkan input dalam string dibawah ini.
Contoh Membatalkan input dari dalam string
this is "meaningless gibberish to mysql" \ c
Perhatikan juga bahwa memakai \ c sesudah titik koma tidak akan berfungsi,
karena itu merupakan pernyataan baru.
Mengirim kueri SQL
Anda dapat mengirim kueri SQL ke MySQL dengan beberapa cara. Dalam buku ini, kita
membahas dua metode pengiriman kueri berikut:
• Client mysql: Saat kita menginstal MySQL, client mysql berbasis teks diinstal secara
otomatis. Client sederhana ini dapat digunakan untuk mengirim kueri.
• Fungsi bawaan PHP: kita berkomunikasi dengan database MySQL dari skrip PHP
dengan memakai fungsi bawaan PHP yang dirancang khusus untuk tujuan ini .
Fungsi terhubung ke server MySQL dan mengirim kueri SQL.
Perintah MySQL
Anda telah melihat perintah SHOW, yang mencantumkan tabel, database, dan banyak
item lainnya.
12
Manajemen Database MySQL
Tabel 1.3 Perintah umum MySQL
Command (Perintah) Aksi
ALTER Mengubah database atau tabel
BACKUP Backup tabel
\c Cancel input
CREATE Membuat database
DELETE Menghapus baris dari tabel
DESCRIBE Menjelaskan klom tabel
DROP Menghapus database atau tabel
EXIT (CTRL-C) Keluar
GRANT Mengubah user privileges
HELP (h\, \?) Display Help
INSERT Memasukkan data
LOCK Mengunci tabel
QUIT (\q) Sama dengan EXIT
RENAME Mengubah nama tabel
SHOW Daftar detail tentang sebuah
objek
SOURCE Eksekusi file
STATUS (\s) Display status saat ini
TRUNCATE Tabel kosong
UNLOCK Unlock tabel
UPDATE Update catatan yang tersedia
USE memakai databae
Anda perlu mengingat beberapa poin tentang perintah MySQL:
• Perintah dan kata kunci SQL tidak peka huruf besar-kecil, misalnya CREATE, create dan
CReaTE semuanya memiliki arti yang sama. Namun, demi kejelasan, gaya yang
disarankan adalah memakai huruf besar.
• Nama tabel di Linux dan OS X peka huruf besar/kecil, tetapi di Windows tidak peka
huruf besar/kecil. Jadi untuk tujuan portabilitas, kita harus selalu memilih kasing dan
mematuhinya. Gaya yang disarankan adalah memakai huruf kecil untuk tabel.
memakai client mysql
saat MySQL diinstal, program sederhana berbasis teks yang disebut mysql (atau
terkadang antarmuka baris perintah atau CLI) juga diinstal. Program yang berkomunikasi
dengan server adalah perangkat lunak client; karena program ini berkomunikasi dengan serv er
MySQL, itu adalah client. Saat kita memasukkan kueri SQL di client ini, respons dikembalikan
ke client dan ditampilkan di layar. Program monitor dapat mengirim pertanyaan melalui
jaringan; tidak harus dijalankan pada mesin tempat database disimpan. Client ini selalu diinstal
saat MySQL diinstal, sehingga selalu tersedia. Ini cukup sederhana dan cepat jika kita tahu
SQL dan dapat mengetik kueri kita tanpa kesalahan.
Untuk mengirim kueri SQL ke MySQL dari client mysql, ikuti langkah-langkah berikut:
1. Temukan client mysql.
13
Manajemen Database MySQL
Secara default, program client mysql diinstal di bin subdirektori, di bawah direktori
tempat MySQL diinstal. Di Unix dan Linux, defaultnya adalah /usr/local/mysql/bin atau
/usr/local/bin. Di Windows, defaultnya adalah c:\ Program Files\ MySQL\ MySQL Server
5.0\ bin. Namun, client mungkin diinstal di direktori yang berbeda. Atau, jika kita bukan
administrator MySQL, kita mungkin tidak memiliki akses ke client mysql. Jika kita tidak
tahu di mana MySQL diinstal atau tidak dapat menjalankan client, mintalah
administrator MySQL untuk menempatkan client di suatu tempat di mana kita dapat
menjalankannya atau untuk memberikan salinan yang dapat kita letakkan di komputer
kita sendiri.
2. Jalankan client.
Di Unix dan Linux, ketik path/nama file (misalnya, /usr/local/mysql/bin/mysql). Di
Windows, buka jendela command prompt dan kemudian ketik path\ nama file
(misalnya, c: \ Program Files\ MySQL\ MySQL Server 5.0\ bin\ mysql). Perintah ini
memulai client jika kita tidak perlu memakai nama akun atau kata sandi. Jika kita
perlu memasukkan akun atau kata sandi atau keduanya, gunakan parameter berikut:
• -u user: user adalah nama akun MySQL Anda.
• -p: Parameter ini meminta kita memasukkan kata sandi untuk akun MySQL
Anda.
Misalnya, jika kita berada di direktori tempat client mysql berada, perintahnya
mungkin terlihat seperti ini:
mysql -u root -p
3. Jika kita memulai client mysql untuk mengakses database di seluruh jaringan,
gunakan parameter berikut sesudah perintah mysql:
-h host, dimana host adalah nama mesin dimana MySQL berada.
Misalnya, jika kita berada di direktori tempat client mysql berada, perintahnya
mungkin terlihat seperti ini
mysql -h mysqlhost.mycompany.com -u root -p
Tekan Enter sesudah mengetik perintah.
4. Masukkan kata sandi kita saat diminta. Client mysql dimulai, dan kita melihat
sesuatu yang mirip dengan ini:
Welcome to the MySQL monitor. Commands end with ; or \ g.
Your MySQL connection id is 459 to server version: 5.0.15
Type ‘help;’ or ‘ \ h’ for help. Type ‘ \ c’ to clear the buffer.
mysql>
5. Pilih database yang ingin kita gunakan.
Pada prompt mysql, ketik berikut ini:
use databasename
Gunakan nama database yang ingin kita kueri. Beberapa pernyataan SQL, seperti
SHOW DATABASES, tidak mengharuskan kita memilih database. Untuk pernyataan
tersebut, kita dapat melewati Langkah 5.
6. Pada prompt mysql, ketik pernyataan SQL kita diikuti dengan titik koma (;) dan
kemudian tekan Enter.
Jika kita lupa mengetikkan titik koma (;) di akhir kueri, client mysql tidak akan
mengeksekusi pernyataan tersebut. Sebaliknya, itu terus menampilkan
14
Manajemen Database MySQL
prompt (mysq>) sampai kita memasukkan titik koma. Tanggapan terhadap pernyataan
ditampilkan di layar.
7. Untuk meninggalkan client mysql, ketik quit pada prompt dan kemudian tekan Enter.
Anda dapat memakai client mysql untuk mengirim pernyataan SQL yang kita ketik
sendiri, dan itu mengembalikan respons ke pernyataan tersebut.
Membuat database
Jika kita bekerja di server jauh dan hanya memiliki satu akun user dan akses ke satu
database yang dibuat untuk Anda, lanjutkan ke bagian Membuat tabel. Jika tidak keluarkan
perintah berikut untuk membuat database baru yang disebut publikasi:
CREATE DATABASE publications;
Perintah yang berhasil akan menampilkan pesan yang belum memiliki arti — Query OK, 1 row
affected (0.00 sec) . Sekarang sesudah kita membuat database terbitkan:
USE publications;
Membuat User
Sekarang kita telah melihat betapa mudahnya memakai MySQL, dan membuat
database pertama Anda, sekarang saatnya untuk melihat bagaimana kita membuat user,
karena kita mungkin tidak ingin memberikan akses root skrip PHP kita ke MySQL. Untuk
membuat user, keluarkan perintah GRANT:
GRANT PRIVILEGES ON database.object TO 'username'@'hostname' IDENTIFIED BY
'password';
Tabel 1.4 Contoh parameter untuk perintah GRANT
Argumen Makna
. Semua database dan semua objeknya
database.* Hanya database yang disebut database dan
semua objeknya
Database.object Hanya database yang disebut database dan
objeknya disebut objek
Jadi mari buat user yang hanya dapat mengakses database publikasi baru dan semua
objeknya, dengan memasukkan yang berikut ini (mengganti nama user Guswi dan kata sandi
mypasswd dengan yang kita pilih):
GRANT ALL ON publications.* TO ' Guswi'@'localhost' ID ENTIFIED BY 'mypasswd';
Izinikan user guswi@localhost akses penuh ke database publikasi memakai mypasswd.
Kita dapat menguji keberhasilan dari langkah ini dengan memasukkan quit untuk keluar dan
kemudian menjalankan kembali MySQL seperti yang kita lakukan sebelumnya, tetapi alih-alih
memasukkan -u root -p, ketik -u guswi -p, atau nama user apa pun yang kita buat. Lihat Tabel
selanjutnya untuk perintah yang benar untuk sistem operasi kita. Ubah seperlunya jika
program klien mysql diinstal di direktori yang berbeda di sistem kita.
15
Manajemen Database MySQL
Tabel 1.5 Memulai MySQL dan masuk sebagai guswi@localhost
OS Contoh perintah
Windows “C:\ Program Files\ Zend \ MySQL55\ bin\ mysql" -u guswi -p
Mac OS ApplicationsMAMP/Library/bin/mysql -u guswi -p
Linux mysql -u guswi –p
saat kita ingin masuk, selanjutnya, yang diminta adalah memasukkan kata sandi kita.
Dibagian ini, kita juga dapat menempatkan kata sandi kita sesudah -p (tanpa spasi) untuk agar
password tidak diminta lagi, tapi ini dianggap sebagai praktik yang buruk, orang lain yang
melihat sistem kita akan mengetahui perintah dan password yang kita buat. Catatan: kita
hanya dapat memberikan privileges yang sudah kita miliki, dan kita juga harus memiliki
privileges untuk mengeluarkan perintah GRANT. Ada berbagai macam privileges yang dapat
kita pilih untuk diberikan jika kita tidak memberikan semua privileges. Untuk detail lebih
lanjut, kunjungi http://tinyurl.com/mysqlgrant, yang juga mencakup perintah REVOKE, yang
dapat menghapus privileges sesudah diberikan. Perlu diketahui juga bahwa jika kita membuat
user baru tetapi tidak menentukan klausa IDENTIFIED BY, user tidak akan memiliki kata sandi,
situasi yang sangat tidak aman dan harus dihindari.
Membuat tabel
Pada titik ini, kita sekarang harus masuk ke MySQL dengan ALL privileges yang
diberikan untuk publikasi database (atau database yang dibuat untuk Anda), jadi kita siap
untuk membuat tabel pertama kita. Pastikan database yang benar digunakan dengan
mengetik berikut ini (g anti publikasi dengan nama database kita jika berbeda):
USE publications;
Sekarang masukkan perintah satu baris pada satu waktu.
Contoh Membuat tabel yang disebut klasik
CREATE TABLE classics (
author VARCHAR(128),
title VARCHAR(128),
type VARCHAR(16),
year CHAR(4)) ENGINE MyISAM;
Atau kita juga bisa mengeluarkan perintah ini pada satu baris seperti ini:
CREATE TABLE classics (author VARCHAR(128), title VARCHAR(128),
type VARCHAR(16), year CHAR(4)) ENGINE MyISAM;
Akan tetapi perintah MySQL biasanya panjang dan rumit, sehingga saya hanya menyarankan
untuk menulis satu baris per instruksi hingga kita merasa nyaman dengan baris yang lebih
panjang. Selanjutnya MySQL harus mengeluarkan respons Query OK, 0 rows affect, bersama
dengan berapa lama waktu yang dibutuhkan untuk mengeksekusi perintah. Jika kita melihat
pesan kesalahan maka periksa sintaks kita dengan cermat. Setiap tanda kurung dan koma
dihitung, dan kesalahan pengetikan juga sering terjadi, sehingga kita harus sangat berhati-hati
dalam mengetikkan tanda kode apapun. ENGINE MyISAM memberi tahu MySQL jenis mesin
database yang digunakan untuk tabel ini. Untuk memeriksa apakah tabel baru kita telah
dibuat, ketik:
DESCRIBE classics;
16
Manajemen Database MySQL
Anda akan melihat urutan perintah dan tanggapan yang ditunjukkan pada contoh dibawah ini,
kita harus memperhatikan format tabel yang ditampilkan secara teliti.
Contoh. Sesi MySQL: membuat dan memeriksa tabel baru
mysql> USE publications;
Database changed
mysql> CREATE TABLE classics (
-> author VARCHAR(128),
-> title VARCHAR(128),
-> type VARCHAR(16),
-> year CHAR(4)) ENGINE MyISAM;
Query OK, 0 rows affected (0.03 sec)
mysql> DESCRIBE classics;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| author | varchar(128) | YES | | NULL | |
| title | varchar(128) | YES | | NULL | |
| type | varchar(16) | YES | | NULL | |
| year | char(4) | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Perintah DESCRIBE adalah bantuan debugging yang sangat berharga saat kita perlu
memastikan bahwa kita telah membuat tabel MySQL dengan benar. Kita juga dapat
memakai nya untuk mengingatkan diri kita tentang nama field atau kolom tabel dan tipe
data di masing-masing tabel. Mari kita lihat masing-masing judul secara detail:
Field
Nama setiap field atau kolom dalam tabel.
Type
Jenis data yang disimpan di field.
Null
Apakah field diperbolehkan berisi nilai NULL.
Key
MySQL mendukung kunci atau indeks, yang merupakan cara cepat untuk mencari data. Key
heading menunjukkan jenis kunci (jika ada) yang telah diterapkan.
Default
Nilai default yang akan ditetapkan ke field jika tidak ada nilai yang ditentukan saat baris baru
dibuat.
Extra
Informasi tambahan, seperti apakah field disetel ke peningkatan otomatis.
1.6 MELINDUNGI DATABASE MySQL ANDA
Anda perlu mengontrol akses ke informasi dalam database Anda. Kita perlu
memutuskan siapa yang dapat melihat data dan siapa yang dapat mengubahnya. Jika orang
jahat mendapatkan daftar informasi pribadi pelanggan kita (seperti nomor kartu kredit), kita
jelas memiliki masalah. Kita perlu menjaga data Anda.
17
Manajemen Database MySQL
MySQL menyediakan sistem keamanan untuk melindungi data Anda. Sistem tersebut
mencakup hal-hal berikut:
• Akun MySQL: Tidak ada yang bisa mengakses data di database kita tanpa akun. Akun
tersebut memiliki nama yang harus digunakan pengguna. Akun juga dapat memiliki
kata sandi yang harus diberikan user sebelum mereka mengakses akun. Selain itu,
setiap akun menentukan dari mana kita dapat mengakses data, seperti hanya dari
komputer saat ini atau hanya dari domain tertentu.
• Izin: MySQL memakai izin akun untuk menentukan siapa yang dapat melakukan
apa. Siapa pun yang memakai akun yang valid dapat terhubung ke server MySQL,
tetapi dia hanya dapat melakukan hal-hal yang diizinkan oleh izin untuk akun tersebut.
Misalnya, akun mungkin diatur sehingga user dapat memilih data tetapi tidak dapat
menyisipkan atau memperbarui data. Atau, akun mungkin disiapkan agar dapat
mengubah data di tabel tertentu, tetapi hanya bisa melihat data di tabel lain.
Anda dapat membuat dan menghapus akun, menambah dan mengubah kata sandi, serta
menambah dan menghapus izin dengan kueri SQL . Kita dapat mengirim kueri SQL dengan
salah satu metode yang dijelaskan di bagian sebelumnya. Kita juga dapat mengelola akun
MySQL kita dengan fitur yang disediakan oleh phpMyAdmin.
18
Manajemen Database MySQL
BAB 2
MENGELOLA MySQL
MySQL adalah perangkat lunak manajemen database. Ini mengelola database yang
berisi informasi yang kita butuhkan untuk situs web dinamis yang kita bangun. Tujuan kita
adalah untuk menyimpan data dalam database atau mengambil data dari database. Kita dapat
menyimpan dan mengambil data secara langsung atau menyimpan dan mengambil data dari
skrip PHP. Selain itu, seorang administrator MySQL diperlukan untuk memastikan bahwa
MySQL melakukan pekerjaannya dengan benar dan efisien. Kita akan mempelajari tentang
administrasi MySQL juga dalam bab ini. Dalam beberapa bagian pertama dari bab ini, kita akan
mempelajari bagian tentang administrasi MySQL dan bagaimana cara mengontrol akses ke
data kita dengan accountname, hostname, dan password. Selanjut, kita akan mengetahui
informasi spesifik tentang cara menambahkan akun dan mengubah kata sandi dan privileges.
Mencadangkan dan memulihkan database juga merupakan tugas administratif yang penting,
dan kita juga memberi tahu kita cara melakukannya di bab ini. Terakhir, sebagai administrator
MySQL, kita juga harus memastikan bahwa kita memakai MySQL versi terbaru, dan kita
membahasnya di bagian akhir bab ini.
2.1 MEMAHAMI TANGGUNG JAWAB ADMINISTRATOR
Mengelola MySQL mencakup tugas-tugas yang diperlukan untuk memastikan bahwa
MySQL dapat melakukan tugas manajemen datanya dengan cara yang efisien dan aman. Kita
mungkin bertanggung jawab atas beberapa atau semua tugas administratif, tergantung pada
cara kita mengakses MySQL. Jika kita memakai MySQL di komputer perusahaan hosting
web, perusahaan hosting melakukan sebagian besar atau semua tugas administratif. Namun,
jika kita memakai MySQL di komputer lokal Anda, kita adalah administratornya, yang
sepenuhnya bertanggung jawab atas administrasi MySQL.
Adapun tugas pengurus antara lain sebagai berikut:
• Instal MySQL. Jika MySQL berjalan di komputer web hosting, kita tidak bertanggung
jawab atas instalasi.
• Start dan Shut down server MySQL. Jika MySQL berjalan di komputer web hosting,
kita tidak memulai atau menghentikan server.
• Membuat dan memelihara akun user MySQL. Tidak ada yang bisa mengakses data di
database kita tanpa akun. Akun perlu dipasang dan dihapus, kata sandi ditambahkan
atau dihapus, dan privileges yang ditetapkan atau dihapus dari akun. Kita menjelaskan
pengelolaan akun user di bagian "Menyetel Akun MySQL," nanti di bab ini. Jika kita
memakai MySQL di perusahaan hosting web, kita mungkin atau mungkin tidak
diizinkan untuk membuat atau mengubah akun MySQL . Kita mungkin terbatas pada
satu akun dengan privileges yang ditentukan.
• Cadangkan data. Kita perlu menyimpan salinan cadangan data kita jika data hilang
atau rusak. Jika kita memakai MySQL di hosting web perusahaan, kita perlu
memeriksa dengan perusahaan itu mengenai prosedur pencadangannya. Kita mungkin
masih ingin menyimpan cadangan kita sendiri, untuk berjaga-jaga jika prosedur
pencadangan perusahaan hosting web gagal. Kita dapat membaca tentang database
cadangan di bagian “Mencadangkan Database Anda”, nanti di bab ini.
19
Manajemen Database MySQL
• Perbarui MySQL. Instal rilis MySQL baru bila diperlukan. Jika MySQL berjalan di
komputer hosting web, kita tidak bertanggung jawab atas pembaruan. Kita berbicara
tentang memutakhirkan MySQL di bagian “Meningkatkan MySQL,” nanti di bab ini.
Akses Default ke Data Anda
saat MySQL diinstal, akun MySQL default bernama root diinstal. Terkadang, akun ini
dipasang tanpa kata sandi. Jika kita mengkonfigurasi MySQL pada Windows dengan Wizard
Konfigurasi, kita menetapkan kata sandi selama prosedur konfigurasi. Selain itu, kita mungkin
telah menyiapkan akun anonim tanpa nama akun dan tanpa kata sandi. Jika kita mengakses
MySQL melalui perusahaan hosting web, perusahaan memberi kita nama akun dan kata sandi
untuk digunakan.
Secara umum, kita tidak boleh memakai root akun tanpa kata sandi. Jika instalasi
kita mengatur akun root tanpa kata sandi, segera tambahkan kata sandi. Akun root diatur
dengan semua privileges. Kita memakai akun ini untuk administrasi database MySQL
Anda. Kita tidak memerlukan akun dengan semua privileges untuk mengakses database
MySQL Anda, atau untuk menambah dan mengambil data. Oleh karena itu, dalam banyak
kasus, kita ingin membuat akun dengan lebih sedikit privileges yang kita gunakan untuk
mengakses data dari skrip PHP Anda, dan kita akan memberi tahu kita cara melakukannya di
bab ini.
2.2 MENGONTROL AKSES KE DATA ANDA
Anda perlu mengontrol akses ke informasi dalam database Anda. Kita perlu
memutuskan siapa yang dapat melihat data dan siapa yang dapat mengubahnya. Bayangkan
apa yang akan terjadi jika pesaing kita dapat mengubah informasi di katalog produk online kita
atau menyalin daftar pelanggan kita — kita akan gulung tikar dalam waktu singkat. Jelas, kita
perlu menjaga data Anda.
Untungnya, MySQL menyediakan sistem keamanan untuk melindungi data Anda. Tidak
ada yang bisa mengakses data di database kita tanpa akun. Setiap akun MySQL memiliki
atribut berikut:
• Nama akun account name
• Nama host - host name — mesin tempat akun dapat mengakses server MySQL
• Kata sandi - password
• Satu set privileges
Untuk mengakses data Anda, seseorang harus memakai nama akun yang valid dan
mengetahui kata sandi yang terkait dengan akun tersebut. Selain itu, orang tersebut harus
terhubung dari komputer yang diizinkan untuk terhubung ke database kita melalui akun
tertentu.
sesudah user diberikan akses ke database, apa yang dapat dia lakukan terhadap data
tergantung pada privileges apa yang telah ditetapkan untuk akun tersebut. Setiap akun
diperbolehkan atau tidak diizinkan untuk melakukan operasi di database Anda, seperti SELECT,
DELETE, INSERT, CREATE, atau DROP. Pengaturan yang menentukan apa yang dapat dilakukan
akun adalah privileges. Kita dapat mengatur akun dengan semua privileges, tanpa privileges,
atau apa pun di antaranya. Misalnya, untuk katalog produk online, kita ingin pelanggan dapat
melihat informasi dalam katalog tetapi tidak mengubah informasi tersebut.
saat user mencoba untuk terhubung ke MySQL dan mengeksekusi pernyataan,
MySQL mengontrol akses ke data dalam dua tahap:
20
Manajemen Database MySQL
1. Verifikasi koneksi: MySQL memeriksa validitas nama akun dan kata sandi, dan
memeriksa apakah koneksi berasal dari host yang diizinkan untuk terhub ung ke server
MySQL dengan memakai akun yang ditentukan. Jika semuanya diperiksa, MySQL
menerima koneksi.
2. Minta verifikasi: sesudah MySQL menerima koneksi, ia memeriksa apakah akun
memiliki privileges yang diperlukan untuk mengeksekusi pernyataan yang ditentukan.
Jika ya, MySQL mengeksekusi pernyataan tersebut.
Pernyataan apa pun yang kita kirim ke MySQL dapat gagal karena koneksi ditolak pada langkah
pertama atau karena pernyataan tidak diizinkan pada langkah kedua. Pesan kesalahan
dikembalikan untuk membantu kita mengidentifikasi sumber masalah. Di bagian berikut, kita
menjelaskan akun dan privileges secara rinci.
Hostname dan accountname
Bersama-sama, nama akun dan nama host (nama komputer yang diizinkan untuk
terhubung ke database) mengidentifikasi a kun unik. Dua akun dengan nama yang sama tetapi
nama host yang berbeda dapat ada dan dapat memiliki kata sandi dan privileges yang
berbeda. Namun, kita tidak dapat memiliki dua akun dengan nama dan nama host yang sama.
Server MySQL menerima koneksi dari akun MySQL hanya saat akun tersebut terhubung dari
nama host. Saat kita membuat pernyataan GRANT atau REVOKE (yang kita jelaskan di bagian
“Mengubah privileges,” nanti di bab ini), kita mengidentifikasi akun MySQL dengan
memakai nama akun dan nama host dalam format berikut: accountname@namahost
(untuk misalnya, root@localhost). Nama akun MySQL sama sekali tidak terkait dengan nama
user Unix, Linux, atau Windows (kadang -kadang juga disebut nama login). Jika kita
memakai akun MySQL administratif bernama root, akun tersebut tidak terkait dengan
nama login root Unix atau Linux. Mengubah nama akun MySQL tidak memengaruhi nama login
Unix, Linux, atau Windows — dan sebaliknya. Nama akun dan nama host MySQL memiliki
karakteristik sebagai berikut:
• Panjang nama akun dapat mencapai 16 karakter. Kita dapat memakai karakter
khusus dalam nama akun, seperti spasi atau tanda hubung ( -). Namun, kita tidak dapat
memakai wildcard dalam nama akun.
• Nama akun boleh kosong. Jika ada akun di MySQL dengan nama akun kosong, nama
akun apa pun valid untuk akun itu. Seorang user dapat memakai nama akun apa
pun untuk terhubung ke database kita jika user terhubung dari nama host yang
diizinkan untuk terhubung ke nama akun kosong dan memakai kata sandi yang
benar (jika kata sandi diperlukan) . Kita dapat memakai akun dengan nama kosong
untuk memungkinkan user anonim terhubung ke database Anda.
• Nama host dapat berupa nama atau alamat IP. Misalnya, nama host dapat berupa
nama, seperti thor.mycompany.com, atau alamat IP (protokol Internet), seperti
192.163.2.33. Mesin tempat server MySQL diinstal adalah localhost.
• Nama host dapat berisi wildcard. Kita dapat memakai tanda persen (%) sebagai
wildcard; % cocok dengan nama host mana pun. Jika kita menambahkan akun untuk
guswi@%, seseorang yang memakai akun bernama george dapat terhubung ke
server MySQL dari komputer mana pun.
• Nama host boleh kosong. Membiarkan nama host kosong sama dengan memakai
% untuk nama host.
21
Manajemen Database MySQL
Anda dapat membuat akun dengan nama akun kosong dan nama host kosong (atau tanda
persen — % — untuk nama host). Akun seperti itu akan memungkinkan siapa pun untuk
terhubung ke server MySQL dengan memakai nama akun apa pun dari komputer mana
pun. Tetapi kita mungkin tidak menginginkan akun seperti itu. Akun semacam ini terkadang
diinstal saat MySQL diinstal, tetapi tidak diberikan privileges, sehingga tidak dapat
melakukan apa-apa. saat MySQL diinstal, secara otomatis menginstal akun dengan semua
privileges: root@localhost. Tergantung pada sis tem operasi Anda, akun ini mungkin diinstal
tanpa kata sandi. Siapa pun yang masuk ke komputer tempat MySQL diinstal dapat mengakses
MySQL dan melakukan apa saja dengan memakai akun bernama root. (Tentu saja, root
adalah nama akun yang terkenal, jadi akun ini tidak aman. Jika kita adalah administrator
MySQL, segera tambahkan kata sandi ke akun ini.)
Kata sandi
Kata sandi diatur untuk setiap akun. Jika tidak ada kata sandi yang diberikan untuk
akun, kata sandinya kosong, yang berarti tidak ada kata sandi yang diperlukan. MySQL tidak
memiliki batasan panjang kata sandi, tetapi terkadang perangkat lunak lain di sistem kita
membatasi panjangnya hingga delapan karakter. Jika demikian, karakter apa pun sesudah
delapan akan dihapus.
Untuk keamanan ekstra, MySQL mengenkripsi kata sandi sebelum menyimpannya. Itu
berarti kata sandi tidak disimpan dalam karakter yang dapat dikenali yang kita masukkan.
Tindakan keamanan ini memastikan bahwa tidak ada yang bisa begitu saja melihat kata sandi
yang disimpan dan memahami apa itu. Sayangnya, beberapa orang jahat di luar sana mungkin
mencoba mengakses data kita dengan menebak kata sandi Anda. Mereka memakai
perangkat lunak yang mencoba terhubung dengan cepat secara berurutan dengan kata sandi
yang berbeda — praktik yang disebut serangan brute force. Jika server MySQL kita tidak boleh
terpapar langsung ke Internet, penyerang harus mendapatkan akses ke server MySQL terlebih
dahulu untuk mencoba serangan brute force.
Privileges akun
MySQL memakai privileges akun untuk menentukan siapa yang dapat melakukan
apa. Siapa pun yang memakai akun yang valid dapat terhubung ke server MySQL, tetapi
dia hanya dapat melakukan hal-hal yang diizinkan oleh privileges untuk akun tersebut.
Misalnya, akun mungkin disiapkan agar user dapat memilih data tetapi tidak dapat
menyisipkan atau memperbarui data.
Privileges dapat diberikan untuk database, tabel, atau kolom tertentu. Misalnya,
sebuah akun dapat mengizinkan user untuk memilih data dari semua tabel dalam database
tetapi memasukkan data hanya ke dalam satu tabel dan memperbarui hanya satu kolom
dalam tabel tertentu. Tabel dibawah mencantumkan beberapa privileges yang mungkin ingin
kita tetapkan atau hapus. Privileges lain tersedia, tetapi lebih jarang digunakan. Kita dapat
menemukan daftar lengkap privileges di manual online MySQL di
http://dev.mysql.com/doc/refman/5.6/en/privileges-provided.html
Tabel 2.1 Akun Privileges
Privilege Deskripsi
ALL Semua previlege
ALTER Dapat mengubah struktur tabel
CREATE Dapat membuat database atau tabel baru
DELETE Dapat menghapus baris dalam tabel
22
Manajemen Database MySQL
DROP Dapat meletakkan database atau tabel
FILE Dapat membaca dan menulis file di server
GRANT Dapat mengubah hak istimewa pada akun MySQL
INSERT Dapat menyisipkan baris baru ke dalam tabel
SELECT Dapat membaca data dari tabel
SHUTDOWN Dapat mematikan server MySQL
UPDATE Dapat mengubah data dalam tabel
USAGE Tidak ada hak istimewa
Anda mungkin tidak ingin memberikan ALL karena itu mencakup privileges untuk
operasi administratif, seperti mematikan server MySQL — privileges yang tidak ingin dimiliki
orang lain selain diri kita sendiri.
Menyiapkan Akun MySQL
Sebuah akun diidentifikasi dengan nama akun dan nama komputer yang diizinkan
untuk mengakses MySQL dari akun ini. Saat kita membuat akun baru, kita menetapkannya
sebagai nama akun@namahost . Kita dapat menentukan kata sandi saat membuat akun, atau
kita dapat menambahkan kata sandi nanti. Kita juga dapat mengatur privileges saat membuat
akun atau menambahkan privileges nanti.
2.3 DATABASE KEAMANAN MySQL
saat MySQL diinstal, secara otomatis membuat database yang disebut mysql. Semua
informasi yang digunakan untuk melindungi data kita disimpan dalam database ini, termasuk
nama akun, nama host, kata sandi, dan privileges. Privileges disimpan dalam kolom. Format
setiap nama kolom adalah privilege_priv, di mana privileges adalah privileges akun tertentu.
Misalnya, kolom yang berisi hak ALTER bernama alter_priv. Nilai di setiap kolom privileges
adalah Y atau N, artinya ya atau tidak. Jadi, misalnya, di tabel user akan ada baris untuk akun
dan kolom untuk alter_priv. Jika field akun untuk alter_priv berisi Y, akun tersebut dapat
digunakan untuk mengeksekusi pernyataan ALTER. Jika alter_priv berisi N, akun tidak memiliki
privileges untuk mengeksekusi pernyataan ALTER.
Database mysql berisi tabel berikut yang menyimpan privileges:
• User table: Tabel ini menyimpan privileges yang berlaku untuk semua database dan
tabel. Ini berisi baris untuk setiap akun yang valid yang mencakup kolom nama
pengguna, nama host, dan kata sandi. Server MySQL menolak koneksi untuk akun yang
tidak ada di tabel ini
• db table: Tabel ini menyimpan privileges yang berlaku untuk database tertentu. Ini
berisi baris untuk database, yang memberikan privileges untuk nama akun dan nama
host. Akun harus ada di tabel user agar privileges diberikan. Privileges yang diberikan
dalam tabel user mengesampingkan privileges dalam tabel ini. Misalnya, jika tabel user
memiliki baris untuk perancang akun yang memberikan privileges INSERT, perancang
dapat menyisipkan ke semua database. Jika baris dalam tabel db menunjukkan N untuk
INSERT untuk akun desainer di PetCatalogdatabase, tabel user mengesampingkannya,
dan desainer dapat menyisipkan dalam database PetCatalog.
• tabel host: Tabel ini mengontrol akses ke database, tergantung pada host. Tabel host
berfungsi dengan tabel db. Jika baris dalam tabel db memiliki field kosong untuk host,
MySQL memeriksa tabel host untuk melihat apakah db memiliki baris di sana. Dengan
23
Manajemen Database MySQL
cara ini, kita dapat mengizinkan akses ke db dari beberapa host tetapi tidak dari yang
lain. Misalnya, kita memiliki dua database: db1 dan db2. Database db1 memiliki
informasi sensitif, jadi kita hanya ingin orang-orang tertentu yang melihatnya.
Database db2 memiliki informasi yang kita ingin semua orang lihat. Jika kita memiliki
satu baris di tabel db untuk db1 dengan field host kosong, kita dapat memiliki dua baris
untuk db1 di tabel host. Satu baris dapat memberikan semua privileges kepada user
yang terhubung dari host tertentu, sedangkan baris lain dapat menolak privileges bagi
user yang terhubung dari host lain.
• table_priv table: Tabel ini menyimpan privileges yang berlaku untuk tabel tertentu.
• tabel column_priv: Tabel ini menyimpan privileges yang berlaku untuk kolom tertentu.
Anda dapat melihat dan mengubah tabel di mysql secara langsung jika kita memakai akun
yang memiliki privileges yang diperlukan. Kita dapat memakai kueri SQL seperti SELECT,
INSERT, dan UPDATE. Jika kita mengakses MySQL melalui perusahaan Anda, client, atau
perusahaan hosting web, kita mungkin tidak memiliki akun dengan privileges yang diperlukan.
Semua informasi akun disimpan dalam database bernama mysql yang secara otomatis dibuat
saat MySQL diinstal. Untuk menambahkan akun baru atau mengubah informasi akun apa
pun, kita harus memakai akun yang memiliki privileges yang sesuai di database mysql. Di
bagian selanjutnya, kita menjelaskan cara menambah dan menghapus akun serta mengubah
kata sandi dan privileges untuk akun — dan cara me-refresh privileges agar MySQL melihat
perubahannya. Namun, jika kita memiliki akun yang kita terima dari departemen TI
perusahaan kita atau dari perusahaan hosting web, kita mungkin menerima kesalahan saat
mencoba menambahkan akun atau mengubah hak akun. Jika akun kita dibatasi untuk
melakukan salah satu kueri yang diperlukan, kita perlu meminta akun dengan lebih banyak
privileges atau meminta administrator MySQL untuk menambahkan akun baru untuk kita atau
membuat perubahan yang kita perlukan.
Mengidentifikasi akun apa yang saat ini ada
Untuk melihat informasi akun, kita dapat menjalankan kueri SQL, memakai client
mysql. Untuk melihat akun apa yang saat ini ada untuk database Anda, kita memerlukan akun
yang memiliki privileges yang diperlukan.
Semua nama akun disimpan dalam database bernama mysql dalam tabel bernama
pengguna. Untuk melihat informasi akun, kita dapat menjalankan kueri berikut pada database
bernama mysql:
SELECT * FROM user
Anda harus mendapatkan daftar semua akun. Namun, jika kita mengakses MySQL melalui
perusahaan kita atau perusahaan hosting web, kita mungkin tidak memiliki privileges yang
diperlukan. Dalam hal ini, kita mungkin mendapatkan pesan kesalahan seperti ini:
No Database Selecte
Pesan ini berarti bahwa akun kita tidak diizinkan untuk memilih database mysql. Atau kita
mungkin mendapatkan pesan kesalahan yang mengatakan bahwa kita tidak memiliki
privileges SELECT. Meskipun pesan ini mengganggu, itu pertanda bahwa perusahaan memiliki
langkah-langkah keamanan yang baik. Namun, itu juga berarti kita tidak dapat melihat
24
Manajemen Database MySQL
privileges apa yang dimiliki akun Anda. Kita harus bertanya kepada administrator MySQL kita
atau mencoba mencari tahu sendiri dengan mencoba kueri dan melihat apakah kita diizinkan
untuk menjalankannya.
Menambahkan akun
Cara yang lebih disukai untuk mengakses MySQL dari PHP adalah membuat akun
khusus untuk tujuan ini dengan hanya privileges yang diperlukan, dan kita menjelaskan di
bagian ini cara menambahkan akun. Jika kita memakai akun yang diberikan kepada kita
oleh departemen TI perusahaan atau perusahaan hosting web, akun tersebut mungkin atau
mungkin tidak memiliki semua privileges yang diperlukan untuk membuat akun. Jika tidak, kita
tidak dapat berhasil menjalankan pernyataan untuk menambahkan akun, dan kita harus
meminta akun kedua untuk digunakan dengan PHP.
Jika kita perlu meminta akun kedua, dapatkan akun dengan privileges terbatas ( jika
memungkinkan) karena aplikasi database web kita lebih aman jika akun yang digunakan
program PHP kita tidak memiliki lebih banyak privileges daripada yang diperlukan. Untuk
membuat satu atau lebih user saat kita memiliki privileges yang diperlukan, kita dapat
memakai pernyataan CREATE USER (ditambahkan ke MySQL di versi 5.0.2), sebagai
berikut:
CREATE USER accountname@hostname IDENTIFIED BY ‘password’, accountname@hostname
IDENTIFIED BY ‘password’,...
Pernyataan ini membuat akun user baru yang ditentukan dengan kata sandi yang ditentukan
untuk setiap akun dan tanpa privileges. Kita tidak perlu menentukan kata sandi. Jika kita
meninggalkan IDENTIFIED BY 'password', akun dibuat tanpa kata sandi . Kita dapat
menambahkan atau mengubah kata sandi untuk akun di lain waktu. Kita membahas
menambahkan kata sandi dan privileges di bagian "Menambahkan dan mengubah kata sandi"
dan "Mengubah privileges," nanti di bab ini. Jika kita memakai versi MySQL sebelum
5.0.2, kita harus memakai pernyataan GRANT untuk membuat akun . Kita menjelaskan
pernyataan GRANT di bagian "Mengubah privileges", nanti di bab ini.
Menambah dan mengubah kata sandi
Kata sandi tidak diatur dalam batu. Kita dapat menambahkan atau mengubah kata
sandi untuk akun yang ada. Seperti prosedur di bagian ini, kita dapat menambahkan atau
mengubah kata sandi dengan pernyataan SQL, seperti ini:
SET PASSWORD FOR username@hostname = PASSWORD(‘password’)
Akun diatur ke kata sandi untuk akun username@hostname. Jika akun saat ini memiliki kata
sandi, kata sandi diubah. Kita tidak perlu menentukan klausa FOR. Jika tidak, kata sandi disetel
untuk akun yang sedang kita gunakan. Kita dapat menghapus kata sandi dengan mengirimkan
pernyataan SET PASSWORD dengan kata sandi kosong:
SET PASSWORD FOR username@hostname = PASSWORD(‘’)
Saat kita membuat perubahan pada kata sandi, kita perlu menyegarkan privileges agar MySQL
melihat perubahannya. Hal ini dicapai dengan FLUSH Pernyataan PRIVILEGES :
25
Manajemen Database MySQL
FLUSH PRIVILEGES
Mengubah privileges
Setiap akun memiliki serangkaian privileges yang menentukan apa yang dapat dan
tidak dapat dilakukan oleh user akun tersebut. Kita dapat mengatur privileges saat membuat
akun, tetapi kita juga dapat mengubah privileges akun kapan saja. Privileges paling berguna
yang dapat kita atur untuk sebuah akun. Kita dapat melihat privileges saat ini untuk sebuah
akun dengan mengirimkan pernyataan berikut:
SHOW GRANTS ON accountname@hostname
Outputnya adalah pernyataan GRANT yang akan membuat akun saat ini. Output menunjukkan
semua privileges saat ini. Jika kita tidak menyertakan klausa ON, kita akan melihat privileges
saat ini untuk akun yang mengeluarkan kueri SHOW GRANTS . Kita dapat mengubah privileges
untuk akun dengan pernyataan GRANT, yang memiliki format umum berikut:
GRANT privilege (columns) ON tablename TO accountname@hostname IDENTIFIED BY
‘password’
Seperti perubahan terkait privileges lainnya, kita perlu menyegarkan privileges sesudah
melakukan perubahan memakai FLUSH PRIVILEGES . Kita juga dapat membuat akun baru
atau mengubah kata sandi dengan pernyataan GRANT . Kita perlu mengisi informasi berikut:
• privilege (columns): kita harus mencantumkan setidaknya satu privileges. Kita dapat
membatasi setiap privileges ke satu atau lebih kolom dengan mencantumkan nama
kolom dalam tanda kurung mengikuti privileges. Jika kita tidak mencantumkan nama
kolom, privileges diberikan pada semua kolom dalam tabel. Kita dapat membuat daftar
privileges dan kolom sebanyak yang diperlukan, dipisahkan dengan koma. Kita dapat
melihat kemungkinan privileges. Misalnya, pernyataan GRANT mungkin dimulai
dengan ini:
GRANT select (firstName,lastName), update ,
insert (birthdate) ...
• tablename: Nama (atau nama) dari tabel di mana privileges diberikan. Kita harus
menyertakan setidaknya satu tabel. Kita dapat membuat daftar beberapa tabel,
dipisahkan dengan koma. Nilai yang mungkin untuk nama tabel adalah
o tablename: Seluruh tabel bernama tablename dalam database saat ini. Kita
dapat memakai tanda bintang (*) untuk mengartikan semua tabel dalam
database saat ini. Jika kita memakai tanda bintang dan tidak ada database
saat ini yang dipilih, privileges diberikan ke semua tabel di semua database.
o databasename.tablename: Seluruh tabel bernama tablename di
databasename. Kita dapat memakai tanda bintang (*) baik untuk nama
database atau nama tabel yang berarti semua database atau tabel.
memakai *.*m emberikan privileges pada semua tabel di semua database.
26
Manajemen Database MySQL
• accountname@hostname: Jika akun sudah ada, itu diberikan privileges yang
ditunjukkan. Jika akun tidak ada, itu ditambahkan. Akun diidentifikasi dengan nama
akun dan nama host sebagai pasangan. Jika ada akun dengan nama akun yang
ditentukan tetapi nama host yang berbeda, akun yang ada tidak akan diubah; yang
baru dibuat.
• password: Kata sandi yang kita tambahkan atau ubah. Kata sandi tidak diperlukan. Jika
kita tidak ingin menambah atau mengubah kata sandi untuk akun ini, tinggalkan frasa
DIDENTIFIED BY ‘password’.
Misalnya, pernyataan GRANT yang menambahkan akun baru untuk digunakan dalam skrip
PHP untuk database katalog online bernama ProductCatalog mungkin:
GRANT select ON ProductCatalog.* TO phpuser @localhost IDENTIFIED BY ‘A41!14a!’
Untuk menghapus privileges, gunakan pernyataan REVOKE. Bentuk umumnya adalah :
REVOKE privilege (columns) ON tablename FROM accountname@hostname
Anda harus mengisi informasi yang sesuai. Kita dapat menghapus semua privileges untuk
sebuah akun dengan pernyataan REVOKE berikut :
REVOKE all ON *.* FROM accountname@hostname
Mengganti akun
Anda mungkin ingin menghapus akun. Dalam kebanyakan kasus, memiliki akun yang
tidak digunakan oleh siapa pun tidak memiliki efek negatif. Namun, jika menurut kita sebuah
akun telah disusupi, kita mungkin ingin menghapusnya karena alasan keamanan. Untuk
menghapus akun, kita dapat memakai pernyataan DROP USER (yang ditambahkan di
MySQL 4.1.1), sebagai berik ut:
DROP USER accountname@hostname, accountname@hostname, ...
Anda harus memakai akun yang memiliki hak DELETE pada database mysql untuk
mengeksekusi pernyataan DROP USER. Perilaku DROP USER telah berubah melalui versi
MySQL. Pada MySQL 5.0.2, menghapus akun dan semua catatan yang terkait dengan akun,
termasuk catatan yang memberikan privileges akun pada database atau tabel tertentu.
Namun, dalam versi sebelum MySQL 5.0.2, DROP USER hanya menghapus akun yang tidak
memiliki privileges. Oleh karena itu, di versi yang lebih lama, kita harus menghapus semua
privileges dari sebuah akun, termasuk privileges database atau tabel, sebelum kita dapat
menghapus akun itu.
2.4 PENCADANGAN DAN PEMULIHAN
Apa pun jenis data yang kita simpan di databas pasti memiliki nilai bagi kita. Penting
bagi kita untuk menyimpan cadangan untuk melindungi investasi kita. Juga, akan ada saat-
saat saat kita harus memigrasi database kita ke server baru; cara terbaik untuk melakukan
ini biasanya dengan mencadangkannya terlebih dahulu. Penting juga bagi kita untuk menguji
cadangan kita dari waktu ke waktu untuk memastikan bahwa cadangan tersebut valid dan
27
Manajemen Database MySQL
dapat berfungsi dengan baik jika digunakan. Mencadangkan dan memulihkan data MySQL
mudah dilakukan dengan perintah mysqldump.
Mencadangkan database Anda
Anda harus memiliki setidaknya satu salinan cadangan dari database berharga Anda.
Bencana jarang terjadi, tetapi memang terjadi. Komputer tempat database kita disimpan
dapat rusak dan kehilangan data Anda, file komputer dapat rusak, gedung dapat terbakar, dan
sebagainya. Salinan cadangan database kita menjaga dari kehilangan data dari bencana
tersebut. Kita harus memiliki setidaknya satu salinan cadangan database kita yang disimpan
di lokasi yang terpisah dari salinan yang kita gunakan saat ini. Kita mungkin harus memiliki
lebih dari satu salinan — mungkin sebanyak tiga. Inilah cara kita dapat menyimpan salinan
Anda:
• Salinan pertama: Simpan satu salinan di lokasi yang praktis, bahkan mungkin di
komputer yang sama tempat kita menyimpan database, untuk mengganti database
yang rusak dengan cepat.
• Salinan kedua: Simpan salinan kedua di komputer lain jika komputer tempat database
kita rusak, membuat salinan cadangan pertama tidak tersedia.
• Salinan ketiga: Simpan salinan ketiga di lokasi fisik yang berbeda untuk
mempersiapkan kemungkinan kecil bahwa bangunan akan terbakar. Jika kita
menyimpan salinan cadangan kedua di komputer di lokasi fisik lain, kita tidak
memerlukan salinan ketiga ini.
Jika kita tidak memiliki akses ke komputer di luar situs tempat kita dapat mencadangkan
database, kita dapat menyalin cadangan ke media portabel, seperti CD atau DVD, dan
menyimpannya di luar situs. Perusahaan tertentu akan menyimpan media komputer kita di
lokasi mereka dengan biaya tertentu, atau kita dapat memasukkan media ke dalam saku kita
dan membawanya pulang
Jika kita memakai MySQL di komputer orang lain, seperti komputer perusahaan
hosting web, orang yang menyediakan akses kita bertanggung jawab atas pencadangan.
Mereka harus memiliki prosedur otomatis yang membuat cadangan database Anda. Saat
mengevaluasi perusahaan hosting web, tanyakan tentang prosedur pencadangan. Kita ingin
tahu seberapa sering salinan cadangan dibuat dan di mana mereka disimpan. Jika kita tidak
yakin bahwa data kita aman, kita dapat mendiskusikan perubahan atau penambahan pada
prosedur pencadangan.
Jika kita adalah administrator MySQL, kita bertanggung jawab untuk membuat
cadangan. Bahkan jika kita memakai MySQL di komputer orang lain, kita mungkin ingin
membuat salinan cadangan kita sendiri, agar aman. Buat cadangan pada waktu-waktu
tertentu — setidaknya sekali sehari. Jika database kita sering berubah, kita mungkin ingin
membuat cadangan lebih sering. Misalnya, kita mungkin ingin mencadangkan ke direktori
pencadangan setiap jam tetapi mencadangkan ke komputer lain sekali sehari.
Anda dapat membuat cadangan database MySQL kita dengan memakai program
utilitas yang disebut mysqldump, yang disediakan oleh MySQL. Program mysqldump
membuat file teks yang berisi semua pernyataan SQL yang kita perlukan untuk membuat ulang
seluruh database Anda. File berisi pernyataan CREATE untuk setiap tabel dan pernyataan
INSERT untuk setiap baris data dalam tabel. Kita dapat memulihkan database Anda, baik ke
lokasi saat ini atau di komputer lain, dengan menjalankan kumpulan pernyataan MySQL ini.
Mencadangkan di Windows
28
Manajemen Database MySQL
Untuk membuat salinan cadangan database kita di Windows, ikuti langkah-langkah
berikut:
1. Buka jendela command prompt.
Misalnya, pilih Start➪All ProgramsAccessories➪Command Prompt.
2. Ubah ke subdirektori bin di direktori tempat MySQL diinstal.
Misalnya, ketik cd c:\ Program Files\ MySQL\ MySQL Server 5.0\ bin ke dalam command
prompt.
3. Ketik berikut ini
mysqldump --user= accountname --password= password
databasename >path \ backupfilename
Mencadangkan di Linux, Unix, dan Mac
Ikuti langkah-langkah ini untuk membuat salinan cadangan database kita di Linux, di
Unix, atau di Mac:
1. Ubah ke subdirektori bin di direktori tempat MySQL diinstal.
Misalnya, ketik cd /usr/local/mysql/bin.
2. Ketik berikut ini:
mysqldump --user= accountname --password= password
databasename >path/backupfilename
Dalam kode sebelumnya, buat substitusi berikut:
o accountname: Ganti dengan nama akun MySQL yang kita gunakan untuk
membuat cadangan database.
o password: Gunakan kata sandi untuk akun.
o databasename: Gunakan nama database yang ingin kita buat cadangannya.
o path/backupfilename: Ganti path dengan direktori di mana kita ingin
menyimpan backup dan backupfilename dengan nama file di mana kita ingin
menyimpan output SQL.
Akun yang kita gunakan harus memiliki privileges SELECT. Jika akun tidak memerlukan kata
sandi, kita dapat mengabaikan seluruh opsi kata sandi. Kita dapat mengetikkan perintah pada
satu baris tanpa menekan Enter. Atau kita dapat mengetikkan garis miring terbalik ( \ ), tekan
Enter, dan lanjutkan perintah di baris lain. Misalnya, untuk mencadangkan database
PetCatalog, kita dapat memakai perintah:
mysqldump--user=root --password=secretPetCatal og\
>/usr/local/mysql/backups/PetCatalogBackup
Catatan: Dengan Linux atau Unix, akun yang kita masuki harus memiliki privileges untuk
menulis file ke direktori cadangan.
Anda harus mengetik perintah mysqldump pada satu baris tanpa menekan Enter.
Dalam kode sebelumnya, buat substitusi berikut:
• accountname: Masukkan nama akun MySQL yang kita gunakan untuk membuat
cadangan database. Akun yang kita gunakan harus memiliki privileges SELECT. Jika
akun tidak memerlukan kata sandi, kita dapat mengabaikan seluruh opsi kata sandi.
• password: Gunakan kata sandi untuk akun.
• databasename: Ganti dengan nama database yang ingin kita backup.
29
Manajemen Database MySQL
• path\backupfilename: Ganti path dengan direktori tempat kita ingin menyimpan
cadangan dan gunakan nama file tempat kita ingin menyimpan output SQL sebagai
ganti namafile cadangan. Misalnya, untuk mencadangkan database ProductCatalog,
kita dapat memakai perintah
mysqldump --user=root ProductCatalog >ProdCatalogBackup
memakai mysqldump
Dengan mysqldump, kita dapat membuang database atau kumpulan database ke
dalam satu atau lebih file yang berisi semua instruksi yang diperlukan untuk membuat ulang
semua tabel kita dan mengisinya kembali dengan data kita. Mysqldump juga menghasilkan file
dalam CSV (Comma Separated Values) dan format teks terbatas lainnya, atau bahkan dalam
format XML. Kelemahan utamanya adalah kita harus memastikan bahwa tidak ada yang
menulis ke tabel saat kita mencadangkannya. Ada berbagai cara untuk melakukan ini, salah
satunya adalah mematikan server MySQL sebelum melakukan mysqldump dan memulai
kembali server sesudah mysqldump selesai. Atau kita dapat mengunci tabel yang kita buat
cadangannya sebelum menjalankan mysqldump. Untuk mengunci tabel agar dapat dibaca
(karena kita ingin memba ca data), jalankan perintah berikut dari command line MySQL:
LOCK TABLES tablename1 READ, tablename2 READ ...
Kemudian, untuk melepaskan kunci, masukkan:
UNLOCK TABLES;
Secara default, output dari mysqldump hanya dicetak, tetapi kita dapat menangkapnya dalam
file melalui symbol > redirect. Format dasar dari perintah mysqldump adalah:
mysqldump -u user -ppassword database
Namun, sebelum kita bisa membuang konten database, kita harus memastikan bahwa
mysqldump ada di jalur Anda, atau kita menentukan lokasinya sebagai bagian dari perintah
kita. Tabel dibawah ini menunjukkan kemungkinan lokasi program untuk berbagai instalasi
dan sistem operasi. Jika kita memiliki instalasi yang berbeda, mungkin lokasinya sedikit
berbeda.
Tabel 2.2 Kemungkinan lokasi mysqldump untuk instalasi yang berbeda
Program dan Sistem Operasi Lokasi Folder yang diinginkan
Windows 32-bit Zend Server C:\Program Files\Zend\MySQL55\
Windows 64-bit Zend Server C:\Program Files (x86)\Zend\MySQL55\bin
OS X Zend Server usrlocal/zend/mysql/bin
Linux Zend Server usrlocal/zend/mysql/bin
Jadi, untuk membuang konten database publikasi yang kita buat, masukkan
mysqldump (atau path lengkap jika perlu) dan lakukan seperti perintah dibawah ini.
Contoh Membuang database publikasi ke layar
mysqldump -u user -ppassword publications
30
Manajemen Database MySQL
Pastikan kita mengganti user dan password dengan detail yang benar untuk instalasi
MySQL kita. Jika tidak ada kata sandi yang ditetapkan untuk user, kita dapat menghilangkan
bagian perintah itu, tetapi bagian -u user adalah wajib—kecuali jika kita memiliki akses root
tanpa kata sandi dan dijalankan sebagai root (tidak disarankan). Hasil dari mengeluarkan
perintah ini akan terlihat seperti gambar dibawah ini.
Gambar 2.1 Membuang database publikasi ke screen
Membuat File Cadangan
Sekarang sesudah mysqldump berfungsi, dan telah memverifikasi outputnya dengan
benar ke layar, kita dapat mengirim data cadangan langsung ke file memakai symbol >
redirect. Dengan asumsi bahwa kita ingin memanggil file backup publishings.sql, ketik
perintah seperti contoh dibawah ini (ingatlah untuk selalu mengganti user dan password
dengan rincian yang benar).
Contoh Membuang database publikasi ke file
mysqldump -u user -ppassword publications > publications.sql
Jika kita meng-echo-kan file cadangan ke layar atau memuatnya ke editor teks, kita akan
melihat bahwa itu terdiri dari urutan perintah SQL seperti berikut:
DROP TABLE IF EXISTS `classics`;
CREATE TABLE `classics` (
`author` varchar(128) default NULL,
`title` varchar(128) default NULL,
`category` varchar(16) default NU LL,
`year` smallint(6) default NULL,
`isbn` char(13) NOT NULL default ' ',
PRIMARY KEY (`isbn`),
KEY `author` (`author`(20)),
KEY `title` (`title`(20)),
KEY `category` (`category`(4)),
KEY `year` (`year`),
FULLTEXT KEY `author_2` (`author`,`title`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
31
Manajemen Database MySQL
Ini adalah smart code yang dapat digunakan untuk memulihkan database dari cadangan,
meskipun saat ini ada, karena ini akan terlebih dahulu menghapus tabel apa pun yang perlu
dibuat ulang, sehingga menghindari potensi kesalahan MySQL.
Mencadangkan satu tabel
Untuk mencadangkan hanya satu tabel dari database (seperti tabel klasik dari
database publikasi), kita harus terlebih dahulu mengunci tabel dari dalam command line
MySQL, dengan mengeluarkan perintah seperti berikut:
LOCK TABLES publications.classics READ;
Ini dapat memastikan bahwa MySQL tetap berjalan dengan tujuan membaca, tetapi penulisan
tidak dapat dilakukan. Kemudian, sambil menjaga command line MySQL tetap terbuka,
gunakan jendela terminal lain untuk mengeluarkan perintah berikut dari command line sistem
operasi:
mysqldump -u user -ppassword publications classics > classics.sql
Anda sekarang harus melepaskan kunci tabel dengan memasukkan perintah berikut dari
command line MySQL di jendela terminal pertama, yang membuka kunci semua tabel yang
telah dikunci selama sesi saat ini:
UNLOCK TABLES;
Mencadangkan semua tabel
Jika kita ingin mencadangkan semua database MySQL kita sekaligus (termasuk
database sistem seperti mysql), kita dapat memakai perintah seperti pada Contoh
dibawah yang akan memungkinkan kita untuk memulihkan seluruh instalasi database MySQL.
Ingatlah untuk memakai penguncian jika diperlukan.
Contoh Membuang semua database MySQL ke file
mysqldump -u user -ppassword --all-databases > all_databases.sql
Memulihkan Data Anda
Pada titik tertentu, salah satu tabel database kita mungkin rusak dan tidak dapat
digunakan. Ini tidak biasa, tetapi itu terjadi. Misalnya, masalah perangkat keras atau komputer
mati yang tidak terduga dapat menyebabkan tabel rusak. Terkadang, anomali dalam data yang
membingungkan MySQL dapat menyebabkan tabel rusak. Dalam beberapa kasus, tabel yang
rusak dapat menyebabkan server MySQL kita dimatikan. Berikut adalah pesan kesalahan
umum yang menandakan tabel yang rusak:
Incorrect key file for table: ‘tablename’.
Anda dapat mengganti tabel yang rusak dengan data yang disimpan dalam salinan cadangan.
Namun, dalam beberapa kasus, database mungkin hilang sama sekali. Misalnya, jika komputer
tempat database kita berada rusak dan tidak dapat diperbaiki, database kita saat ini akan
hilang — tetapi data kita tidak hilang selamanya. Kita dapat mengganti komputer yang rusak
dengan komputer baru dan memulihkan database kita dari salinan cadangan. Kita dapat
mengganti tabel database kita saat ini dengan database yang kita simpan di salinan cadangan.
32
Manajemen Database MySQL
Salinan cadangan berisi snapshot data seperti saat salinan dibuat. Tentu saja, kita tidak
mendapatkan perubahan apa pun pada database sejak salinan cadangan dibuat; kita harus
membuat ulang perubahan tersebut secara manual. Sekali lagi, jika kita mengakses MySQL
melalui departemen TI atau melalui perusahaan hosting web, kita perlu meminta
administrator MySQL untuk memulihkan database kita dari cadangan. Jika kita adalah
administrator MySQL, kita dapat memulihkannya sendiri.
Kita membangun database dengan membuat database dan kemudian menambahkan
tabel ke database. Cadangan yang dibuat oleh utilitas mysqldump adalah file yang berisi
semua pernyataan SQL yang diperlukan untuk membangun kembali tabel, tetapi tidak berisi
pernyataan yang kita perlukan. untuk membuat database itu sendiri. Untuk memulihkan
database dari file backup, kita harus mengedit file backup terlebih dahulu (yang mer upakan
file teks). Kemudian, kita memakai client mysql untuk membuat database dari
pernyataan SQL di file cadangan
Pertama, kita mengedit file cadangan dengan mengikuti langkah-langkah berikut:
1. Buka file cadangan di editor teks.
2. Temukan baris yang menunjukkan Versi Server.
3. Jika kita ingin membangun kembali seluruh database, tambahkan pernyataan
berikut di bawah garis yang kita temukan di Langkah 2:
CREATE DATABASE IF NOT EXISTS databasename
4. Di bawah baris pada Langkah 3, tambahkan baris yang menentukan database mana
yang akan ditambahkan tabel menjadi:
USE databasename
5. Periksa blok pernyataan yang membangun kembali tabel.
Jika kita tidak ingin membuat ulang tabel, tambahkan -- (dua tanda hubung) di awal
setiap baris yang membuat ulang tabel. Tanda hubung menandai garis sebagai
komentar.
6. Periksa baris INSERT untuk setiap tabel.
Jika kita tidak ingin menambahkan data ke tabel apa pun, beri komentar pada baris
INSERT datanya.
7. Simpan file cadangan yang telah diedit.
sesudah file cadangan berisi pernyataan yang ingin kita gunakan untuk membangun kembali
database atau tabel, kita dapat memakai client mysql untuk mengeksekusi pernyataan
SQL dalam file cadangan. Ikuti saja langkah-langkah ini:
1. Dari prompt baris perintah, ubah ke subdirektori bin di direktori tempat MySQL
diinstal.
Di Windows, kita membuka jendela command prompt untuk memakai client
mysql. Ketik perintah cd untuk mengubah ke direktori yang benar. Misalnya, kita dapat
mengetik cd/usr/local/mysql/bin atau cdc:\Program Files\MySQL\MySQL Server
5.0\bin.
2. Ketik perintah ini (yang mengirimkan kueri SQL dalam file cadangan):
mysql -u accountname -p < path/backupfilename
Anda mengganti nama akun dengan akun yang memiliki privileges CREATE. Jika akun
tidak memerlukan kata sandi, tinggalkan -p. Jika kita memakai -p, kita akan
dimintai kata sandi. Gunakan seluruh jalur dan nama file untuk file cadangan. Misalnya,
kita dapat memakai perintah ini untuk memulihkan database ProductCatalog:
33
Manajemen Database MySQL
mysql -u root -p < c: \ Program Files\ MySQL\ MySQL Server
5.0\ bin\ bak\ ProductCatalog.bak
Memulihkan dari File Cadangan
Untuk melakukan pemulihan dari file, panggil executable mysql, berikan file untuk
dipulihkan memakai simbol <. Jadi, un tuk memulihkan seluruh database yang kita buang
memakai opsi --all-databases, gunakan perintah seperti dibawah ini:
Contoh Memulihkan seluruh rangkaian database
mysql -u user -ppassword < all_databases.sql
Untuk memulihkan satu database gunakan opsi -D diikuti dengan nama database, seperti pada
Contoh diatas di mana database publikasi sedang dipulihkan dari cadangan yang dibuat pada
Contoh sebelumnya.
Contoh Memulihkan database publikasi
mysql -u user -ppassword -D publications < publications.sql
Untuk memulihkan satu tabel ke database, gunakan perintah seperti pada Contoh
dibawah di mana hanya tabel klasik yang dipulihkan ke database publikasi.
Contoh Memulihkan tabel klasik ke database publikasi
mysql -u user -ppassword -D publications < classics.sql
Tabel mungkin memerlukan waktu singkat untuk dipulihkan. Tunggu sampai perintah
selesai. Jika terjadi masalah, pesan kesalahan akan muncul. Jika tidak ada masalah yang
terjadi, kita tidak akan melihat output. saat perintah selesai, prompt muncul. Database kita
sekarang dipulihkan dengan semua data yang ada di dalamnya pada saat salinan dibuat. Jika
data telah berubah sejak salinan dibuat, kita akan kehilangan perubahan tersebut. Misalnya,
jika lebih banyak data ditambahkan sesudah salinan cadangan dibuat, data baru tidak akan
dipulihkan. Jika kita mengetahui perubahan yang dibuat sesudah membuat cadangan, kita
dapat membuatnya secara manual di database yang dipulihkan.
Membuang Data dalam Format CSV
Seperti disebutkan sebelumnya, program mysqldump sangat fleksibel dan mendukung
berbagai jenis output, seperti format CSV. Contoh selanjutnya akan menunjukkan bagaimana
kita bisa membuang data dari tabel klasik dan pelanggan di database publikasi ke file
classics.txt dan customers.txt di folder c:/temp. Secara default, pada Server Zend user harus
root dan tidak ada kata sandi yang digunakan. Pada sistem OS X atau Linux, kita harus
mengubah jalur tujuan ke folder yang ada.
Contoh Membuang data ke file format CSV
mysqldump -u user -ppassword --no-create-info --tab=c:/temp
--fields-terminated-by=',' publications
Perintah ini cukup panjang dan ditampilkan di sini terbungkus beberapa baris, tetapi
kita harus mengetik semuanya sebagai satu baris. Hasilnya adalah sebagai berikut:
Agus Widodo (Joseph Teguh )','Belajar PHP dari dasar','Ilmiah','2020','9781598184891
34
Manajemen Database MySQL
Agus Widodo','Membangun PODCAST', Ilmiah','2021','9780582506206
Mars Caroline W','Desain Seni Rupa Realis dan Tata Warna','Ilmiah','2022','9780517123201
Sarwo Nugroho','Potret Diri Sebagai Komunikasi Visual Simbolik','Classic
Ilmiah','2022','9780099533474
Edy Jogatama P','Desain Seni Rupa Klasik','Play','2022','9780192814968
Mars Caroline','9780582506206
Sarwo Nugroho','9780517123201
Merencanakan Cadangan Anda
Aturan emas untuk membuat cadangan adalah melakukannya sesering mungkin hingga kita
merasa semuanya menjadi praktis. Semakin berharga nilai dari data Anda, Anda harus
semakin sering mencadangkannya, dan semakin banyak salinan yang harus kita buat. Jika
database kita diperbarui sekali sehari, maka harus mencadangkannya setiap hari. Sebaliknya,
jika tidak terlalu sering diperbarui, kita mungkin bisa bertahan dengan pencadangan diwaktu
tertentu saja.
2.5 UPGRADE MySQL
Versi baru MySQL dirilis secara berkala, dan kita dapat memutakhirkan dari satu versi
MySQL ke versi yang lebih baru. Kita dapat menemukan informasi upgrade di manual MySQL
di http://dev.mysql.com/doc/refman/5.5/en/upgrading.html. Namun, ada pertimbangan
khusus saat kita melakukan upgrade. Sebagai tindakan pencegahan, buat cadangan database
kita saat ini, termasuk tabel GRANT di database mysql, sebelum memutakhirkan. MySQL
menyarankan kita untuk tidak melewatkan versi. Jika kita ingin mengupgrade dari satu versi
ke versi lebih dari satu versi yang lebih baru, seperti dari MySQL 4.0 ke MySQL 5.0, kita harus
mengupgrade ke versi berikutnya terlebih dahulu. sesudah versi tersebut berfungsi dengan
benar, kita dapat meningkatkan ke versi berikutnya, dan seterusnya. Dengan kata lain,
tingkatkan dari 4.0 ke 4.1, lalu dari 4.1 ke 5.0.
Kadang-kadang, perubahan yang tidak kompatibel diperkenalkan di versi baru MySQL.
Beberapa rilis memperkenalkan perubahan pada struktur tabel GRANT. Misalnya, MySQL 4.1
mengubah metode enkripsi kata sandi, memerlukan field kata sandi yang lebih panjang di
tabel GRANT. sesudah memutakhirkan ke versi yang lebih baru, kita harus menjalankan skrip
mysql_upgrade. Ini memperbaiki file kita dan memutakhirkan tabel sistem, jika diperlukan.
Dalam versi sebelum MySQL versi 5.0.19, skrip mysql_upgrade tidak berjalan di Windows; itu
hanya berjalan di Unix. Di Windows, kita dapat menjalankan skrip yang disebut
mysql_fix_privileges_tables dengan versi MySQ L sebelum 5.0.19. Skrip memutakhirkan tabel
sistem tetapi tidak melakukan pemeriksaan dan perbaikan tabel lengkap yang dilakukan
mysql_upgrade.
35
Manajemen Database MySQL
BAB 3
MENDESAIN DAN MEMBANGUN DATABASE
Langkah pertama dalam membuat database adalah mendesainnya. Kita mendesain
database sebelum kita mulai mengetekkan jari ke keyboard untuk membuat database.
Perencanaan mungkin merupakan langkah yang paling penting. Dalam bab ini kita
memberikan beberapa tip untuk merancang database yang akan bekerja baik. sesudah
menyelesaikan desain database, selanjutnya kita siap untuk membangun database itu, dan
kita akan memberi tahu kita cara melakukannya juga, nanti di bab ini. Kita membuat database
dan tabelnya sesuai dengan desain yang kita kembangkan. Saat dibangun, kita memiliki
database kosong yang berguna, menunggu kita untuk mengisinya dengan data.
3.1 DESAIN DATABASE
Sangat penting bagi kita untuk mendesain database dengan benar sebelum kita mulai
membuatnya. Sebagai contoh saja, dalam database toko buku online ada beberapa
pertanyaan seperti:
• Berapa banyak penulis, buku, dan pelanggan dalam database?
• Penulis mana yang menulis buku tertentu?
• Buku apa yang ditulis oleh penulis tertentu?
• Buku apa yang paling mahal?
• Buku apa yang paling laris?
• Buku apa yang belum terjual tahun ini?
• Buku apa yang dibeli pelanggan tertentu?
• Buku apa yang bisa dibeli berbagai kalangan usia?
Sebebenarnya ada lebih banyak kueri yang dapat kita buat pada database semacam itu, tetapi
sampel kecil ini akan mulai memberi kita wawasan tentang cara menata layout tabel kita.
Misalnya, buku dan ISBN mungkin dapat digabungkan menjadi satu tabel, karena keduanya
terkait erat (kita akan memeriksa beberapa seluk -beluknya nanti). Sebaliknya, buku dan
pelanggan harus berada di kolom terpisah, karena koneksi mereka sangat longgar. Seorang
pelanggan dapat membeli buku apapun. saat kita berencana untuk melakukan banyak
pencarian pada sesuatu, akan selalu menguntungkan jika memiliki kolom sendiri.
Merancang database
Merancang database termasuk mengidentifikasi data yang kita butuhkan dan
mengatur data dengan cara yang dibutuhkan perangkat lunak database. Saat kita
merencanakan desain database, kita juga harus memutuskan kunci utama untuk setiap tabel
dan bagaimana tabel berhubungan satu sama lain. Kita juga harus mempertimbangkan jenis
data apa yang akan kita simpan di database Anda.
Memilih data
Untuk mendesain database, pertama-tama kita harus mengidentifikasi informasi apa
yang ada di dalamnya. Database harus berisi data yang diperlukan agar situs web dapat
menjalankan tujuannya.
Berikut adalah beberapa contoh:
• Katalog online memerlukan database yang berisi informasi produk.
• Aplikasi pemesanan online memerlukan database yang dapat menampung informasi
pelanggan dan informasi pemesanan.
36
Manajemen Database MySQL
• Situs web perjalanan memerlukan database dengan informasi tentang tujuan,
reservasi, tarif, jadwal, dan sebagainya.
Dalam banyak kasus, aplikasi kita mungkin menyertakan tugas yang mengumpulkan informasi
dari pengguna. Misalnya, pelanggan yang membeli produk dari situs web harus memberikan
alamat, nomor telepon, informasi kartu kredit, dan data lainnya untuk menyelesaikan
pesanan. Informasi harus disimpan setidaknya sampai pesanan dipenuhi. Seringkali, situs web
menyimpan informasi pelanggan untuk memfasilitasi pesanan di masa mendatang sehingga
pelanggan tidak perlu mengetik ulang informasi saat melakukan pemesanan berikutnya.
Informasi tersebut juga memberikan peluang pemasaran kepada bisnis yang mengoperasikan
situs web, seperti mengirimkan penawaran pemasaran atau buletin kepada pelanggan.
Database pelanggan mungkin mengumpulkan informasi pelanggan berikut:
• Nama
• Alamat
• Nomor telepon
• Nomor faks
• Alamat email
Anda harus menyeimbangkan keinginan kita untuk mengumpulkan semua informasi yang
berpotensi berguna yang dapat kita pikirkan dengan keengganan user kita untuk memberikan
informasi pribadi — serta menghindari formulir yang terlihat terlalu memakan waktu. Salah
satu kompromi adalah meminta beberapa informasi opsional. User yang tidak keberatan
dapat memasukkan informasi tersebut, tetapi user yang keberatan dapat mengosongkan
bagian formulir tersebut. Kita juga dapat menawarkan insentif: Semakin panjang formulir,
semakin kuat insentif yang kita butuhkan untuk memotivasi user mengisi formulir.
Misalnya, Seorang user mungkin bersedia mengisi formulir singkat untuk mengikuti
undian yang menawarkan dua tiket film pratinjau sebagai hadiah, tetapi jika formulirnya
panjang dan rumit, hadiahnya harus lebih bernilai, seperti kesempatan untuk memenangkan
perjalanan ke Hollywood.
Luangkan waktu untuk mengembangkan daftar lengkap informasi yang kita butuhkan
untuk disimpan dalam database Anda. Meskipun kita bisa mengubah dan menambahkan
informasi ke database kita sesudah kita mengembangkannya, termasuk informasi dari awal
lebih mudah, dan kita mungkin bisa menghindari pekerjaan ekstra untuk mengubah database
nanti. Juga, jika kita menambahkan informasi ke database nanti — sesudah database itu
digunakan — user pertama dalam database memiliki informasi yang tidak lengkap. Misalnya,
jika kita mengubah formulir sehingga sekarang menanyakan usia pengguna, kita tidak memiliki
usia untuk orang yang sudah mengisi formulir dan sudah ada di database.
Mengorganisir data
MySQL adalah Relational Database Management System (RDBMS), yang artinya data
diorganisasikan ke dalam tabel-tabel. Tabel RDBMS diatur seperti tabel lain yang biasa kita
gunakan — dalam baris dan kolom, seperti yang ditunjukkan pada tabel berikut.
Column 1 Column 2 Column 3 Column 4
Row 1
Row 2
Row 3
Row 4
37
Manajemen Database MySQL
Sel individu di mana baris dan kolom tertentu berpotongan disebut field. Fokus setiap
tabel adalah objek (sesuatu) yang ingin kita simpan informasinya. Berikut adalah beberapa
contoh objek:
• Pelanggan
• Produk
• Perusahaan
• Hewan
• Kota
• Kamar
• Buku
• Komputer
• Bentuk
• Dokumen
• Proyek
• Minggu
Anda membuat tabel untuk setiap objek. Nama tabel harus secara jelas mengidentifikasi objek
yang dikandungnya dengan kata atau istilah deskriptif, berdasarkan panduan berikut:
• Nama harus berupa string karakter, berisi huruf, angka, garis bawah, atau tanda dolar,
tetapi tanpa spasi.
• Merupakan kebiasaan untuk menamai tabel dalam bentuk tunggal. Jadi, nama untuk
tabel pelanggan mungkin adalah Pelanggan, dan tabel yang berisi pesanan pelanggan
dapat diberi nama PesananPelanggan
• Perbedaan antara huruf besar dan huruf kecil signifikan pada Linux dan Unix, tetapi
tidak pada Windows. CustomerOrder dan Customerorder sama untuk Windows —
tetapi tidak u