Gentoo Logo

Panduan MySQL

Daftar Isi:

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

(Melihat flag USE)
# emerge --pretend --verbose mysql
(Instal 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

(Gantikan [versi] dengan nomor versi yang baru saja anda instal)
# 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:
(Perhatikan baik-baik tiga baris berikut)
   /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.

(Beberapa informasi non-ebuild MySQL kami hapus agar dokumen ini lebih konsisten)

   * 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 ]
(Ganti password-baru dengan password yang anda inginkan)
# /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)
(Jika anda tidak mengetahui urutan kolom di dalam tabel atau ingin memasukkan informasi yang tidak lengkap
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

(Memilih sebuah entri di dalam tabel)
SELECT * FROM tabel;
(Memilih entri tertentu)
SELECT * FROM tabel WHERE field=value;
(Memilih kolom tertentu)
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

(admin)
mysql> GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY 'password';
(guest)
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)
(FLUSH PRIVILEGES diperlukan untuk memperbarui perizinan pengguna)
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.



Print

Diperbarui 8 Agustus 2006

Rangkuman: Dokumen ini akan membantu anda menyiapkan dan menggunakan MySQL

Chris White
Author

Shyam Mani
Editor

Xavier Neys
Editor

Dzikri Aziz
Translator

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.