Minggu, 25 Oktober 2009

Tips dan Trik 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>

Tidak ada komentar: