Showing posts with label Mysql. Show all posts
Showing posts with label Mysql. Show all posts

Wednesday, December 9, 2009

mysql admin

1. merubah Password user Root pada MySQL
#mysqladmin -uroot -pandia password dendy

Untuk menguji perubahan yang terjadi, silahkan ketik perintah dibawah ini :

# mysql -u root -pdendy
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.1.25-rc-community MySQL Community Server (GPL)

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

mysql>

2.mengecek MySQL Server sedang aktif dan berjalan
# mysqladmin -u root -p ping
Enter password:
mysqld is alive

3.melihat versi mysqk yang digunakan
# mysqladmin -u root -pdendy version

4.status terakhir dari MySQL server
# mysqladmin -u root -pdendy status
Uptime: 11680
Threads: 1 Questions: 231977 Slow queries: 0 Opens: 17067
Flush tables: 1 Open tables: 64 Queries per second avg: 0.25

Keterangan :

* Uptime: Uptime dari mysql server dalam detik
* Threads: Total jumlah client yang terkoneksi pada server.
* Questions: Total jumlah dari querie yang dijalankan sejak startup.
* Opens: Total jumlah dari table yang dibuka oleh server.
* Flush tables: Berapa lama tables di flush.
* Open tables: Total jumlah table yang dibuka dalam database.

5.melihat semua status dari MySQL Server berdasarkan variable dan value
# mysqladmin -u root -pdendy extended-status

6.menampilkan semua sistem MySQL server variabel dan values
# mysqladmin -u root -pdendy variables

7.Menggabungkan multiple perintah pada mysqladmin
# mysqladmin -u root -pdendy status version

8.poneknyo lai...^^ samangaik!!
mato kantuak.paruik litak.hari ujan..salimuik jo kasua nan kalamak ko.

shutdown,restart/reload dan start mysql server

untuk shutdown,restart/reload dan start mysql server ada commandnya..
tadi ku baru shutdown server mysql.lahhh,kubingung mo nyalain nya lagi.
setelah nanya ma mbah google ku menemukan cara nya untuk beberapa distro linux.

1) RedHat Linux
Start mysql server:
# /etc/init.d/mysqld start
stop mysql server:
# /etc/init.d/mysqld stop
restart mysql server
# /etc/init.d/mysqld restart


2) Fedora Core
Start mysql server:
# /etc/init.d/mysqld start
stop mysql server:
# /etc/init.d/mysqld stop
restart mysql server
# /etc/init.d/mysqld restart


3) Cent OS

Start mysql server:
# /etc/init.d/mysqld start
stop mysql server:
# /etc/init.d/mysqld stop
restart mysql server
# /etc/init.d/mysqld restart


4) Linux Debian

Start mysql server:
# /etc/init.d/mysqld start
stop mysql server:
# /etc/init.d/mysqld stop
restart mysql server
# /etc/init.d/mysqld restart

Monday, October 26, 2009

MYSQL TOOLS

Untuk memudahkan kita dalam mengelola basis data MySQL, maka kita dapat menggukan Tools atau software pihak ketiga, seperti :

1.

