Rabu, 19 Desember 2012

MySQL Change root Password


MySQL Change root Password

How do I change MySQL root password under Linux, FreeBSD, OpenBSD and UNIX like operating system over ssh / telnet session?

Setting up MySQL password is one of the essential tasks. By default root user is MySQL admin account user. Please note that the Linux / UNIX root account for your operating system and MySQL root are different. They are separate and nothing to do with each other. Sometime your may remove mysql root account and setup admin as mysql super user for security purpose.
mysqladmin command to change root password

If you have never set a root password for MySQL server, the server does not require a password at all for connecting as root. To setup root password for first time, use mysqladmin command at shell prompt as follows:
    $ mysqladmin -u root password NEWPASSWORD
However, if you want to change (or update) a root password, then you need to use the following command:
    $ mysqladmin -u root -p'oldpassword' password newpass
For example, If the old password is abc, you can set the new password to 123456, enter:

    $ mysqladmin -u root -p'abc' password '123456'

Change MySQL password for other users

To change a normal user password you need to type (let us assume you would like to change password for user vivek) the following command:
    $ mysqladmin -u vivek -p oldpassword password newpass
Changing MySQL root user password using MySQL sql command

This is another method. MySQL stores username and passwords in user table inside MySQL database. You can directly update password using the following method to update or change password for user vivek:

1) Login to mysql server, type the following command at shell prompt:
    $ mysql -u root -p

2) Use mysql database (type command at mysql> prompt):

       mysql> use mysql;

3) Change password for user vivek, enter:

       mysql> update user set password=PASSWORD("NEWPASSWORD") where User='vivek';

4) Finally, reload the privileges:

       mysql> flush privileges;
       mysql> quit

The last method can be used with PHP, Python or Perl scripting mysql API.

Kamis, 13 Desember 2012

Perintah untuk tranfer file di linux antar 2 server - sftp

1. sftp username@ip.server.2
2. Masukkan password untuk server 2
3. Setelah masuk, untuk bisa masuk ke direktory yg mau di tuju dengan perintah:
    cd /folder/yg/dituju
4. Untuk ambil file dari server 2 ke server 1 perintahnya : get nama.file.yg.mau.diambil
5. Untuk letakkan file dari server 1 ke server 2 perintahnya : put nama.file.ya.mau.ditransfer
6. Selesai

Selasa, 11 Desember 2012

Eksekusi Perintah Secara Otomatis Dengan Crontab


Eksekusi Perintah Secara Otomatis Dengan Crontab

 centos esensialI. Pendahuluan
Crond merupakan sebuah daemon yang menjalankan tugas yang telah dijadwalkan berdasarkan input dari perintah crontab. Cron menyelesaikan tugas ini dengan membangunkan dirinya setiap menit dan memeriksa apakah ada cron-job yang harus dijalankannya berdasarkan crontab user. Dan harus diingat bahwa crontab adalah nama untuk daftar cron-job dan nama dari perintah untuk mengedit daftar tersebut.

II. Crontab di Centos
Untuk melihat perintah-perintah apa saja yang digunakan di crontab, tuliskan perintah:
# crontab --help
Pada umumnya, perintah yang sering dipergunakan adalah:
# crontab -e
Digunakan untuk mengedit file crontab.
# crontab -l
Digunakan untuk melihat file crontab

III. Penjadwalan Crontab
Di file crontab ada 7 blok yang dipergunakan apabila kita ingin menjadwalkan sesuatu di dalam linux.
*******
Blok IBlok IIBlok IIIBlok IVBlok VBlok VIBlok VII
Menunjukkan
Menit
(0-59)
Menunjukkan
Jam
(0-23)
Menunjukkan Tanggal
(1-31)
Menunjukkan Bulan
(1-12)
Menunjukkan Hari 
(0-6, 0=minggu)
Menunjukkan User (Optional) Menunjukkan Letak Perintah
Contoh-contoh crontab:
- 30 05 * * * root rm /var/log/httpd/*
Perintah ini menunjukkan bahwa setiap hari pukul 05.30 pagi, perintah "rm /var/log/httpd/*" akan dieksekusi, yang berarti akan menghapus semua file dalam folder /var/log/httpd
- 10 05 01 * * root /bin/sh /etc/script.sh
Perintah ini menunjukkan bahwa setiap tanggal 1 setiap bulannya akan dieksekusi kumpulan perintah pada file "/etc/script.sh"
- 30 0 1 1,6,12 * rm /home/heri/*
Perintah ini menunjukkan bahwa setiap tanggal 1 jam 00.30 pada bulan januari, juni, dan desember akan dihapus file /home/heri/*
- 5,10 0 10 * 1 rm /tmp/*
Perintah ini menunjukkan bahwa setiap jam 0:05 dan 0:10 hari senin pada tanggal 10 setiap bulan akan menghapus file-file yang ada di direktory tmp.

V. Lain-lain
1. Tanda * menunjukkan bahwa mengeksekusi perintah pada setiap waktu.
2. Apabila kita ingin menjadwalkan range pada salah satu bagian blok, maka bisa ditulis sebagai berikut:
Setiap tanggal 1,2,5,9 -->1,2,5,9 
Setiap 2 jam --> */2 atau 0-23/2
3. Untuk blok bulan dan hari bisa ditulis dengan huruf namun hanya harus menggunakan 3 huruf pertama bulan atau hari dan dalam bahasa Inggris.
Contoh untuk bulan: jan,feb
contoh untuk hari : sun,mon
4. Blok keenam yang menunjukkan user tidak selalu harus ditulis.
5. Kita bisa membuat log hasil eksekusi crontab dengan cara menulisnya di file crontab
contoh:
30 6 * * 1 PATH/dodol.sh > PATH/dodol.log
Perintah ini menunjukkan bahwa setiap jam 06.30 hari senin akan dieksekusi skrip dodol dan lognya akan di tulis di dodol.log

Referensi:

Jumat, 07 Desember 2012

Install MySQL 5.5 di CentOS 5.x

1. Install CentOS 5.x
2. Download file MySQL 5.5 yang antara lain:
    Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package Embedded 62.4M - OK
        MySQL-embedded-5.5.28-1.rhel5.i386.rpm
 
    Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package Development Libraries 3.4M - OK
         MySQL-devel-5.5.28-1.rhel5.i386.rpm
 
    Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package Test Suite 40.4M - OK
        MySQL-test-5.5.28-1.rhel5.i386.rpm
 
    Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package Compatibility Libraries 5.1M - OK
        MySQL-shared-compat-5.5.28-1.rhel5.i386.rpm
 
    Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package Client Utilities 17.1M - OK
        MySQL-client-5.5.28-1.rhel5.i386.rpm
 
    Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package MySQL Server 52.2M
        MySQL-server-5.5.28-1.rhel5.i386.rpm
 
    Red Hat & Oracle Linux 5 (x86, 32-bit), RPM Package Shared components 1.9M - OK
       MySQL-shared-5.5.28-1.rhel5.i386.rpm
3. Jalankan semua package dengan perintah ---> rpm -Uvh namafile.rpm
4. Reboot Server
5. Jalankan perintah ini ----> /usr/bin/mysql_secure_installation
6. Ikuti perintah yang ada
7. Setting /etc/my.cnf menjadi
    [mysqld]
       datadir=/var/lib/mysql
       socket=/var/lib/mysql/mysql.sock
       user=mysql

       #remote
       pid-file = /var/run/mysqld/mysqld.pid
       port = 3306
       basedir = /usr
       datadir = /var/lib/mysql
       tmpdir = /tmp
       #bind-address = 10.200.16.17
       old_passwords=1
       [mysqld_safe]
       log-error=/var/log/mysqld.log
       pid-file=/var/run/mysqld/mysqld.pid
8. Setting Firewall dengan perintah :
       /sbin/iptables -I INPUT -p tcp --destination-port 3306 -j ACCEPT
    /sbin/iptables -I OUTPUT -p tcp --source-port 3306 -j ACCEPT
9. Simpan settingan iptables
    service iptables save  
  



Kamis, 08 November 2012

Setting Tanggal Jam di Linux

