Panduan MySQL
1.
Berkenalan dengan MySQL
Latar Belakang
MySQL adalah server database terkenal yang digunakan oleh berbagai aplikasi.
SQL adalah singkatan dari (S)tructured (Q)uery (L)anguage, yang
digunakan oleh MySQL untuk berkomunikasi dengan program lain. Selain itu, MySQL
memiliki fungsi SQL miliknya sendiri yang telah diperluas untuk menyediakan
fungsionalitas tambahan bagi penggunanya. Pada dokumen ini, kita akan
mempelajari cara melakukan instalasi dasar MySQL, menyiapkan database dan
tabel, serta menciptakan akun pengguna. Mari kita mulai dengan instalasi.
Instalasi MySQL
Pertama kita akan menginstal MySQL. Jika anda memerlukan fungsionalitas
tertentu dari MySQL, jangan lupa aktifkan flag USE yang sesuai.
Daftar Kode 1.1: Instalasi MySQL |
# emerge --pretend --verbose mysql
# emerge mysql
|
Ketika instalasi hampir selesai, anda akan mendapatkan pesan berikut:
Daftar Kode 1.2: Pesan einfo MySQL |
You might want to run:
"emerge --config =dev-db/mysql-[version]"
if this is a new install.
|
Karena ini adalah instalasi baru, kita harus menjalankan perintah tersebut.
Tekan ENTER ketika diminta selama konfigurasi database MySQL.
Konfigurasi ini akan mengatur database utama MySQL yang berisi informasi
administratif seperti database, tabel, pengguna, perizinan, dll. Konfigurasi
ini menganjurkan anda untuk mengganti password root. Kita akan melakukannya,
jika tidak, seseorang dapat menjebol pengaturan default MySQL kita.
Daftar Kode 1.3: Konfigurasi MySQL |
# emerge --config =dev-db/mysql-[versi]
* MySQL DATADIR is /var/lib/mysql
* Press ENTER to create the mysql database and set proper
* permissions on it, or Control-C to abort now...
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, issue the following commands to start the server
and change the applicable passwords:
/etc/init.d/mysql start
/usr/bin/mysqladmin -u root -h pegasos password 'new-password'
/usr/bin/mysqladmin -u root password 'new-password'
Depending on your configuration, a -p option may be needed
in the last command. See the manual for more details.
* For security reasons you should set your MySQL root
* password as soon as possible.
|
Penting:
Sejak mysql-4.0.24-r2, password harus ditentukan pada tahap konfigurasi agar
password root lebih aman.
|
Skrip konfigurasi telah menampilkan perintah yang harus kita jalankan untuk
mengatur password, dan kita harus menjalankannya sekarang.
Daftar Kode 1.4: Mengatur password root MySQL |
# /etc/init.d/mysql start
* Re-caching dependency info (mtimes differ)...
* Starting mysqld (/etc/mysql/my.cnf) ... [ ok ]
# /usr/bin/mysqladmin -u root -h localhost password 'password-baru'
|
Sekarang anda dapat menguji password baru anda dengan mencoba login ke server
MySQL:
Daftar Kode 1.5: Login ke server MySQL dengan mysql |
$ mysql -u root -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.25
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
|
opsi -u menetapkan pengguna yang kita pakai untuk login. Opsi -h
menetapkan host. Ini biasanya localhost, kecuali anda sedang mengatur
server jauh. Terakhir, opsi -p memberitahukan MySQL bahwa anda akan
memasukkan password untuk mengakses database. Perhatikan prompt
mysql>. Di sinilah tempat anda memasukkan semua perintah. Setelah
kita mendapatkan prompt mysql sebagai root, kita dapat mulai mengatur database.
2.
Mengatur Database
Menciptakan Database
Kita sudah login dan prompt mysql telah ditampilkan. Pertama mari kita lihat
database yang sudah kita miliki saat ini. Untuk melakukannya, gunakan perintah
SHOW DATABASES.
Daftar Kode 2.1: Menampilkan database MySQL |
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.09 sec)
|
Penting:
Perlu diingat bahwa perintah-perintah MySQL harus diakhiri dengan titik koma
(;)
|
Walaupun database percobaan telah diciptakan, kita akan menciptakan database
kita sendiri. Perintah untuk menciptakan database adalah CREATE
DATABASE. Kita akan menciptakan database baru bernama "gentoo".
Daftar Kode 2.2: Menciptakan database gentoo |
mysql> CREATE DATABASE gentoo;
Query OK, 1 row affected (0.08 sec)
|
Respon akan memberitahukan anda bahwa perintah telah dijalankan tanpa hambatan.
Pada contoh ini, 1 baris telah dirubah. Ini adalah referensi ke database utama
mysql, yang berisi daftar seluruh database. Anda tidak perlu khawatir tentang
rincian detilnya. Angka menunjukkan secepat apa perintah dijalankan. Kita dapat
memeriksa database yang baru kita ciptakan dengan menjalanakan lagi perintah
SHOW DATABASES.
Daftar Kode 2.3: Memeriksa database |
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| gentoo |
| mysql |
| test |
+----------+
3 rows in set (0.00 sec)
|
Database kita ternyata telah diciptakan. Untuk membuat tabel baru bagi database
gentoo, kita harus menetapkannya sebagai database kita saat ini. Untuk
melakukannya, gunakan perintah USE. Perintah USE menetapkan nama
database yang ingin anda gunakan sebagai database saat ini. Pilihan lainnya
adalah menentukan database yang ingin kita gunakan dengan opsi -D. Mari
kita berpindah ke database gentoo.
Daftar Kode 2.4: Berpindah ke database baru |
mysql> USE gentoo;
Database changed
|
Database kita saat ini adalah database gentoo yang baru saja kita ciptakan.
Sekarang, kita dapat mulai membuat tabel dan mencantumkan informasi di
dalamnya.
3.
Bekerja dengan Tabel di MySQL
Menciptakan Tabel
Pada struktur MySQL, terdapat database, tabel, catatan, dan kolom. Database
berisi tabel, tabel berisi catatan, dan catatan berisi kolom, yang berisi
informasi yang sebenarnya. Dengan struktur ini, pengguna dapat memilih cara
yang ia inginkan untuk mengakses informasi. Sejauh ini kita sudah mencoba
membuat database, jadi sekarang mari kita coba membuat tabel. Pertama, tabel
dapat ditampilkan dengan perintah SHOW TABLES. Sekarang kita belum
memiliki tabel di dalam database gentoo, seperti ditunjukkan oleh hasil
perintah di bawah ini:
Daftar Kode 3.1: Database gentoo |
mysql> SHOW TABLES;
Empty set (0.00 sec)
|
Ini artinya kita harus membuat tabel. Untuk melakukannya, kita gunakan perintah
CREATE TABLE. Bagaimanapun juga, perintah ini sangat berbeda dengan
perintah CREATE DATABASE. Perintah ini menerima beberapa argumen.
Formatnya adalah sebagai berikut:
Daftar Kode 3.2: Sintaks CREATE TABLE |
CREATE TABLE [nama_tabel] ([nama_kolom] [tipe_data_kolom]([ukuran]));
|
nama_tabel adalah nama tabel yang akan kita ciptakan. Pada contoh ini,
mari kita ciptakan tabel dengan nama developers. Tabel ini akan diisi
dengan nama-nama para pengembang, beserta alamat e-mail dan pekerjaannya
masing-masing. nama_kolom akan diisi dengan nama kolom. Kita memerlukan
tiga nama pada contoh ini: nama, e-mail, dan pekerjaan. tipe_data_kolom
adalah tipe informasi yang akan disimpan. Tersedia beberapa format yang bisa
anda ketahui dari Halaman Tipe Kolom
MySQL. Untuk contoh ini, kita akan menggunakan tipe data VARCHAR
untuk semua kolom. VARCHAR adalah salah satu tipe data yang paling
sederhana untuk informasi dalam bentuk kalimat biasa. ukuran adalah
jumlah banyaknya data yang boleh disimpan oleh sebuah kolom. Pada contoh ini,
kita akan menggunakan 128. Artinya, kolom tersebut akan berisi data
VARCHAR yang berukuran 128 byte. Untuk sementara anda boleh menganggap
ukuran ini sama dengan 128 karakter, tetapi ada penjelasan yang lebih teknikal
yang bisa anda ketahui dari website di atas. Sekarang kita ciptakan tabel baru
kita.
Daftar Kode 3.3: Menciptakan tabel |
mysql> CREATE TABLE developers ( nama VARCHAR(128), email VARCHAR(128), pekerjaan VARCHAR(128));
Query OK, 0 rows affected (0.11 sec)
|
Sepertinya tabel kita telah diciptakan tanpa hambatan. Mari kita periksa dengan
perintah SHOW TABLES:
Daftar Kode 3.4: Memeriksa tabel |
mysql> SHOW TABLES;
+------------------+
| Tables_in_gentoo |
+------------------+
| developers |
+------------------+
1 row in set (0.00 sec)
|
Ya, itu dia tabel baru kita. Bagaimanapun juga, tabel tersebut kelihatannya
belum berisi informasi apapun. Untuk melihat isinya, kita gunakan perintah
DESCRIBE (atau bisa disingkat dengan DESC), yang menerima nama
tabel sebagai argumennya. Mari kita coba.
Daftar Kode 3.5: Describing our developers table |
mysql> DESCRIBE developers;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name | varchar(128) | YES | | NULL | |
| email | varchar(128) | YES | | NULL | |
| job | varchar(128) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
|
Perintah tadi menampilkan semua kolom berikut tipenya masing-masing, juga
beberapa atribut yang tidak dijelaskan pada panduan ini. Bacalah Manual Referensi MySQL untuk
mengetahuinya. Sekarang mari kita isi tabel kita.
Mengisi Database MySQL
Perintah untuk mengisi tabel (atau menambahkan data) adalah INSERT.
Seperti halnya perintah CREATE TABLE, perintah ini juga memiliki format
khusus:
Daftar Kode 3.6: Sintaks INSERT |
INSERT INTO tabel (col1, col2, ...) VALUES('value1', 'value2', ...);
|
Perintah ini digunakan untuk menambahkan catatan di dalam tabel. tabel
adalah nama tabel yang ingin kita isi dengan informasi. Nama tabel boleh
diikuti dengan daftar kolom yang ingin anda isikan informasi dan
VALUES() berisi informasi yang ingin anda tambahkan. Anda boleh saja
tidak mencantumkan daftar kolom jika anda menambahkan informasi untuk setiap
kolom dan jika anda menuliskan informasi tersebut dengan urutan yang sama
seperti anda mendefinisikan kolom. Pada contoh ini, kita akan menambahkan data
ke tabel developers.
Daftar Kode 3.7: Menambahkan informasi ke dalam tabel developers |
mysql> INSERT INTO developers VALUES('Joe Smith', 'joesmith@gentoo.org', 'toolchain');
Query OK, 1 row affected (0.06 sec)
mysql> INSERT INTO developers (job, name) VALUES('outsourced', 'Jane Doe');
Query OK, 1 row affected (0.01 sec)
|
Menurut hasil yang ditampilkan, kelihatannya informasi telah ditambahkan dengan
benar. Bagaimana jika kita ingin menambahkan lebih dari satu informasi? Di
sinilah kita perlu menggunakan perintah LOAD DATA. Perintah ini akan
memuat data dari file yang dipisahkan dengan tab. Mari kita coba dengan
mengedit sebuah file di direktori home. Kita namakan file ini
records.txt. Berikut adalah contohnya:
Daftar Kode 3.8: ~/records.txt |
John Doe johndoe@gentoo.org portage
Chris White chriswhite@gentoo.org documentation
Sam Smith samsmith@gentoo.org amd64
|
Penting:
Pastikan anda memahami data yang ingin anda tambahkan. Akan sangat tidak aman
jika anda menggunakan LOAD DATA jika anda tidak memahami isi file!
|
Perintah LOAD DATA akan cukup panjang jika harus dijelaskan, lebih baik
kita gunakan bentuk yang paling sederhana di sini.
Daftar Kode 3.9: Sintaks LOAD DATA |
LOAD DATA LOCAL INFILE '/path/ke/namafile' INTO TABLE tabel;
|
/path/ke/namafile adalah direktori dan nama file yang akan kita
gunakan. tabel adalah nama tabel yang ingin kita edit. Pada contoh ini,
kita menggunakan file ~/records.txt dan tabel developers.
Daftar Kode 3.10: Mengisi data |
mysql> LOAD DATA LOCAL INFILE '~/records.txt' INTO TABLE developers;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
|
Penting:
Jika anda mendapatkan masalah, pastikan kolom-kolom anda dipisahkan dengan tab.
Jika anda menyalin informasi ke file input dari sumber lain, mungkin tab telah
dirubah ke spasi.
|
Berhasil. Namun, ini baru mengisi data, dan anda belum mendapatkan kendali
terhadap MySQL. Banyak aplikasi web yang menggunakan skrip SQL untuk mengatur
MySQL dengan cepat dan mudah. Jika anda ingin menggunakan skrip SQL, anda harus
menjalankan MySQL dalam modus batch, atau source skrip tersebut.
Berikut ini contoh cara melakukannya:
Daftar Kode 3.11: MySQL dalam modus batch |
$ mysql -u root -h localhost -p < filesql
|
Seperti LOAD DATA, pastikan anda mengerti apa yang akan dilakukan oleh
filesql. Jika tidak, database anda akan mudah dijebol! Cara
lainnya adalah dengan menjalankan perintah mysql dari file sql ketika berada di
modus interaktif. Berikut cara melakukannya:
Daftar Kode 3.12: Men-source file sql |
mysql> source filesql;
|
Jika anda mendapatkan aplikasi web yang meminta anda untuk menjalankan file
sql, dua perintah di atas dapat anda gunakan untuk melakukannya. Tabel kita
sudah siap, jadi bagaimana cara memeriksa kolom? Kita lakukan ini dengan
melakukan pencarian pada tabel.
Menjelajahi Tabel MySQL dengan Query
Query adalah salah satu fitur utama database SQL. Dengannya anda akan
dibantu untuk menjadikan tabel anda bermanfaat. Kebanyakan query dilakukan
dengan perintah SELECT. Perintah ini cukup rumit, dan kita hanya akan
mempelajari tiga bentuk utamanya.
Daftar Kode 3.13: Bentuk-bentuk SELECT |
SELECT * FROM tabel;
SELECT * FROM tabel WHERE field=value;
SELECT field1,field2,field3 FROM tabel [WHERE field=value];
|
Mari kita lihat bentuk pertama. Bentuk ini cukup sederhana dan akan menampilkan
tabel anda secara menyeluruh.
Daftar Kode 3.14: Isi tabel |
mysql> SELECT * FROM developers;
+-------------+-----------------------+----------------+
| name | email | job |
+-------------+-----------------------+----------------+
| Joe Smith | joesmith@gentoo.org | toolchain |
| John Doe | johndoe@gentoo.org | portage |
| Chris White | chriswhite@gentoo.org | documentation |
| Sam Smith | samsmith@gentoo.org | amd64 |
| Jane Doe | NULL | Outsourced job |
+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)
|
Kita lihat bahwa kedua data yang kita masukkan dengan INSERT dan
LOAD DATA sudah ada. Sekarang, katakanlah kita hanya ingin melihat
catatan tentang Chris White. Kita dapat melakukannya dengan bentuk kedua dari
SELECT seperti berikut ini.
Daftar Kode 3.15: Memilih catatan tertentu dengan SELECT |
mysql> SELECT * FROM developers WHERE name = 'Chris White';
+-------------+-----------------------+---------------+
| name | email | job |
+-------------+-----------------------+---------------+
| Chris White | chriswhite@gentoo.org | documentation |
+-------------+-----------------------+---------------+
1 row in set (0.08 sec)
|
Seperti yang kita harapkan, entri yang kita cari dipilih. Sekarang, katakanlah
kita hanya ingin mengetahui pekerjaan dan alamat email-nya, bukan namanya. Kita
dapat melakukannya dengan bentuk ketiga dari SELECT seperti berikut.
Daftar Kode 3.16: Memilih kolom tertentu dengan SELECT |
mysql> SELECT email,job FROM developers WHERE name = 'Chris White';
+-----------------------+---------------+
| email | job |
+-----------------------+---------------+
| chriswhite@gentoo.org | documentation |
+-----------------------+---------------+
1 row in set (0.04 sec)
|
Metode pemilihan ini jauh lebih mudah diatur, terutama jika informasinya banyak
sekali, seperti yang akan kita lihat nanti. Untuk saat ini, sebagai root mysql,
kita mendapatkan hak penuh untuk melakukan apapun yang kita inginkan dengan
database MySQL. Pada sebuah lingkungan server, seorang pengguna yang
mendapatkan hak seperti ini bisa mendatangkan masalah. Untuk mengendalikan
siapa saja yang boleh melakukan apa saja dengan database, kita harus mengatur
perizinan.
4.
Perizinan MySQL
Memberikan Izin dengan GRANT
Perizinan adalah cara akses yang dimiliki oleh seorang pengguna terhadap
database, tabel, atau apapun juga. Sekarang di database gentoo, hanya akun root
MySQL yang dapat mengaksesnya, disebabkan oleh perizinan yang kita tetapkan
pada database tersebut. Sekarang, mari kita ciptakan dua akun pengguna biasa,
"guest" dan "admin", yang akan diizinkan untuk mengakses database gentoo dan
mengubah informasi di dalamnya. Akun guest akan mendapatkan hak terbatas,
sedangkan admin akan mendapatkan hak yang sama dengan root, tetapi hanya untuk
database gentoo (bukan untuk seluruh database utama MySQL). Sebelum kita
memulai, mari kita lihat dahulu format sederhana dari perintah GRANT.
Daftar Kode 4.1: Sintaks GRANT |
GRANT [privileges] ON database.* TO '[user]'@'[host]' IDENTIFIED BY '[password]';
|
Catatan:
GRANT dianggap sebagai cara untuk menciptakan akun pengguna. Namun
versi-versi baru MySQL berisi fungsi CREATE_USER, walaupun GRANT
masih lebih disukai.
|
Yang pertama adalah hak yang akan kita tetapkan. Dengan apa yang telah kita
pelajari sejauh ini, berikut adalah beberapa hak yang dapat anda tetapkan:
-
ALL - Memberikan kendali penuh terhadap database
-
CREATE - Mengizinkan pengguna untuk membuat tabel
-
SELECT - Mengizinkan pengguna untuk melihat tabel
-
INSERT - Mengizinkan pengguna untuk menambahkan data pada tabel
-
SHOW DATABASES - Mengizinkan pengguna untuk melihat daftar database
-
USAGE - Tidak memberikan hak apa-apa
-
GRANT OPTION - Mengizinkan pengguna untuk memberi izin
Catatan:
Jika anda menggunakan MySQL untuk menghubungkan data dengan aplikasi web, anda
hanya membutuhkan CREATE, SELECT, INSERT (dijelaskan di
sini), DELETE dan UPDATE (untuk penjelasan lebih lengkap, bacalah
seksi MySQL Reference
Manual - GRANT and REVOKE Syntax). Banyak pengguna yang melakukan
kesalahan dengan memberikan hak penuh ketika tidak benar-benar diperlukan. Anda
sebaiknya berkonsultasi dengan pengembang aplikasi untuk memastikan apakah hak
penuh harus diberikan.
|
Untuk "admin", kita akan memberikan ALL. Untuk "user", SELECT sudah
cukup untuk mendapatkan hak akses read-only. "database" adalah database
yang akan kita izinkan penggunaannya. Pada contoh ini, database yang kita
gunakan adalah gentoo. .* berarti semua database. Jika ingin, anda dapat
menetapkan akses per tabel. "user" adalah nama pengguna dan host adalah nama
host yang akan digunakan oleh pengguna untuk mengakses. Pada kebanyakan kasus,
host dapat diisi dengan localhost. Terakhir, password adalah password pengguna.
Dengan semua informasi tersebut, mari kita ciptakan akun pengguna.
Daftar Kode 4.2: Menciptakan akun admin dan guest |
mysql> GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT SELECT ON gentoo.* TO 'guest'@'localhost' IDENTIFIED BY 'password';
|
Selanjutnya, mari kita uji. Pertama kita keluar dari mysql dengan mengetikkan
quit di prompt:
Daftar Kode 4.3: Keluar dari MySQL |
mysql> quit
|
Sekarang kita sudah berada di konsol. Langkah selanjutnya adalah melihat apa
saja yang dapat dilakukan oleh akun pengguna yang baru kita ciptakan.
Menguji Perizinan Pengguna
Sekarang kita akan mencoba login sebagai "guest". Saat ini ia hanya memiliki
hak SELECT. Pada dasarnya ini berarti, ia hanya dapat melakukan
pencarian saja.
Daftar Kode 4.4: Login dengan akun guest |
$ mysql -u guest -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 4.0.25
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
|
Sekarang kita coba keterbatasannya. Mari kita berpindah ke database gentoo:
Daftar Kode 4.5: Berpindah ke database gentoo |
mysql> USE gentoo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
|
Sekarang kita akan mencoba untuk melakukan sesuatu yang seharusnya tidak boleh
kita lakukan. Kita akan mencoba untuk membuat sebuah tabel.
Daftar Kode 4.6: Mencoba membuat tabel dengan akun guest |
mysql> CREATE TABLE test (test VARCHAR(20), foobar VARCHAR(2));
ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'
|
Seperti yang dapat anda lihat, percobaan kita gagal, karena akun yang kita
gunakan tidak memiliki hak untuk melakukannya. Walaupun begitu, satu akses yang
kita miliki adalah statemen SELECT. Mari kita coba:
Daftar Kode 4.7: Mencoba menggunakan SELECT |
mysql> SELECT * FROM developers;
+-------------+-----------------------+----------------+
| name | email | job |
+-------------+-----------------------+----------------+
| Joe Smith | joesmith@gentoo.org | toolchain |
| John Doe | johndoe@gentoo.org | portage |
| Chris White | chriswhite@gentoo.org | documentation |
| Sam Smith | samsmith@gentoo.org | amd64 |
| Jane Doe | NULL | Outsourced job |
+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)
|
Percobaan kita sukses, dan kita sudah mengetahui kegunaan dari perizinan. Kita
juga telah membuat akun "admin". Akun kita buat untuk melihat bahwa pengguna
yang telah diberikan semua akses pun masih memiliki keterbatasan. Keluarlah
dari MySQL dan login sebagai "admin".
Daftar Kode 4.8: Login sebagai admin |
mysql> quit
Bye
$ mysql -u admin -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.0.25
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
|
Untuk memulai, kita akan mencoba untuk menciptakan database baru dengan
menggunakan akun admin. Akun ini akan mendapatkan akses yang hampir sama dengan
akses yang dimiliki oleh akun root MySQL, dan dapat melakukan semua bentuk
perubahan terhadap database gentoo. Kita akan mencoba akses admin terhadap
database MySQL. Ingat bahwa kita hanya memberikan hak penuh bagi akun ini untuk
database tertentu.
Daftar Kode 4.9: Mencoba menciptakan database baru |
mysql> CREATE DATABASE gentoo2;
ERROR 1044: Access denied for user: 'admin@localhost' to database 'gentoo2'
|
Tentu saja, akun admin tidak dapat menciptakan database baru di dalam database
utama MySQL, walaupun ia memiliki hak penuh atas database gentoo. Walaupun
begitu, kita masih dapat menggunakan akun ini untuk melakukan modifikasi pada
database gentoo, seperti yang ditunjukkan oleh contoh berikut ini.
Daftar Kode 4.10: Hak admin atas database gentoo |
mysql> USE gentoo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> INSERT INTO developers VALUES('Bob Simmons', 'bobsimmons@gentoo.org', 'python');
Query OK, 1 row affected (0.08 sec)
|
Akun admin memiliki akses tak terbatas pada database gentoo. Tetapi terkadang
kita ingin mencabut kembali hak akses yang telah kita berikan kepada seorang
pengguna. Ini bisa disebabkan oleh pengguna atau karyawan yang nakal. Mari kita
lihat cara melakukannya dengan perintah REVOKE.
Mencabut hak akses dengan perintah REVOKE
Dengan perintah REVOKE kita dapat mencabut hak yang telah kita berikan
kepada seorang pengguna. Kita dapat mencabut seluruh hak akses atau hanya hak
akses tertentu saja. Malahan, format perintah ini sangat mirip dengan format
perintah GRANT.
Daftar Kode 4.11: Sintaks REVOKE |
REVOKE [privileges] ON database.* FROM '[user]'@'[host]';
|
Opsi-opsi yang digunakan di sini telah dijelaskan di bagian perintah
GRANT. Namun pada bagian ini, kita akan mencabut seluruh hak akses dari
seorang pengguna. Katakanlah kita menemukan bahwa akun guest telah menyebabkan
masalah keamanan sehingga kita memutuskan untuk mencabut seluruh haknya.
Kita harus login sebagai root untuk melakukannya.
Daftar Kode 4.12: Mencabut hak pengguna |
mysql> REVOKE ALL ON gentoo.* FROM 'guest'@'localhost';
Query OK, 0 rows affected (0.00 sec)
|
Catatan:
Pada contoh ini, hak akses yang dimiliki sangat sederhana, sehingga pencabutan
hak per database tidak menjadi masalah. Namun begitu, pada kasus yang lebih
rumit, anda mungkin lebih baik menggunakan *.* daripada gentoo.*
untuk mencabut hak akses pengguna dari semua database.
|
Sekarang kita keluar dari MySQL untuk mencoba login kembali dengan akun guest.
Daftar Kode 4.13: Mencoba login dengan akun guest |
$ mysql -u guest -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 4.0.25
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
|
Walaupun kita berhasil login, semua akses atas database telah dicabut.
Daftar Kode 4.14: Hak akses akun guest yang telah dicabut |
mysql> USE gentoo;
ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'
|
Akhirnya pengguna bermasalah kita sudah tidak lagi dapat mengakses database
gentoo. Perlu dicatat bahwa pengguna ini masih bisa login, karena belum kita
hapus dari database utama MySQL. Sekarang kita lihat cara menghapus akun dan
tabel pengguna dengan perintah DELETE.
Menghapus akun dengan DELETE
Tabel user MySQL adalah daftar yang berisi semua pengguna dan informasinya.
Pastikan anda sudah login root, kemudian gunakan database utama MySQL.
Daftar Kode 4.15: Menggunakan database utama mysql |
mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
|
Mari kita lihat tabel yang dimiliki oleh database mysql:
Daftar Kode 4.16: Daftar tabel database mysql |
mysql> SHOW TABLES;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
6 rows in set (0.00 sec)
|
Tabel "user" adalah tabel yang kita tuju. Namun begitu, tabel ini berisi 30
kolom yang menyulitkan kita ketika membacanya. Untuk mempermudah, kita akan
menggunakan versi ketiga dari statemen SELECT. Kolom yang kita tuju
adalah "Host" dan "User".
Daftar Kode 4.17: Mencari akun guest di tabel user |
mysql> SELECT Host,User FROM user WHERE User = 'guest';
+-----------+-------+
| Host | User |
+-----------+-------+
| localhost | guest |
+-----------+-------+
1 row in set (0.00 sec)
|
Setelah kita mendapatkan informasi yang kita perlukan, kita dapat menghapus
akun tersebut dengan perintah DELETE yang sintaksnya adalah sebagai
berikut:
Daftar Kode 4.18: Sintaks DELETE |
DELETE FROM table WHERE field='value';
|
Anda mungkin menyadari bahwa sintaks DELETE mirip dengan sintaks
SELECT. Pada contoh ini, kolomnya adalah "User" dan nilainya adalah
"guest". Kita akan menghapus catatan tentang akun guest dari tabel user.
Daftar Kode 4.19: Menghapus akun guest |
mysql> DELETE FROM user WHERE User='guest';
Query OK, 1 row affected (0.07 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
|
Kelihatannya semua berjalan dengan lancar. Mari kita uji dengan login sebagai
guest.
Daftar Kode 4.20: Mencoba login dengan akun guest |
mysql> quit
Bye
$ mysql -u guest -h localhost -p
Enter password:
ERROR 1045: Access denied for user: 'guest@localhost' (Using password: YES)
|
Akun telah dihapus dengan sukses!
Kesimpulan
Walaupun pendauan ini hanya menjelaskan cara menyiapkan MySQL dengan baris
perintah, terdapat beberapa alternatif dalam bentuk GUI yang dapat anda
gunakan:
Sampai di sini panduan pengenalan MySQL. Kami harap anda mendapatkan pemahaman
yang lebih baik tentang dasar-dasar MySQL dan dapat menyiapkan database anda.
Jika anda memiliki komentar, jangan sungkan-sungkan untuk mengirimkan email
kepada penulis di Chris White.
Isi dokumen ini dilisensikan dengan lisensi Creative Commons -
Attribution / Share Alike.
|