MySQL GUI Tools (http://dev.mysql.com/downloads/gui-tools/index.html), merupakan software buatan MySQL Corp yang ditujukan untuk melakukan administrasi database secara GUI.
2.

SQLyog (www.webyog.com), merupakan Tools yang menarik, user friendly, dan tersedia dalam 2 edisi. Ediri Enterprise dan Edisi Community.
3.

TOADFree For MySQL (http://www.quest.com/toad-for-mysql/), merupakan Tools yang power full untuk melakukan administrasi database MySQL, membutuhkan .NET Framework2 untuk instalasinya.
4.

MySQLFront (www.mysqlfront.de), merupakan aplikasi GUI yang sederhana dan mudah digunakan.
5.

EMSManager For MySQL (http://www.sqlmanager.net), Merupakan aplikasi yang handal dalam mengelola database berbasis MySQL.
6.

Navicat MySQL (www.navicat.com), merupakan Tools yang relatif baik dalam mengelola database MySQL.
7.

PHPMyAdmin (www.phpmyadmin.net), merupakan Tools berbasis web untuk mengelola database MySQL
Dan Lain Lain,,,

Smoga bermanfaat :-)

Thursday, October 22, 2009

8 Hal Yang Harus Diketahui Programer Pemula Tentang MySQL

1. 1. Tabel MySQL bukanlah array
2. 2. Bahasa SQL dan Fungsi-Fungsi MySQL
3. 3. LIMIT, LIMIT, LIMIT
4. 4. Tipe Data
5. 5. Normalisasi dan Pemodelan
6. 6. Indeks
7. 7. Konkurensi, Locking, dan Transaksi
8. 8. Jenis Tabel
9. Penutup




Time and again I am amazed at how bad the successful software packages out there are. Apache is easily outperformed by fnord, MySQL isn't even a real database, PHP is so slow that Zend actually made a business model out of selling performance enhancing hacks for it.—diary Fefe

PHP+MySQL. Siapa yang tidak tahu bahwa duo sejoli ini adalah pasangan terpopular di dunia open source, bahkan di seluruh Internet. PHP telah menggeser Perl sebagai bahasa pilihan dalam membuat aplikasi Web, terutama bagi pemula. Dan PHP hampir selalu bersanding dengan MySQL; 90–95%+ skrip PHP di www.hotscripts.com mungkin bertuliskan “membutuhkan PHP dan MySQL”. Buku-buku PHP, termasuk untuk pemula, tidak akan dipandang afdol kalau belum membahas MySQL. Dan programer PHP, lambat atau cepat, mau atau tidak mau, pasti akan harus mengakrabi software database yang satu ini.

Sayangnya, banyak programer sudah bermain-main dan memakai MySQL secara live di situs produksi, padahal masih asing sama sekali dengan konsep database relasional. Bahkan sebetulnya MySQL juga banyak memiliki kekurangan dalam hal fitur SQL. Sehingga programer PHP tidak bisa memahami dan memanfaatkan kekuatan penuh database relasional + SQL.

Buat Anda para programer pemula yang memang masih awam dengan MySQL dan konsep database pada umumnya, tidak perlu minder atau khawatir. Di dunia IT yang bergerak serba cepat ini memang ada terlalu banyak hal yang harus dipelajari. Dan kebanyakan jadinya dipelajari sambil jalan, sambil dipraktikkan. Ketika mulai membangun CMS untuk satunet.com tahun 1999 pun, saya hanya punya skill terbatas tentang SQL: hanya tahu SELECT, UPDATE, DELETE, CREATE TABLE, dan DROP TABLE. Apa itu JOIN, bagaimana mengubah skema tabel, bagaimana mendesain database yang baik dan ternormalisasi, semuanya masih blank. Dan semua harus dipelajari sambil jalan. Tapi toh akhirnya semua baik-baik saja.

Lewat artikel ini kita akan membahas hal-hal dasar apa yang perlu diketahui agar bisa memakai MySQL dengan efektif dan efisien. Mari kita mulai dengan hal nomor satu:
1. Tabel MySQL bukanlah array

Programer PHP atau Perl tentu saja familiar dengan array dan hash, yang biasanya dipakai untuk menyimpan sekumpulan data terkait. Sebagian dari mereka yang tidak familiar dengan MySQL akan cenderung menganalogikan tabel database dengan array/hash (tepatnya, array of array atau array 2 dimensi). Tabel dipandang sama seperti sebuah array, hanya saja bisa berukuran besar sekali dan persisten (disimpan di disk).

Cara pandang ini tidak sepenuhnya salah, karena toh dalam mengambil record dari tabel biasanya ditampung ke dalam variabel array/hash. Hanya saja, cara pandang ini kadang-kadang membuat programer PHP melakukan sesuatu seperti:

$res = mysql_query("SELECT * FROM t1");
$rows = array();
while ($row = mysql_fetch_row($res)) $rows[] = $row;
echo "Jumlah record di tabel t1 = ", count($rows);

atau membuat tabel seperti:

CREATE TABLE t2 (
f0 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
f1 INT UNSIGNED,
f2 VARCHAR(5),
f3 VARCHAR(200),
f4 VARCHAR(200),
f5 BLOB
);

Apa yang salah dengan kode PHP pertama di atas, yang bertujuan mencari jumlah record dalam sebuah tabel? Si programer, yang terlalu terobsesi menganggap tabel MySQL sebagai sebuah array, mencoba membangun dulu arraynya dengan mengisi satu-persatu elemen dari hasil query agar nantinya bisa menggunakan fungsi array count(). Masalahnya, bagaimana kalau jumlah record ada 100 ribu? 1 juta? 10 juta? Bukan itu saja, selesai di-count() variabel $rows langsung dibuang lagi! Padahal, ada cara yang jauh lebih efisien:

SELECT COUNT(*) FROM t1

Hasil querynya hanyalah sebuah record saja, tak peduli berapa pun ukuran tabel t1.

Lalu apa yang salah dengan kode SQL kedua? Si programer Perl, dalam hal ini, terobsesi ingin mengambil tiap record di tabel dengan fungsi DBI $sth->fetchrow_array()

@row = $sth->fetchrow_array();
print $row[0]; # f0
print $row[1]; # f1
print $row[2]; # f2
# ...

Enak bukan? Elemen ke-0 berisi nilai field f0, elemen ke-1 field f1, dst. Masalahnya, kemudahan ini mengorbankan nama field yang menjadi sangat tidak deskriptif. Belum lagi kalau tabel perlu diubah dengan menyisipkan field-field lain di antara field yang sudah ada. Atau field-field lama perlu dihapus. Semuanya akan menjadi mimpi buruk.

Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP dan Perl yang melakukan kedua hal di atas? Percaya deh, ada. Saya pernah harus ketiban getah memaintain tabel dengan nama field kriptik seperti ini.
2. Bahasa SQL dan Fungsi-Fungsi MySQL

MySQL adalah database SQL bukan? Sayangnya, programer PHP pemula kadang terbatas sekali pengetahuan SQL-nya. Padahal, untuk menggunakan database MySQL dengan efektif, ia tidak boleh malas mempelajari bahasa kedua, yaitu SQL. Jika tidak belajar SQL, maka ada kemungkinan Anda akan melakukan hal-hal seperti:

$res = mysql_query("SELECT * FROM bigtable");
while ($row = mysql_fetch_assoc($res)) {
if ($row['age'] >= 40) {
echo "Ditemukan kustomer yang berusia lebih dari 40 tahun!\n";
break;
}
}

Apa salah kode di atas? Si programer PHP mencoba mensimulasikan klausa WHERE SQL dengan melakukan pengujian kondisi di kode PHP. Padahal, yang seharusnya dilakukan adalah:

SELECT * FROM bigtable WHERE age >= 40

Ini amat mengirit trafik client/server karena tidak semua record harus dikirimkan dari MySQL ke program PHP Anda.

Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP yang seperti ini? Percaya deh, ada.

SQL sudah menyediakan cara untuk menyortir data, memformat tampilan, mengelompokkan dan memfilter record, dsb. MySQL juga terkenal banyak menyediakan fungsi-fungsi, mulai dari manipulasi tanggal, angka, string, dsb. Kenali SQL dan fungsi-fungsi MySQL; jangan duplikasikan ini semua di PHP sebab akan lebih efisien jika dilakukan di level MySQL.

Ini contoh lain programer PHP yang tidak memanfaatkan fasilitas dari MySQL:

$res = mysql_query("SELECT * FROM customers");
while ($row = mysql_fetch_assoc($res)) {
# format semula yyyy-mm-dd...
preg_match("/(\d\d\d\d)-(\d\d?)-(\d\d?)/", $row[date], $matches);
# ... dan ingin dijadikan dd/mm/yyyy
$tanggal = "$matches[3]/$matches[2]/$matches[1]";
echo "Nama=$row[name], Tanggal lahir=$tanggal
\n";
}

Padahal MySQL sudah menyediakan fungsi pemformatan dan manipulasi tanggal:

$res = mysql_query("SELECT name, DATE_FORMAT(date,'%d-%m-%Y') as tanggal ".
"FROM customers");
while ($row = mysql_fetch_assoc($res)) {
# tidak perlu capek-capek manipulasi string lagi...
echo "Nama=$row[name], Tanggal lahir=$row[tanggal]
\n";
}

Poin no. 2 ini kedengarannya klise, tapi, seperti nasihat Inggris bilang: know thy tools.
3. LIMIT, LIMIT, LIMIT

Salah satu alasan mengapa MySQL sangat cocok untuk aplikasi Web adalah mendukung klausa LIMIT. Dengan klausa ini, mudah sekali membatasi jumlah record hasil yang diinginkan dalam satu perintah SQL. Tidak perlu bermain kursor atau bersusah payah lewat cara lainnya. Belakangan database lain seperti PostgreSQL dan Firebird pun ikut mendukung fungsionalitas LIMIT (dengan sintaks yang tidak persis sama tentunya).

Sayangnya, programer PHP sendiri yang belum mengenal MySQL dengan baik tidak menggunakannya dengan semestinya.

$res = mysql_query("SELECT name FROM users ORDER BY date");
$rows = array();
for ($i=1; $i<=10; $i++) $rows[] = mysql_fetch_row($res); Si programer hanya berniat mengambil 10 record, tapi menyuruh MySQL mengambil semua record yang ada dulu. Bagaimana kalau ada 100 ribu record? 1 juta record? 10 juta? Seharusnya, setiap kali Anda menginginkan hanya satu, sepuluh, lima belas record, Anda perlu memberitahu MySQL lewat klausa LIMIT. SELECT name FROM users ORDER BY date LIMIT 10 Sehingga kita bisa mengirit trafik komunikasi client/server dan mengizinkan MySQL melakukan optimisasi terhadap query tersebut. 4. Tipe Data Berbeda dengan PHP dan bahasa-bahasa skripting yang mengizinkan kita menaruh apa saja dalam sebuah $variable tanpa deklarasi tipe terlebih dahulu, di MySQL kita perlu mendeklarasikan tipe-tipe data semua field yang ada pada saat membuat sebuah tabel. Seorang programer PHP yang tidak kenal MySQL kadang-kadang cenderung memilih jenis data yang salah (umumnya: memilih VARCHAR() padahal ada tipe data yang lebih tepat) dikarenakan tidak mengenal jenis-jenis data yang tersedia. Berikut beberapa contoh kurang tepatnya pemilihan tipe data: 1) memilih CHAR(8) atau VARCHAR(10) dan bukannya DATE untuk menyimpan tanggal; kerugiannya, lebih boros tempat dan tidak bisa memanfaatkan fungsi-fungsi khusus tanggal; 2) memilih CHAR(3) atau CHAR(6) ketimbang TINYINT UNSIGNED untuk menyimpan data boolean (“YES” dan “NO”; atau “TRUE” dan “FALSE”; padahal jauh lebih irit dinyatakan dengan 1 dan 0 yang hanya menempati 1 byte); 3) memilih FLOAT atau DOUBLE dan bukannya DECIMAL untuk menyimpan jumlah uang; kerugiannya, FLOAT dan DOUBLE adalah berbasis biner dan seringkali tidak eksak dalam menyimpan pecahan desimal. Nomor 3 sering terjadi karena programer biasanya hanya mengenal single/double floating point number yang tersedia di bahasa pemrograman. Padahal database umumnya menyediakan angka pecahan berbasis desimal yang bisa eksak menyimpan pecahan desimal. Manual MySQL amat membantu di sini; di subbab tentang Column Types dijelaskan dengan rinci jenis-jenis data yang ada, termasuk rentang nilai yang dapat ditampung, berapa byte yang ditempati tipe data tersebut, dsb. 5. Normalisasi dan Pemodelan Normalisasi, skema, entiti-atribut, primary key (PK) dan foreign key (FK), tabel entiti, tabel relasi, OLTP & OLAP… semuanya adalah istilah-istilah yang umum dijumpai dalam pemodelan fisik database. Sayangnya, banyak programer pemula tidak memiliki kemampuan modeling. Sehingga jika disuruh mendesain skema database (sekumpulan tabel-tabel beserta nama field dan tipenya) hasilnya tidak optimal bahkan berantakan. Skema yang buruk berakibat terjadinya duplikasi data, tidak scalable, performance yang buruk, tidak memenuhi requirements, dsb. Modeling tentunya tidak bisa diajarkan dalam 1–2 hari, apalagi dalam artikel yang singkat ini. Anda perlu membaca buku-buku mengenai pemodelan database dan belajar dari pengalaman maupun dari model-model yang sudah ada. Tapi beberapa nasihat yang mungkin bisa saya berikan di sini adalah sbb. Satu, langkah pertama dalam pemodelan adalah menemukan entiti-entiti. Entiti bisa dibilang “objek” yang akan kita gelluti. Misalnya, customer, produk, dan transaksi. Setiap entiti umumnya ditaruh dalam satu tabel, tabel ini disebut tabel entiti. Langkah kedua adalah mencari atribut-atribut entiti tersebut. Misalnya tabel customers memiliki atribut sapaan, nama, alamat (jalan + kota + kodepos + propinsi + negara), tanggal record ini ditambahkan, dsb. Langkah ketiga adalah mencari relasi di antara entiti-entiti. Umumnya relasi adalah satu dari: 1-1, 1-many, many-many. Misalnya, relasi antara transaksi dan produk adalah many-many, artinya sebuah transaksi pembelian dapat berisi banyak produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi. Setiap relasi juga akan ditempatkan pada tabel, yaitu tabel relasi. Dua, dalam pemodelan tidak ada istilah model yang benar atau salah. Yang ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya, untuk aplikasi sederhana modelnya sederhana. Semakin kompleks aplikasi, model pun semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah). Pada umumnya, seiring kompleksitas bertambah, yang tadinya atribut akan berubah menjadi entiti dikarenakan adanya kenyataan hubungan 1-many/many-many antara atribut. Contohnya, tabel customers memiliki atribut alamat. Jika kita ingin mendukung banyak alamat untuk satu customers, maka alamat akan menjadi entiti dan menempati tabel sendiri. Lalu kita membuat tabel relasi customers-alamat. 6. Indeks Indeks adalah sesuatu yang berkaitan erat dengan implementasi, bukan modeling. Kita seringkali perlu menambahkan indeks pada sebuah field atau banyak field dikarenakan jika tidak ditambahkan maka performance database tidak menjadi praktis. Serba-serbi indexing juga mungkin terlalu panjang untuk bisa dijelaskan dalam artikel pendek ini, tapi intinya setiap kolom yang: 1) memiliki rentang nilai cukup banyak; 2) terletak pada tabel yang berisi banyak record; 3) seringkali disebutkan di klausa WHERE dan/atau ORDER BY dan/atau GROUP BY; perlu diberi indeks. Ini dikarenakan indeks membantu mencari secara cepat sebuah nilai dari banyak nilai yang ada. Beberapa contoh: * Setiap primary key umumnya otomatis diberi indeks oleh database server, meskipun tabelnya masih berisi sedikit record atau bahkan kosong. Ini dikarenakan database perlu selalu mengecek keberadaan sebuah nilai field ini manakala ada sebuah record yang ditambahkan (ingat, PK artinya tak boleh ada dua record yang mengandung nilai field ini yang sama). Tanpa indexing, pengecekan akan linear dan memakan waktu lama. * Field tanggal lahir dalam tabel customers kemungkinan besar harus diindeks. Bahkan dayofyear() field ini juga mungkin perlu diindeks. Mengapa? Karena: 1) rentang nilai cukup besar (365 hari dalam setahun x +- 60 jumlah tahun); 2) tabel customers potensial ukurannya besar; 3) sering disebutkan di klausa WHERE (misalnya mencari customer yang ultah hari ini). * Field memo/notes kemungkinan besar tidak perlu diindeks (secara biasa). Mengapa? Karena meskipun 1) rentang nilai cukup besar; dan 2) tabel customers bisa besar; tapi 3) field ini tidak pernah disebutkan di klausa WHERE secara langsung (mis: Anda tidak pernah menyebutkan: … WHERE notes='nilai catatan tertentu' atau WHERE notes > 'nilai tertentu'). [Catatan: ada indeks lain yang “tidak biasa” di MySQL, yaitu FULLTEXT. Tapi ini di luar cakupan artikel kita kali ini.]