-----------------------------------------------------------------
*** PERINTAH SETTING TANGGAL JAM DI LINUX ***
-----------------------------------------------------------------
1. sudo date nnddhhmmyyyy.ss
    Keterangan:
      nn adalah dua digit untuk bulan (misal agustus, maka nn = 08)
      dd adalah dua digit untuk tanggal (misal tgl 11, maka dd = 11)
      hh adalah dua digit untuk jam (misal jam 03 sore, maka hh = 15)
      mm adalah dua digit untuk menit (misal menit ke-22, maka mm = 22)
      yyyy adalah empat digit untuk tahun (misal tahun 2011, maka yyyy = 2011)
      ss adalah dua digit untuk detik (misal detik ke-55, maka ss = 55)
    Jadi misalnya saya ingin merubah waktu menjadi tanggal 11 Agustus 2011, pukul 15:22:55.
    Maka saya akan mengetikkan perintah:

     sudo date 081115222011.55

    Kemudian check kembali apakah sudah benar atau belum dengan mengetikkan:
     date
    Jika sudah benar dengan tanggal dan waktu sekarang

2. Setting Waktu BIOS/hardware agak unik,
    karena hanya bisa dilihat oleh user dengan privilege setingkat root.
    Artinya di Ubuntu dan BlankOn harus menggunakan sudo untuk menjalankan perintah ini:
     hwclock
    Distro CentOS, RedHat, dan Debian kemungkinan besar juga harus dieksekusi dengan absolute path.
     /sbin/hwclock
     atau
    /usr/sbin/hwclock
 
   Ingat perintah di atas harus dijalankan sebagai root.
   Lalu coba perhatikan, kalau tidak cocok berarti ada perbedaan (ya ya lah ).
   Perhatikan dengan seksama, karena mungkin saja kelihatan berbeda padahal sama.
   Loh kok bisa? Mungkin saja waktu di sistem Linux pake sistem 24 jam,
   sedangkan di BIOS pake waktu 12 jam.
   Hehe.. Bila memang benar ada ketidakcocokan, kita harus menyinkronkan.
   Caranya juga gampang, yang penting ada akses root.
   Kalau jam/waktu di sistem operasi Linux yang benar maka jalankan perintah berikut:
     hwclock --systohc
   Jikalau sebaliknya, maka ganti perintah di atas menjadi:
     hwclock --hctosys

Rabu, 03 Oktober 2012

MySQL - Membuat procedure untuk kompare table

Pernah aku mampir ke blog seseorang tp aku lupa alamatnya, dia membuat sebuah script procedure untuk melakukan compare ke beberapa table yang ada di MySQL. Berikut procedurenya:


USE mysql;
/* ----------------------------------
   Procedure structure for xp_execute
   ---------------------------------- */

DROP PROCEDURE IF EXISTS `xp_execute`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `xp_execute`(vqueryddl longtext)
begin
 set @ssql = vqueryddl;
 prepare query from @ssql;
 execute query;
end;;
DELIMITER ;

/* -------------------------------------------
-- Procedure structure for xp_routines_compare
   ------------------------------------------- */
