Beranda > MySQL > Tips dan Trik MySQL

Tips dan Trik MySQL

Postingan dibawah adalah sepenuhnya tulisan Mas Martinus Ady, saya sepenuhnya mengutipnya dari blog Beliau untuk dijadikan sebagai catatan saya. Sekali lagi Terima Kasih Mas Martinus.

Martinus Says:

Bagi teman-teman yang sudah sering sekali menggunakan MySQL sebagai database server-nya mungkin sudah tidak asing lagi dengan beberapa tips dan trik yang ada pada tulisan kali ini :) Tapi kenapa saya menulis ini, karena saya sendiri sering lupa dan membuat saya sering googling lagi untuk kasus yang sama :malu: Beberapa perintah atau tips dan trik yang sering membuat saya lupa yaitu :
1. Mengganti Password Root di MySQL
2. Melihat DataBase Engine yang Terinstall
3. Backup Data dengan Menggunakan Perintah mysqldump
4. Restore Data Pada MySQL
5. Backup Per Tabel Menggunakan Perintah SELECT INTO OUTFILE
6. Insert Data Menggunakan Perintah LOAD DATA INFILE
7. Melihat Struktur Tabel di MySQL

  1. Mengganti Password Root di MySQL
    Ada kalanya kita merasa bahwa password untuk user root MySQL kita susah untuk di ingat, nah untuk mengganti password root tersebut kita dapat menggunakan perintah mysqladmin -u root -p’password_sekarang’ password ‘password_baru’ dimana ‘password_sekarang’ adalah password user root sebelum dirubah dan ‘password_baru’ adalah password baru yang ingin digunakan. Dan jika kita menjalankannya dari terminal, maka hasilnya akan seperti tampilan dibawah ini :

    martinus@martinus-laptop:~$ mysqladmin -u root -p'admin' password 'password_baru'
    martinus@martinus-laptop:~$ mysql -u root -ppassword_baru
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 33
    Server version: 5.0.75-0ubuntu10.2 (Ubuntu)
    
    Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
    
    mysql>
  2. Melihat DataBase Engine yang Terinstall
    Sebelum membuat sebuah tabel yang menggunakan engine tertentu, sebaiknya mari kita cek dahulu apakah server MySQL kita sudah mempunyai dukungan atau belum pada engine yang akan kita gunakan. Sedangkan untuk melihat engine apa saja yang sudah didukung pada server MySQL, kita dapat menggunakan perintah show engines\G seperti dibawah ini :
    Pastikan dahulu bahwa anda sudah login pada server MySQL anda !!

    mysql> show enginesg
    +------------+----------+----------------------------------------------------------------+
    | Engine     | Support  | Comment                                                        |
    +------------+----------+----------------------------------------------------------------+
    | MyISAM     | DEFAULT  | Default engine as of MySQL 3.23 with great performance         |
    | MEMORY     | YES      | Hash based, stored in memory, useful for temporary tables      |
    | InnoDB     | YES      | Supports transactions, row-level locking, and foreign keys     |
    | BerkeleyDB | NO       | Supports transactions and page-level locking                   |
    | BLACKHOLE  | YES      | /dev/null storage engine (anything you write to it disappears) |
    | EXAMPLE    | NO       | Example storage engine                                         |
    | ARCHIVE    | YES      | Archive storage engine                                         |
    | CSV        | YES      | CSV storage engine                                             |
    | ndbcluster | DISABLED | Clustered, fault-tolerant, memory-based tables                 |
    | FEDERATED  | DISABLED | Federated MySQL storage engine                                 |
    | MRG_MYISAM | YES      | Collection of identical MyISAM tables                          |
    | ISAM       | NO       | Obsolete storage engine                                        |
    +------------+----------+----------------------------------------------------------------+
    12 rows in set (0.00 sec)
    
    mysql>
  3. Backup Data dengan Menggunakan Perintah mysqldump
    Proses backup database merupakan sebuah proses yang sangat penting sekali, maka sebaiknya kita berteman dekat dengan perintah mysqldump :) Untuk proses backup ini sendiri ada berbagai cara yaitu :

    • Backup Standart
      Untuk melakukan proses backup standart, kita bisa menggunakan perintah mysqldump -B nama_database -u root -p > hasil_backup.sql dimana -B nama_database ini adalah nama database yang ingin anda backup. Hasil dari perintah ini adalah kita akan mendapatkan seluruh database schema (struktur table) beserta isinya seperti dibawah ini :

      martinus@martinus-laptop:~$ mysqldump -B latibatis -u root -padmin > cb.sql
      martinus@martinus-laptop:~$ more cb.sql
      --
      -- Current Database: `latibatis`
      --
      
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ `latibatis` /*!40100 DEFAULT CHARACTER SET latin1 */;
      
      USE `latibatis`;
      
      --
      -- Table structure for table `LAT`
      --
      
      DROP TABLE IF EXISTS `LAT`;
      SET @saved_cs_client     = @@character_set_client;
      SET character_set_client = utf8;
      CREATE TABLE `LAT` (
        `id` int(11) NOT NULL auto_increment,
        `item_cd` varchar(15) default NULL,
        `name` varchar(15) default NULL,
        PRIMARY KEY  (`id`),
        UNIQUE KEY `item_cd_2` (`item_cd`),
        KEY `item_cd` (`item_cd`)
      ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
      SET character_set_client = @saved_cs_client;
      
      --
      -- Dumping data for table `LAT`
      --
      
      LOCK TABLES `LAT` WRITE;
      /*!40000 ALTER TABLE `LAT` DISABLE KEYS */;
      INSERT INTO `LAT` VALUES (1,'003.01','BESI BETON'),(2,'003.02','BESI BAJA'),(3,'003.03','BESI TUA');
      /*!40000 ALTER TABLE `LAT` ENABLE KEYS */;
      UNLOCK TABLES;
      
      --
      --
      Dump completed on 2009-08-28 19:16:48
      martinus@martinus-laptop:~$
    • Backup Schema DataBase-nya saja
      Jika kita ingin hanya struktur tabelnya saja (schema database) nya saja yang dibackup, anda dapat menggunakan perintah mysqldump -B nama_database -u root -p -d > schema_backup.sql dimana opsi -d adalah opsi untuk mengambil statement CREATE TABLE saja. Dan hasilnya adalah seperti dibawah ini :

      martinus@martinus-laptop:~$ mysqldump -B latibatis -u root -padmin -d > schmea_cb.sql
      martinus@martinus-laptop:~$ more schmea_cb.sql
      --
      -- Current Database: `latibatis`
      --
      
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ `latibatis` /*!40100 DEFAULT CHARACTER SET latin1 */;
      
      USE `latibatis`;
      
      --
      -- Table structure for table `LAT`
      --
      
      DROP TABLE IF EXISTS `LAT`;
      SET @saved_cs_client     = @@character_set_client;
      SET character_set_client = utf8;
      CREATE TABLE `LAT` (
        `id` int(11) NOT NULL auto_increment,
        `item_cd` varchar(15) default NULL,
        `name` varchar(15) default NULL,
        PRIMARY KEY  (`id`),
        UNIQUE KEY `item_cd_2` (`item_cd`),
        KEY `item_cd` (`item_cd`)
      ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
      SET character_set_client = @saved_cs_client;
      
      martinus@martinus-laptop:~$
    • Backup Isi DataBase-nya saja
      Sedangkan kalau kita hanya ingin mengambil isi tabelnya saja, kita bisa menggunakan perintah mysqldump -B nama_database -u root -p -t > isitable_cb.sql seperti dibawah ini :

      martinus@martinus-laptop:~$ mysqldump -B latibatis -u root -padmin -t > isitable_cb.sql
      martinus@martinus-laptop:~$ more isitable_cb.sql
      --
      -- Current Database: `latibatis`
      --
      
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ `latibatis` /*!40100 DEFAULT CHARACTER SET latin1 */;
      
      USE `latibatis`;
      
      --
      -- Dumping data for table `LAT`
      --
      
      LOCK TABLES `LAT` WRITE;
      /*!40000 ALTER TABLE `LAT` DISABLE KEYS */;
      INSERT INTO `LAT` VALUES (1,'003.01','BESI BETON'),(2,'003.02','BESI BAJA'),(3,'003.03','BESI TUA');
      /*!40000 ALTER TABLE `LAT` ENABLE KEYS */;
      UNLOCK TABLES;
      -- Dump completed on 2009-08-28 19:30:00
      martinus@martinus-laptop:~$

    • Backup Isi DataBase Sesuai Kolom
      Jika kita ingin mengambil isi tabel sesuai kolomnya, kita dapat menambahkan opsi –complete-insert pada perintah mysqldump menjadi seperti dibawah ini:

      martinus@martinus-laptop:~$ mysqldump -B latibatis -u root -padmin -t --complete-insert > isitable_complete_insert_cb.sql
      martinus@martinus-laptop:~$ more isitable_complete_insert_cb.sql
      --
      -- Current Database: `latibatis`
      --
      
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ `latibatis` /*!40100 DEFAULT CHARACTER SET latin1 */;
      
      USE `latibatis`;
      
      --
      -- Dumping data for table `LAT`
      --
      
      LOCK TABLES `LAT` WRITE;
      /*!40000 ALTER TABLE `LAT` DISABLE KEYS */;
      INSERT INTO `LAT` (`id`, `item_cd`, `name`) VALUES (1,'003.01','BESI BETON'),(2,'003.02','BESI BAJA'),(3,'003.03','BESI TUA');
      /*!40000 ALTER TABLE `LAT` ENABLE KEYS */;
      UNLOCK TABLES;
      
      -- Dump completed on 2009-08-28 20:00:42
      martinus@martinus-laptop:~$
  4. Restore Data Pada MySQL
    Pada tips dan trik nomor 3 diatas, kita sudah belajar bagaimana cara backup database menggunakan perintah mysqldump. Nah sekarang setelah mendapatkan hasil backup dari database, maka kita perlu juga untuk melakukan proses resore. Sedangkan untuk me-restore hasil backup yang telah dilakukan pada langkah nomor 3 di atas, kita dapat menggunakan perintah seperti dibawah ini :

    martinus@martinus-laptop:~$ mysql -u root -padmin < cb.sql
    martinus@martinus-laptop:~$
  5. Backup Per Tabel Menggunakan Perintah SELECT INTO OUTFILE
    Ada kalanya kita hanya ingin membackup tidak 1 database penuh, tetapi hanya pada tabel-tabel tertentu saja. Untuk keperluan ini, kita juga dapat menggunakan perintah select * from tabel_name into outfile ‘/path/file/backup.sql’; seperti contoh dibawah ini:

    mysql> select * from LAT into outfile '/tmp/DATA_LAT.sql' FIELDS TERMINATED BY ',';
    Query OK, 3 rows affected (0.00 sec)
    
    mysql> quit;
    martinus@martinus-laptop:~$ more /tmp/DATA_LAT.sql
    1,003.01,BESI BETON
    2,003.02,BESI BAJA
    3,003.03,BESI TUA
  6. Insert Data Per Tabel Menggunakan Perintah LOAD DATA INFILE
    Sedangkan untuk menginsert data, kita juga dapat menggunakan perintah LOAD DATA INFILE seperti dibawah ini :

    mysql> LOAD DATA INFILE '/tmp/DATA_LAT.sql' INTO TABLE LAT FIELDS TERMINATED BY ',';
    mysql> select * from LAT;
    +----+---------+------------+
    | id | item_cd | name       |
    +----+---------+------------+
    |  1 | 003.01  | BESI BETON |
    |  2 | 003.02  | BESI BAJA  |
    |  3 | 003.03  | BESI TUA   |
    +----+---------+------------+
    3 rows in set (0.00 sec)
    
    mysql>
  7. Melihat Struktur Tabel di MySQL
    Untuk melihat struktur tabel yang telah kita buat pada MySQL, kita dapat menggunakan perintah show create table table_name\G dimana table_name adalah nama tabel yang ingin dilihat. Sedangkan contohnya adalah sebagai berikut :

    mysql> show create table LATG
    *************************** 1. row ***************************
           Table: LAT
    CREATE TABLE `LAT` (
      `id` int(11) NOT NULL auto_increment,
      `item_cd` varchar(15) default NULL,
      `name` varchar(15) default NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `item_cd_2` (`item_cd`),
      KEY `item_cd` (`item_cd`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)
    
    mysql>

Langkah-langkah yang ditulis disini memang sangat sederhana dan mungkin masih ada cara yang lebih canggih dan lebih elegan lagi :D Untuk lebih jelas dan lebih detailnya, halaman manual MySQL sangat-sangat dianjurkan untuk selalu dibaca :D :) Nah jika sudah menemukan cara yang lebih elegan, mungkin ada ketertarikan untuk membuat semuanya menjadi sedikit lebih otomatis dengan bantuan berbagai macam script seperti disini dan disana :) Nah klo sudah membuat script otomatis, boleh donk di bagi-bagi disini :malu:

Link-link terkait:
Halaman manual MySQL
membuat-database-user-dan-password-di-mysql-berbasis-username-system
Backup MySQL

  1. September 7, 2009 pukul 10:00

    wah..wah..tulisan yang bagus, ini bisa dijadikan rangkuman refrensi tar waktu gunain MySQL. btw utk maintenance MySQL ko Budi gunain command line seperti ini? tidak pakai program Database Manager?

    • September 7, 2009 pukul 13:30

      thx… dulunya saya sering memakai Database Manager seperti EMS tetapi versi komersial. memang ada sih versi lite-nya (Free) tetapi banyak fungsi yang di nonaktifkan. sekarang saya sering menggunakan command line, dan kadang-kadang juga menggunakan service dari Netbeans, dan open office untuk meliat relasinya.

      kalo lebih biasa pake database manager bisa coba pakai sqlYOG, EMS jg bagus, trus satu lagi open office.. open office sudah sangat memadai untuk keperluan-keperluan management data, dengan tampilan yang mirip access sehingga sangat familiar. salam.

  2. September 8, 2009 pukul 12:54

    ya, saya lebih familiar pake yang GUI, tapi kalo mau multiplaform memang seharusnya uda biasain pakai command line, atau OpenOffice juga ok ya… Oh ya, sekarang ada MySQL GUI Tools & Workbench dari MySQL juga bagus kok, Free lagi.. ^^

  3. Oktober 1, 2009 pukul 09:17

    Saya suka posting ini, sy link posting ini dalam komentar blog saya di Memahami Magento dari Data Contoh.
    Ping bakal dikirim segera 🙂

    • Oktober 1, 2009 pukul 09:23

      Silahkan Bro… lagian posting ini jg w kutip dari blognya Mas Martinus 🙂

  4. Agustus 16, 2010 pukul 10:49

    Waw, awesome. Thanks a lot Mr Budi. 🙂

  1. Oktober 1, 2009 pukul 09:19

Tinggalkan komentar