* Field jenis kelamin mungkin tidak perlu diindeks, kecuali jika perbandingan pria:wanita amat drastis bedanya. Mengapa? Sebab: 1) rentang nilai yang ada hanyalah dua: L (lelaki) dan P (perempuan). Meskipun Anda beri indeks, tidak akan memperbaiki kinerja.
7. Konkurensi, Locking, dan Transaksi

Programer web pemula kadang-kadang tidak menyadari bahwa program/skrip yang dibuatnya tidaklah seperti program desktop yang dijalankan oleh satu user. Melainkan, dalam satu waktu bisa saja ada 10 atau 100 user yang “menembak” skrip Anda di Web. Karena itu, isu locking dan konkurensi penting sekali. Contohnya adalah seperti ini:

$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
$value++;
// do something else first...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");

Di antara baris pertama (saat kita mengambil nilai record) dan baris keempat (saat kita menaruh kembali nilai dalam record) mungkin saja telah terjadi beberapa kali perubahan terhadap si record. Misalnya, pada baris pertama klien1 memperoleh nilai $value = 100. Di baris 3 $value di-increment menjadi 101. Tapi apa yang terjadi jika selama selang waktu itu nilai record counter1 telah menjadi 103 (karena misalnya klien2, klien3, dan klien4 telah meng-incrementnya)? Oleh si klien1, counter1 direset kembali menjadi 101 dan akibatnya increment oleh klien2, klien3, dan klien4 hilang. Seharusnya nilai counter1 menjadi 104.