DROP PROCEDURE IF EXISTS `xp_routines_compare`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `xp_routines_compare`(v_namadatabase1 varchar(255), v_namadatabase2 varchar(255))
BEGIN
DROP VIEW IF EXISTS __db1;
SET @sql = CONCAT('
CREATE VIEW __db1 AS
select
 r.`db` as nama_database,
 r.`type` as tipe_routine,
 r.`name` as nama_routine,
 r.`param_list` as parameter_routine,
 r.`body` as isi_routine,
 r.`returns` as nilai_balik
from mysql.proc as r
where
 r.db = "',v_namadatabase1,'"
with check option');
call xp_execute(@sql);

DROP VIEW IF EXISTS __db2;
SET @sql = CONCAT('
CREATE VIEW __db2 AS
select
 r.`db` as nama_database,
 r.`type` as tipe_routine,
 r.`name` as nama_routine,
 r.`param_list` as parameter_routine,
 r.`body` as isi_routine,
 r.`returns` as nilai_balik
from mysql.proc as r
where
 r.db = "',v_namadatabase2,'"
with check option');
call xp_execute(@sql);

select db1.nama_routine as routine_yg_berbeda,
 TRIM(CONCAT
   (  IF(strcmp(LCASE(REPLACE(REPLACE(db1.parameter_routine,CHAR(32),''),CHAR(13),'')
),LCASE(REPLACE(REPLACE(db2.parameter_routine,CHAR(32),''),CHAR(13),'')))
<> 0,'PARAMETER',''),' ',
      IF(strcmp(LCASE(REPLACE(REPLACE(db1.isi_routine,CHAR(32),''),CHAR(13),'')),
LCASE(REPLACE(REPLACE(db2.isi_routine,CHAR(32),''),CHAR(13),''))) <> 0,'BODY',''),' ',
      IF(strcmp(LCASE(REPLACE(REPLACE(db1.nilai_balik,CHAR(32),''),CHAR(13),'')),
LCASE(REPLACE(REPLACE(db2.nilai_balik,CHAR(32),''),CHAR(13),''))) <> 0,'RETURN',''),' '
   )) as letak_perbedaan
from __db1 as db1 JOIN __db2 as db2
where db1.nama_routine = db2.nama_routine and
  (strcmp(LCASE(REPLACE(REPLACE(db1.parameter_routine,CHAR(32),''),CHAR(13),'')),
LCASE(REPLACE(REPLACE(db2.parameter_routine,CHAR(32),''),CHAR(13),''))) <> 0
   or strcmp(LCASE(REPLACE(REPLACE(db1.isi_routine,CHAR(32),''),CHAR(13),'')),
LCASE(REPLACE(REPLACE(db2.isi_routine,CHAR(32),''),CHAR(13),''))) <> 0
   or strcmp(LCASE(REPLACE(REPLACE(db1.nilai_balik,CHAR(32),''),CHAR(13),'')),
LCASE(REPLACE(REPLACE(db2.nilai_balik,CHAR(32),''),CHAR(13),''))) <> 0  )
UNION ALL
select db1.nama_routine as routine_yg_berbeda, CONCAT('routines baru di db : ',v_namadatabase1) as letak_perbedaan
from __db1 as db1
where db1.nama_routine not in (select db2.nama_routine from __db2 as db2)
UNION ALL
select db2.nama_routine as routine_yg_berbeda, CONCAT('routines baru di db : ',v_namadatabase2) as letak_perbedaan
from __db2 as db2
where db2.nama_routine not in (select db1.nama_routine from __db1 as db1)
ORDER BY routine_yg_berbeda ASC;

DROP VIEW IF EXISTS __db1;
DROP VIEW IF EXISTS __db2;

END;;
DELIMITER ;

MySQL - Membuat script bat untuk proses dump database MySQL


set @path_backup = 'D:\\backup\\';
set @sv_host = 'localhost';
set @sv_port = '3306';
set @sv_uname = 'root';
set @sv_pwd = 'upie';

select * into outfile 'D:\\script_batch_mysqldump.bat'
lines terminated by '\n'
from
(
select concat('mysqldump --host=',@sv_host,' --port=',@sv_port,' -u',@sv_uname,' -p',@sv_pwd,' --add-drop-table --max_allowed_packet=1GB --routines --triggers --quote-names -E --no-data ', db.schema_name ,' > ',@path_backup, 'structure_',db.schema_name,'.sql') as syntax from information_schema.schemata as db where db.schema_name not in ('information_schema','mysql','test')

union

select concat('mysqldump --host=',@sv_host,' --port=',@sv_port,' -u',@sv_uname,' -p',@sv_pwd,' --add-drop-table --extended-insert --hex-blob --max_allowed_packet=16GB --lock-tables --no-create-db --no-create-info --quote-names --order-by-primary --dump-date ',db.schema_name,' > ',@path_backup, 'data_', db.schema_name,'.sql') as syntax from information_schema.schemata as db where db.schema_name not in ('information_schema','mysql','test')
) as script;

MySQL - Delete table menggunakan inner join


DELETE a
from t_gaji as a inner join t_pegawai as b on a.nik=b.nik
WHERE a.periode='201206' and b.departemen='OUTSOURCING' and b.penempatan_kerja='BALARAJA';

MySQL - Merubah nama hari dari format eng ke dalam format indonesia

Select DATE_FORMAT(tanggal, "%W") AS `Nama_Hari_Eng`
        , CASE DAYOFWEEK(tanggal)
                WHEN 1 THEN 'Minggu'
                WHEN 2 THEN 'Senin'
                WHEN 3 THEN 'Selasa'
                WHEN 4 THEN 'Rabu'
                WHEN 5 THEN 'Kamis'
                WHEN 6 THEN 'Jumat'
                WHEN 7 THEN 'Sabtu'
          END AS `Nama_Hari_ID`
from t_transaksi;