Untuk kasus di atas, pemecahannya cukup gampang. Lakukan increment secara atomik:

// tidak perlu ambil nilai counter dulu...
// do something else first...
$res = mysql_query("UPDATE counter SET value=value+1 WHERE name='counter1'");

Tapi dalam kasus lain, kadang-kadang kita harus melakukan locking terhadap tabel atau record untuk menjamin bahwa selama kita // do something else… klien2, klien3, dan klien4 tidak bisa seenaknya menaikkan nilai counter:

mysql_query("LOCK TABLES cuonters");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("UNLOCK TABLES");

atau (lebih baik karena kita tidak perlu melock keseluruhan tabel):

mysql_query("SELECT GET_LOCK('lock1')");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("SELECT RELEASE_LOCK('lock1')");

Ingat, locking dapat berakibat samping yaitu deadlock.

Transaksi. Transaksi pun sesuatu yang dipergunakan secara meluas di dunia database, tapi hampir tidak pernah kita jumpai di bahasa pemrograman (ini karena data di bahasa pemrograman ditaruh dalam variabel di memori semua; tidak ada isu disk yang crash/lambat/rusak/harus disinkronkan dengan data di memori). Karena itu Anda perlu memahami konsep ini dari buku-buku tentang database.
8. Jenis Tabel

Di MySQL dikenal istilah table handler dan jenis tabel. Saat ini ada 3 jenis tabel utama yang bisa dipakai di MySQL: MyISAM (default), BerkeleyDB, dan InnoDB. Yang perlu diketahui ada tiga hal: 1) tidak semua tabel mendukung transaksi (MyISAM tidak mendukung transaksi, jadi COMMIT dan ROLLBACK tidak melakukan sesuatu yang semestinya jika Anda menerapkan pada tabel MyISAM); 2) tidak semua tabel punya karakteristik performance yang sama (BerkeleyDB misalnya, lambat jika ukuran tabel besar) dan disimpan dengan cara yang sama (tabel MyISAM misalnya disimpan dalam 3 file: .MYI, .MYD, .frm sementara tabel-tabel dan database-database InnoDB disimpan bersama dalam daerah disk yang disebut tablespace; 3) distribusi MySQL yang bukan -Max tidak dikompile dengan dukungan terhadap BerkeleyDB dan InnoDB.

Nomor 3 penting Anda ketahui karena jika kita menginstruksikan MySQL untuk membuat database dengan jenis tertentu:

CREATE TABLE (...) TYPE=BDB;

Dan MySQL tidak dikompile untuk mendukung BerkeleyDB, maka MySQL tidak akan protes dengan error, melainkan membuatkan tabel tersebut untuk kita tapi dengan tipe default yaitu MyISAM. Jadi Anda perlu mengecek dulu menggunakan SHOW TABLE STATUS:

mysql> create table t4 (i int) type=innodb;
Query OK, 0 rows affected (0.00 sec)

mysql> show table status from mydb like 't4';
+------+--------+-...
| Name | Type | ...
+------+--------+-...
| t4 | MyISAM | ...
+------+--------+-...

Ternyata MyISAM!
Penutup

Sebetulnya untuk memakai MySQL dengan baik dan benar diperlukan skill-skill dasar lain seperti membackup, merestore, mengeset parameter-parameter server, memonitor server, dsb. Tapi itu semua lebih merupakan tugas seorang administrator (DBA).

Wednesday, September 9, 2009

Mengambil Nilai Tahun Pada Data di mySQL

Akhirnya menulis lagi, setelah sekian lama akhirnya sempat menulis lagi di blog heru manusia biasa. Ngak kerasa juga udah udah masuk bulan maret. Udah lama juga gak nulis artikel tentang query di mysql.

Sempat malas untuk menulis masalah ginian di blog, karna di google udah banyak yang ngasi tutorial kayak ginian. Tapi terpancing karna ada adek tingkatku yang nanyain masalah query di mysql untuk nampilin tanggal dalam database yang bertipe date. Permasalahanya, dia mau buat sebuah aplikasi yang bisa mengambil tahun dan bulanya saja yang datanya terdiri dari tanggal yang jumlahnya sangat banyak.

Friday, August 28, 2009

type data di mysql

Date/Tanggal merupakan salah satu type data yang sangat penting dalam Database, namun kebanyakan para progammer pemula menghidari type data ini, alasannya adalah karena SUSAH untuk dibuat interface (padahal sebenarnya nilai validasinya jauh lebih penting)

Thursday, August 27, 2009

new user dan query izin akses database

singkat nya gini ku punya database setelah di tela'ah dan di pelajar (cielah gaya kamu lagi mati saya liat nya..) gak bisa masuk ke dalam database mysql
aturan nya dah ku ikutin,sampai buat new user pun masih kena pasal 1130 oleh mysql

okeh kita buat user baru lagi dengan nama user dendi dan password nya 200887 dengan ip nya 192.168.0.183(ip komputer si client)

dengan perintah query nya
sebelumnya masuk dulu ke dalam database yang telah kita buat.
database yang telah saya buat "andiasoft"(tanpa tanda kutip).
caranya agar lebih jelas anda bisa klik tu gambar.



setelah kita lakukan query2 diatas baru bisa diakses oleh ip 192.168.***.**1

baru deh bisa di pake..

enakkan cuy


buncit,august27,2009

Wednesday, August 26, 2009

Belajar administrasi user pada Mysql

I. Pendahuluan
Dalam tutorial sebelumnya, kita sudah mempelajari tentang perintah-perintah dasar MySQL. Pada tutorial kali ini kita akan membuat bagaimana caranya agar database MySQL kita hanya bisa diakses oleh user-user tertentu saja. Denagn kata lain kita akan mempelajari tentang pemberian password pada MySQL.

A. Memberi password root
Sebelumnya, kalau kita ingin mengakses database MySQL kita, maka hanya tinggal kita ketikkan mysql dan kita bisa langsung mengakses database MySQL kita. Namun, bagaimana jika ada orang yang kita tidak kehendaki mengetikkan kata itu juga? Tentu orang tersebut bisa langsung mengakses database kita dan bisa mengubah atau malah menghapus database-database yang ada di MySQL. Hal itu tentu akan sangat kita hindari. Untuk menghindari hal itu, sebaiknya kita memberikan password kepada database kita. Format untuk memberi password adalah:

# mysqladmin -u root password password_kita

misalnya kita ingin memberikan password pada MySQL kita berupa 123456, maka ketikkan:

# mysqladmin -u root password 123456

Jadi kalau ada orang yang hanya menulis mysql untuk masuk ke database kita, akan terjadi error seperti berikut:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Untuk mengakses mysql yang sudah diberi password, maka ketikkan:

# mysql -u root -p

dan masukkan password yang sudah kita buat.

B. Merubah Password root
Kalau kita ingin merubah password root, maka kita harus berada di dalam database MySQL dan ketikkan:

> update mysql.user set password=password('password_baru') where user='root';

> flush privileges;

Flush priveleges digunakan bila terjadi perubahan yang dilakukan di database MySQL, sehingga perubahan tersebut akan berpengaruh pada selanjutnya. Sekarang keluar dari mysql dan ketikkan

# mysql -u root -p

masukkan password dengan password yang baru dibuat.

C. Lupa password root
Jika kita benar-benar lupa dengan password root mysql dan kita tidak berada di lingkungan mysql tetapi di lingkungan linux, maka ikuti langkah berikut ini:
1. Matikan MySQL

#/etc/init.d/mysqld stop

2. Masuk ke Server MySQL tanpa Password

# mysqld_safe --skip-grant-tables &

3. Akses ke Server MySQL

# mysql -u root

4. Membuat password root MySQL

mysql> use mysql;
mysql> update user set password=PASSWORD("password_baru") where User='root';
mysql> flush privileges;
mysql> quit;

5. Matikan Server MySQL

# /etc/init.d/mysqld stop

6. Mengetes Server MySQL

# /etc/init.d/mysqld start

# mysql -u root -p

masukkan password yang baru dibuat dan seharusnya kita sudah dapat untuk mengakses server MySQL kita.

D. Menambah User Baru
Setelah kita membuat password root untuk MySQL, maka selanjutnya kita akan membahas cara menambah user baru pada database MySQL. Sangat tidak dianjurkan untuk selalu mengakses database dengan user root, karena dapat berakibat fatal jika kita memberikan perintah yang keliru. Untuk menambah user baru, kita harus sebagai user root. Berikut adalah langkah-langkahnya:
1. Masuk ke MySQL

# mysql -u root -p

2. Pilih Database MySQL

> use mysql;

3. Melihat Tabel-Tabel

> show tables;

4. Melihat tabel user

> describe user;

Akan terlihat sebagai berikut:


5. Masukkan User Baru
Untuk memasukkan user baru, maka ikuti perintah berikut:

Perintah di atas akan menambahkan user baru dengan nama dedi dan password 123456. Untuk dapat melihat konfigurasi user yang baru dibuat, maka ketikkan perintah berikut:


Setelah itu, jangan lupa untuk memberikan perintah:

> flush privileges;

Untuk mengetesnya, keluar dari MySQL lalu coba untuk mengakses database dengan user baru tersebut.

# mysql -u dedi -p

Namun, biasanya untuk memasukkan user baru digunakan perintah Grant dimana perintah ini selain dapat menambah user baru juga dapat memberi izin akses user tersebut sehingga kita tidak bekerja dua kali. Untuk lebih jelasnya tentang perintah Grant, silahkan ke tutorial selanjutnya.

E. Menghapus User
Untuk menghapus user maka yang berhak melakukannya adalah root dengan format:

> delete from mysql.user where user='nama_user';

dalam kasus kita:

> delete from mysql.user where user='dedi';

Kalau sudah menghapus user, ketikkan: > flush privileges;

F. Merubah Password User
Untuk merubah password user, maka yang berhak melakukannya adalah root dengan perintah:

> update mysql.user set password=password('password_untuk_dedi') where user='dedi';

G. Manajemen user
Untuk menjaga kestabilan dan keamanan database, maka kita harus mengetahui proses yang sedang terjadi pada database server dengan cara melihat siapa saja yang mengakses database kita. Ketikkan perintah berikut:

> show processlist;

Perintah tersebut akan menampilkan user-user yang sedang mengakses MySQL server.

H. Konfigurasi Izin Akses User
Dengan MySQL, kita dapat mengatur izin akses tiap-tiap user, misalnya user tertentu hanya dapat membaca data pada database tanpa bisa melakukan modifikasi atau hanya dapat mengakses database yang ditentukan saja serta beberapa izin-izin akses lainnya. Ada dua perintah yang digunakan yaitu Grant dan Revoke.
1. Menggunakan Grant
Grant merupakan perintah untuk memberikan hak izin akses bagi user agar dapat mengakses database, tabel, dan kolom. Selain itu kita dapat menambahkan user baru dengan perintah grant ini. Izin akses pada MySQL diatur dalam database sistem MySQL yang terdiri atas lima buah tabel yaitu user, d, host, tables_priv dan columns_priv. Jika kita melakukan perubahan izin akses pada user yang masih aktif bekerja dalam prompt MySQL, MySQL tidak langsung menerapkan perubahan tersebut meski kita telah mengetikkan flush privileges. Konfigurasi itu berlaku berlaku ketika user tersebut menutup koneksi dengan database MySQL kemudian melakukan koneksi kembali. Perintah Grant memiliki tingkat pilihan yang dapat dipergunakan yaitu:

a. Izin Akses Penuh
Izin ini digunakan untuk mengakses seluruh database yang berada pada server. Konfigurasi akses ini terletak pada tabel user. Untuk memberikan izin akses penuh pada user, maka ikuti langkah-langkah berikut:

# mysql -u root -p

> use mysql;
> grant all privileges on * to dedi@localhost identified by 'password' with grant option;

Perintah di atas akan memberikan izin akses penuh setara dengan root pada user dedi. Sebaiknya kita tidak memberikan izin akses ini pada user lain, karena kaan terdapat multi root pada database server MySQL.

Option identified by 'password' akan menerapkan user tersebut agar tetap memasukkan password saat mengakses database. Jika kita tidak memberikan option password, user tersebut dapat mengakses database tanpa harus memasukkan password terlebih dahulu. Sedangkan penyertaan option with grant option akan memebrikan hak penuh pada user sehinga user tersebut mampu memberikan perintah grant pada user lainnya.

Namun perintah di atas memiliki kekurangan yaitu ketika kita sebelumnya tidak memilih database mysql sebagai database ktif maka server akan mengabaikan akses reload, shutdown, process, file dan grant. Berati user tersebut tetap tidak diizinkan mengakses perintah-perintah tersebut. oleh karena itu, kita dapat mengganti tanda * menjadi tanda *.*

Sebenarnya perintah grant juga secara otomatis dapat membuat user baru. Misalnya user budi belum ada dalam user database namun dengan perintah seperti diatas (dengan merubah dedi menjadi budi dan merubah passwordnya juga), maka di dalam database mysql sudah terbentuk user budi secara otomatis.

Jika kita tidak memasukkan option password pada perintah grant, maka user tersebut bisa mengakses database MySQL tanpa harus memasukkan password dan itu sangat beresiko.

b. Izin akses Database
Izin ini digunakan untuk mengakses tabel-tabel yang berada pada database yang telah ditentukan, konfigurasi akses ini terletak pada tabel db dan tabel host. Untuk memberikan izin akses database pada user, lakukan seperti contoh berikut:

mysql>grant all on *.* to 'wau'@'192.168.0.186' identified by 'yui';

Perintah diatas akan mengatur user tini hanya dapat mengakses database latihan saja dan tidak dapat mengakses database lainnya.

c. Izin Akses Tabel
Izin ini digunakan untuk mengatur izin akases terhadap semua kolom yang terdapat pada tabel yang ditentukan, konfigurasi akses ini terletak pada tables_priv. Tabel tables_priv menyediakan perintah izin akses select, insert, update, delete, create, drop, grant, references, index dan alter. Untuk menggunakan izin akses tabel, ketikkan perintah berikut:

grant select on latihan

Perintah di atas menjelaskan bahwa user dimas hanya diperbolehkan untuk melakukan perintah select pada tabel teman dalam database latihan. Dia tidak bisa merubah pada tabel tersebut dan hanya diperbolehkan untuk melihat saja.

d. Izin Akses Kolom
Izin ini digunakan untuk mengatur izin akses pada kolom yang ditentukan saja. Konfigurasi ini terletak pada tabel columns_priv dan lebih sedikit dibandingkan dengan teble tables_priv. Hak akses yang dizinkan meliputi select, insert, update dan References. Contoh penggunaan izin akses kolom adalah sebagai berikut:


Perintah di atas akan menjelaskan bahwa user deni hanya mendapat izin melakukan update pada kolom nama saja, sedangkan field-field yang lain tidak bisa dirubah oleh user deni. Kombinasi antara izin akses tabel dan kolom dapat dilakukan dengan cara:


e. Menampilkan Izin Akses
Untuk mengetahui izin akses pada user, ketikkan:

> show grants;



2. Menggunakan Revoke
Revoke merupakan kebalikan dari Grant yaitu menghapu atau mencabut kembali izin akses user yang sebelumnya telah diberikan. Tingkat pilihan yang dapat digunakan juga sama dengan perintah Grant sehingga semua izin akses dengan Grant dapat anda cabut lagi. Untuk menggunakan Revoke, maka perintahnya sama dengan contoh-contoh diatas, hanya saja ganti perintah grant menjadi revoke sehingga user tersebut tidsak bisa mengakses suatu database atau kolom atau tabel.

3. Mengakses server mysql di server lain
Jika sebelumnya untuk mengakses database dengan mengetikan

# mysql -u root -p

maka kita langsung mengakses database, itu berarti database kita berada dalam localhost. Lalu bagaimana kalau database kita terletak pada server lain? Untuk mengaksesnya, maka ketikkan:

# mysql -u root -h alamat_ip

misalnya seorang host dari IP 192.168.1.3 ingin mengakses database server yang terletak pada 192.168.1.2, maka:

# mysql -u root -h 192.168.1.2

Jika ada error seperti berikut:

ERROR 1130 (00000): Host '192.168.1.3' is not allowed to connect to this MySQL server

maka itu berarti IP tersebut tidak diijinkan untuk mengakses database tersebut. Agar IP tersebut diperbolehkan mengakses database, maka kita harus memberikan perintah grant kepada database server tersebut. Misalnya seseorang yang bernama susan ingin mengakses database coba yang berada di database server yang mempunyai IP 192.168.1.2. Maka agar user susan dapat mengakses database server, pastikan bahwa user susan sudah ada dalam database klien. Untuk mengeceknya berikan perintah berikut:

> use mysql;

> select user from users;

Jika user susan belum ada, buatlah user tersebut seperti pada contoh di atas.
Kemudian dari sisi server, buat perintah grant dengan format:

> grant all on nama_database.* to nama_user@alamat_ip identified by 'password_user';

Dalam kasus ini:

> grant all on coba.* to
susan@192.168 This e-mail address is being protected from spambots, you need JavaScript enabled to view it
.1.3 identified by '123456';

> flush priveleges;

Untuk mengecek apakah user susan dapat mengakses database server, ketik perintah berikut:

> show grants for
susan@192.168 This e-mail address is being protected from spambots, you need JavaScript enabled to view it
.1.3

Setelah itu, coba akses kembali ke database server dengan cara:

# mysql -h 192.168.1.2 -u susan -p

Dan masukkan password untuk susan yaitu 123456, maka user susan hanya dapat mengakses database coba yang ada di database server. Namun perlu diperhatikan yaitu pada saat menuliskan perintah grant agar selalu menulis identified by 'password_user', karena jika tidak ditulis, maka akan membahayakan security database server sebab user susan bisa masuk ke database server tanpa password. Dan lebih berbahaya lagi jika hal ini diketahui oleh orang lain.

source http://www.catatanlepas.com/component/content/article/86.html

Thursday, August 20, 2009

Reset Password mySQL

Reset Password mySQL

Kelupaan password mySQL..??? ini penyakit kambuhan seorang admin yang biasanya harus menghafalkan banyak password :-p

jangan khawatir, coba ikuti langkah-langkah berikut untuk dapat melakukan reset password mySQL.

OK, mari kita mulai :

* Hentikan service mysqld nya.
* Jalankan mysql servernya kembali dengan menggunakan opsi –skip-grant-tables .
* Jalankan mysql client nya dengan menggunakan opsi “-u root”.
* Ketikkan perintah berikut
UPDATE mysql.user SET Password=PASSWORD(’password_baru’) WHERE User=’root’;
FLUSH PRIVILEGES;
mysqld_safe –skip-grant-tables

pastikan file mysqld_safe udah ada di variabel PATH anda. jika tidak maka cari dulu file tersebut dan jalankan dengan path lengkapnya.

Untuk referensi, silahkan baca di http://www.tech-faq.com/reset-mysql-password.shtml

#!/bin/bash
#
# resetRootPass script
#
# Recover lost root password of mysql database.
#
# By Willem Bermon
#

echo
echo "Mysql password recovery utility"
echo

# Stop the mysql server
/etc/init.d/mysql stop
/etc/init.d/mysql zap > /dev/null
/bin/killall mysqld > /dev/null

# Run mysqld in permissionless mode
/sbin/start-stop-daemon --start --quiet --exec /usr/bin/mysqld_safe
--background -- --skip-grant-tables >/dev/null 2>&1

sleep 1

# Execute queries
mysql -u root mysql -e "UPDATE user SET Password=PASSWORD('$1') WHERE
user='root';
FLUSH PRIVILEGES;"
if [[ $? -eq 0 ]]
then
echo " ** SQL root password updated"
else
echo " ** SQL root password update unsuccesful"
fi

# Restart the mysql server
/bin/killall mysqld > /dev/null
/etc/init.d/mysql start

echo "Succesfully updated password!!"
echo
echo
exit 0

Tuesday, August 18, 2009

date time di mysql

Date_format(x, simbolFormat) digunakan untuk mengkonversi data tanggal sesuai simbol format yang diinginkan, degan x adalah data tanggal.Format tanggal dalam mysql :

%M : nama bulan secara penuh
%m : nomor bulan
%b : nama bulan disingkat
%W : nama hari secara lengkap
%D : nomor hari dalam bulan
%Y : tahun dalam format 4 digit
%y : tahun dengan format 2 digit
%j : nomor hari dalam 1 tahun
%a : nama hari disingkat
%d : nomor hari dalam 1 bulan
%r : jam dalam format 12 jam
%T : jam dalam format 24 jam
%H : jam dalam format 24 jam : 00:23
%h : jam dalam format 24 jam : 00:12
%S : detik

contoh :
select date_format(’2007-07-19′,%M%D%Y)
hasil :
July 19th 2007

pake mysql consule di CMD

tadi ku bingung sendiri karena tidak tau bagaimana mysql tanpa gui...tanya ma teman yang jago php,dia juga tidak tau mungkin dia lupa..setelah nyari di paman google akhirnya ku menemukan juga..mysql tanpa gui.^_^maklum belajar jangan di ledekin ya...

ternyata simple banget

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.

C:\Users\andia>mysql -uroot -paryandie
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)

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

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| celcom |
| daftar |
| mysql |
| phpmyadmin |
| test |
| use celcom |
+--------------------+
7 rows in set (0.17 sec)

mysql> use celcom;
Database changed
mysql>


senang nya walau terlihat gampang,tapi ku senang ^__^

Saturday, August 15, 2009

buat root mysql baru,agar bisa akses ke dalam database

ni lagi belajar buat database di centos 5.2 menggunkan virtual box...

langsung saja...

To install MySQL, we do this:
yum install mysql mysql-devel mysql-server
Then we create the system startup links for MySQL (so that MySQL starts automatically whenever the system boots) and start the MySQL server:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
Now check that networking is enabled. Run
netstat -tap | grep mysql
It should show a line like this:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 2584/mysqld
[root@server1 ~]#


If it does not, edit /etc/my.cnf and comment out the option skip-networking:
vi /etc/my.cnf
[...]
#skip-networking
and restart your MySQL server:
/etc/init.d/mysqld restart
Run
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
to set a password for the user root (otherwise anybody can access your MySQL database!).

seles

[...]

setelah di restart mysql nya kit setting new user mysql admin nya..

dengan perintah

mysql_secure_installation

=====================================================================================

[root@localhost ~]#  mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] n
... skipping.
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...
All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!
=====================================================================================
baru deh akses ke dalam database nya dengan Query

mysql -uroot -ppass

ciganjur august 15,2009

Tuesday, August 11, 2009

monitoring mysql dengan bash shell




Pernahkah anda kesulitan untuk memonitor proses MySQL anda ? Sehingga ketika MySQL anda down pun anda tidak segera tahu. Kalau anda merasa bahwa MySQL anda sangat penting untuk selalu up dan jalan dengan baik, maka anda perlu memonitor proses MySQL anda, apakah down ataukah up.
Bagi anda yang punya Server Linux sudah pasti punya shell script. Dalam tulisan ini kenapa kita memakai shell script, karena dengan shell script, maka dapat dijalankan di OS apapun asal ada shell script.
Berikut adalah shell script sederhana untuk memonitor proses MySQL anda apakah down atau up.
#!/usr/bin/sh
#
# infokomtek.com
# script memonitor mysql
#
while true
do
check_mysql=`ps auxw | grep “mysqld” |
grep -v grep | wc -l`
if [ $check_mysql -gt 1 ];
then
echo “MySQL is up”
else
echo “MySQL is down”
fi
sleep 5
done
Pertama untuk mengetahui proses MySQL yang sedang berjalan dalah dengan mengetahui jumlah proses minimum yang ada di server anda.
Dalam script ini dianggap prosese minimum MySQL adalah 2, sehingga ketika diperiksa dengan perintah ps auxw | grep “mysqld” | grep -v grep | wc -l, dan hasilnya lebih dari 1, maka dianggap proses MySQL berjalan dengan baik.
Dibaris ke 16 ada perintah sleep 5. Perintah ini untuk memberikan periode berapa kali monitor dilakukan, alias setiap berapa detik perintah ps auxw | grep “mysqld” | grep -v grep | wc -l dijalankan.
Tentunya, echo "MySQL is down" dapat anda ganti dengan perintah mail. sehingga ketika MySQL anda down, dapat anda ketahui dengan cepat melalui email anda.
Selamat mencoba !!!

Saturday, August 8, 2009

import data .txt kedalam database Mysql dari bash shell

Udah malam..ku mencoba berbagi mana tau dengan artikel ini teman-teman yang sedang mempunyai masalah yang sama dengan ku dapat terbantu..

singkat saja.ku di dapat tugas agar memindah kan data dari server kedalam database Mysql menggunakan bash sell agar import data nya dapat dilakukan dengan automatic dan akhir dari tugas ini kita buat crontab untuk mengatur waktu transfernya.

kita mulai.
di database ku buat 13 tabel dengan beberapa kolom yang bermacam type data..
akhir nya mencoba membuat sendiri dan berakkhir dengan error.akhir nya pertolongan terakhir adalah phone friend.^_^
pamz lah membantu ku...

scriptnya seperti ini..

FILES="/opt/monitoring/database"
DATE=`date +"%Y-%m-%d".txt`

FILES1="mon-mem-sbg-private-"
FILES2="mon-hd-sbg-private-"
FILES3="mon-mem-sbg-public-"
FILES4="mon-hd-sbg-public-"
FILES5="mon-mem-kpg-public-"
FILES6="mon-hd-kpg-public-"
FILES7="mon-mem-kpg-db-"
FILES8="mon-hd-kpg-db-"
FILES9="mon-hits-speedometer-"
FILES10="mon-hits-speedometer-hours-"
FILES11="mon-min-max-hits-speedometer-"

FILE1=$FILES1$DATE
FILE2=$FILES2$DATE
FILE3=$FILES3$DATE
FILE4=$FILES4$DATE
FILE5=$FILES5$DATE
FILE6=$FILES6$DATE
FILE7=$FILES7$DATE
FILE8=$FILES8$DATE
FILE9=$FILES9$DATE
FILE10=$FILES10$DATE
FILE11=$FILES11$DATE

cd $FILES
for file in `ls |grep $DATE`

do

echo $file

if [ $file = $FILE1 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE mem_sbg_private"
elif [ "$file" = $FILE2 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE hd_sbg_private"
elif [ "$file" = $FILE3 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE mem_sbg_public"
elif [ "$file" = $FILE4 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE hd_sbg_public"
elif [ "$file" = $FILE5 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE mem_kpg_public"
elif [ "$file" = $FILE6 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE hd_kpg_public"
elif [ "$file" = $FILE7 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE mem_kpg_db"
elif [ "$file" = $FILE8 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE hd_kpg_db"
elif [ "$file" = $FILE9 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE hits"
elif [ "$file" = $FILE10 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE hours_hits"
elif [ "$file" = $FILE11 ]; then
mysql -uroot -pandika celcom -e "LOAD DATA INFILE '$FILES/$file' INTO TABLE min_max_hits"
fi

done