Thursday, April 5, 2018

MySQL (MariaDB) ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Seven - Setelah saya menginstall MariaDB Server serta phpmyadmin pada Xubuntu 16.04. Saat hendak login via phpmyadmin saya mendapatkan pesan error "ERROR 1698 (28000): Access denied for user 'root'@'localhost'".

Ketika saya coba login ke MariaDB Server via console terminal dengan user "root" bisa login, lalu saya coba login kembali via phpmyadmin dan hasilnya tetap sama.

Setelah googling akhirnya saya menemukan pencerahan. Berdasarkan dokumentasi, MariaDB Server 10 secara default pada installasi baru MariaDB Server, user "root" tidak ter-set password dan authentikasi menggunakan unix socket sehingga hanya bisa login dengan user root dari lokal saja.

Pada dokumentasi juga dijelaskan bahwa sebaiknya tidak menghapus user "root" meskipun tidak ada password yang di set. Plugin unix_auth memastikan bahwa hanya bisa menjalankan user root dari lokal.

Solusi supaya tetap bisa login via phpmyadmin adalah dengan membuat user baru selain root yang digunakan untuk administrasi MariaDB Server.

Cara membuat user pada MariaDB Server sebagai berikut:

1. Login  MySQL/MariaDB via console terminal lokal dengan user "root"
sudo mysql -u root
2. Setelah masuk ke mysqld prompt
CREATE USER 'namauser'@'localhost' IDENTIFIED BY 'password';
namauser = nama user baru yang akan dibuat
localhost = host name localhost user baru hanya dapat login dari lokal, jika ingin login dari host lain bisa diganti dengan ip address atau range ip address dengan "base_ip/netmask" atau jika ingin bisa login dari semua host gunakan "%"
password = password yang akan digunakan oleh user baru untuk login

3. Memberikan hak akse ke user baru
GRANT ALL PRIVILEGES ON * . * TO 'namauser'@'localhost';
Karakter bintang pada command diatas mengacu ke database dan tabel. Bintang mengindikasikan bahwa user baru diijinkan untuk membaca, mengubah, mengeksekusi, dan melakukan semua pekerjaan ke semua database dan tabel. Jika ingin spesifik ke database dan tabel tertentu ganti karakter bintang dengan nama database dan tabel.

4. Setelah membuat dan memberi hak akses user baru kita harus mereload privilieges supaya perubahan yang kita buat berlaku.
FLUSH PRIVILEGES;

Bagaimana cara memberikan hak akses berbeda ke user?

Berikut daftar singkat hak akses umum yang dapat diberikan ke user.

ALL PRIVILEGES- seperti yang kita lihat sebelumnya, ini akan memungkinkan akses penuh pengguna ke database yang ditunjuk (atau jika tidak ada database yang dipilih, akses global di seluruh sistem)
CREATE- mengijinkan membuat database
DROP- mengijinkan menghapus database atau tabel
DELETE- mengijinkan menghapus baris dari tabel
INSERT- mengijinkan memasukkan baris pada tabel
SELECT- mengijinkan menggunakan perintah SELECT untuk membaca database
UPDATE- mengijinkan memperbarui baris tabel
GRANT OPTION- mengijinkan user untuk bisa memberikan/menghapus hak akses user lain

Contoh:
1. Memberikan hak akses
GRANT tipe_hak_akses ON nama_database.nama_table TO ‘namauser’@'localhost’;
2. Menghapus hak akses
REVOKE tipe_hak_akses ON nama_database.nama_table TO ‘namauser’@'localhost’;
Kita bisa melihat hak akses user jika ingin mereview hak akses pengguna
SHOW GRANTS namauser;
Menghapus user hampir sama dengan menghapus database
DROP USER ‘namauser’@‘localhost’;
NB: Pastikan untuk mereload privilieges supaya perubahan yang kita buat berlaku.

Referensi:
MariaDB Documentation
Super User Q&A
Digital Ocean Community

Script Python Untuk Mengecek Bilangan Prima

Source: python.org


Seven - Berikut adalah contoh skrip program python yang berfungsi untuk mengecek suatu bilangan apakah bilangan yang dimasukkan termasuk ke dalam bilangan prima. Dalam contoh ini saya menggunakan python versi 3.

def is_prime(x):
    # hanya bilangan positif yang diijinkan dan bilangan prima terkecil adalah 2
    if (x > 1):
        # Karena bilangan prima terkecil adalah 2, kita mulai pembagi di 3
        divisor = 2
        # Karena bilangan yang dimasukkan selalu bisa dibagi dengan bilangan itu sendiri
        # kita bisa menggunakan range function untuk mengatur range yang benar
        for i in range(divisor,x):
            if (x % i) == 0:
                return False
    else:
        return False
    return True
print (is_prime(int(input("Bilangan:"))))

Script Python Untuk Mencari Faktorial Suatu Bilangan

Source: python.org


Seven - Berikut adalah contoh script python untuk mencari faktorial suatu bilangan. Dalam contoh ini saya menggunakan python versi 3.


def factorial(x):
    produk = 1 
    for i in range(x): 
        produk = produk * (i + 1) 
    return produk
print (factorial(int(input("Factorial:"))))


Script Python Untuk Membalik Kata

Seven - Python adalah bahasa pemrograman interpretatif multiguna dengan filosofi perancangan yang berfokus pada tingkat keterbacaan kode. Python diklaim sebagai bahasa yang menggabungkan kapabilitas, kemampuan, dengan sintaksis kode yang sangat jelas, dan dilengkapi dengan fungsionalitas pustaka standar yang besar serta komprehensif. Wikipedia

Contoh Script Python Untuk Membalik Kata, dalam contoh ini saya menggunakan python versi 3.

def balikan(teks):
    balik=""
    for i in teks:
        balik=i+balik
    return balik
print(balikan(str(input("Teks:"))))

Copy + paste script diatas ke editor favorit Anda, lalu simpan dengan ekstensi .py seperti balik-kata.py. Kemudian jalankan script diatas via console (saya menggunakan OS Ubuntu) seperti gambar dibawah ini:

Solusi Masalah NginX: 413 Request Entity Too Large Error

Seven - Apakah Anda pernah mengalami error '413 Request Entity Too Large Error' pada NginX ketika mencoba upload file yang berukuran besar?



Error '413 Request Entity Too Large Error'  pada NginX muncul dikarenakan ukuran file yang diupload melebihi batas maksimal default 'client_max_body_size' pada web server NginX, yaitu sebesar 1 MB.

Instruksi client_max_body_size menetapkan ukuran maksimal permintaan klien yang diterima, ditunjukkan oleh baris 'Content-Length' pada header permintaan. Jika ukurannya melebihi dari batas yang sudah ditentukan, maka klien akan mendapatkan error '413 Request Entity Too Large'.

Solusi Mengatasi Error '413 Request Entity Too Large Error'


Solusi untuk mengatasinya adalah dengan mengubah konfigurasi NginX dan menyesuaikan client_max_body_size sesuai dengan kebutuhan. Berikut langkah-langkahnya:

Pertama login sebagai root ke server Anda (Saya menggunakan OS Ubuntu) lalu edit file 'nginx.conf' menggunakan teks editor (saya menggunakan nano)
# nano /etc/nginx/nginx.conf
Kemudian pada bagian http atau server atau location (sesuaikan dengan kebutuhan) tambahkan baris berikut ini untuk menambah batasan pada nginx.conf:
# setting client_max_body_size ke 5M#
client_max_body_size 5M;



Simpan file dan tutup teks editor serta reload web server NginX:
nginx -s reload 
atau
service nginx reload
atau
/etc/init.d/nginx reload
 NB: Sesuaikan client_max_body_size dengan kebutuhan Anda.

Semoga bermanfaat. Terimakasih

Script PHP Koneksi Database MySQL/MariaDB

Seven - Contoh script PHP untuk membuat koneksi database MySQL/MariaDB.

Fungsi Header PHP

Seven - Fungsi header() pada bahasa pemrogramman PHP berfungsi untuk mengirim data mentah header HTTP.

Ingat! Fungsi header() harus dipanggil sebelum keluaran lainnya dikirim, baik itu hanya baris kosong dalam berkas, tag HTML biasa atau dari PHP. Dan ini adalah kesalahan yang sangat umum terjadi pada kode dengan fungi include atau require, function atau fungsi akses berkas lainnya. Lihat >> PHP: header - Manual untuk informasi lebih lanjut.

Contoh:



Contoh diatas akan menghasilkan error karena ada tag HTML yang dipanggil sebelum fungsi header().

Parameter:

string

Ada 2 kasus khusus pemanggilan header.

Pertama adalah sebuah header yang dimulai dengan string "HTTP/" (kasus ini tidak begitu signifikan), yang akan digunakan untuk mencari tahu kode status HTTP untuk dikirim. Contoh:



Kode diatas digunakan untuk menangani request berkas yang tidak ada/tidak ditemukan dan akan mengirimkan kode status HTTP 404.

Kedua adalah header "Location:". Tidak hanya mengirim header ini kembali ke browser, tapi juga mengembalikan kode status REDIRECT (302) ke browser terkecuali jika kode status 201 atau 3xx sudah diset sebelumnya.



Kode diatas akan mengirimkan kode status REDIRECT (302) ke browser dan akan di redirect ke https://www.seven.web.id/.

replace

Parameter replace mengindikasikan apakah header yang dikirim harus mengganti header serupa yang sudah dikirim sebelumnya, atau menambahkan header kedua dari tipe yang sama. Secara default akan menggantikan header yang sebelumnya, tapi jika menambahkan FALSE sebagai argumen kedua maka dapat memaksa beberapa header dengan tipe yang sama.

Contoh:

http_response_code

Memaksa kode respon HTTP ke nilai yang ditentukan. Perhatian! Parameter ini hanya akan memiliki efek jika string tidak kosong.

Referensi:

http://php.net/manual/en/function.header.php

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/understanding-http-authentication

Sunday, April 1, 2018

Lirik lagu Sawangen - Tasya Rosmala


Seven - Lirik lagu Sawangen - Tasya Rosmala

Title: Sawangen
Artist: Tasya Rosmala
Songwriter: Ali PX
Record label: ONE NADA Record

Opo aku kurang gati
Apo aku iki kurang sayang
Katone tresnomu ngambang
Katone atimu bimbang

Sing tak jaluk mung atine
Yen tresnoku mung karo kowe
Ora ono liyane
Ning atiku mung ono kowe

Haaa... Haaa... Haaa...

Sawangen kae sawangen
Mbulan ra kiro ninggalne bumine
Sawangen kae sawangen
Lintang ra kiro ninggalno langite

Koyo gati ku ning kowe
Koyo sayangku ning kowe
Selawase mung karo kowe

Opo aku kurang gati
Apo aku iki kurang sayang
Katone tresnomu ngambang
Katone atimu bimbang

Sing tak jaluk mung atine
Yen tresnoku mung karo kowe
Ora ono liyane
Ning atiku mung ono kowe

Haaa... Haaa... Haaa...

Sawangen kae sawangen
Mbulan ra kiro ninggalne bumine
Sawangen kae sawangen
Lintang ra kiro ninggalno langite

Koyo gati ku ning kowe
Koyo sayangku ning kowe
Selawase mung karo kowe

Sawangen kae sawangen
Mbulan ra kiro ninggalne bumine
Sawangen kae sawangen
Lintang ra kiro ninggalno langite

Koyo gati ku ning kowe
Koyo sayangku ning kowe
Selawase mung karo kowe

Koyo gati ku ning kowe
Koyo sayangku ning kowe
Selawase mung karo kowe

Lirik Lagu Banyu Langit - Didi Kempot

Seven - Lirik Lagu Banyu Langit - Didi Kempot

Title: Banyu Langit
Artist: Didi Kempot
Songwriter: Didi Kempot
Record label: Suara Musik Buana (sumbu record)


Sworo angin, angin sing ngreridu ati
Ngelingake sliramu sing tak tresnani
Pingin nangis ngetokke eluh neng pipi
Suwe ra weruh senajan mung ono ngimpi
Ngalemo, ngalem neng dodoku
Tambanono roso kangen neng atiku
Ngalemo, ngalemo neng aku
Ben ra adem kesiram udaning dalu

Banyu langit sing ono nduwur khayangan
Watu gedhe kalingan mendunge udan
Telesono atine wong sing kasmaran
Setyo janji seprene tansah kelingan

Ademe gunung merapi purba
Melu krungu swaramu ngomongke opo
Ademe gunung merapi purba
Sing neng Nglanggeran Wonosari Yogjokarto

Janjine lungane ra nganti suwe suwe
Pamit esuk lungane ra nganti sore
Janjine lungo ra nganti semene suwene
Nganti kapan tak enteni sak tekane

Udan gerimis teles ono klambi iki
Jroning dodo ben ra garing ngekep janji
Ora lamis gedhening nggonku nresnani
Nganti kapan aku ora biso lali

Ademe gunung merapi purbo
Melu krungu suaramu ngomongke opo
Ademe gunung merapi purbo
sing neng Nglanggeran Wonosari Yogjokarto

Janjine lungane ra nganti suwe suwe
Pamit esuk lungane ra nganti sore
Janjine lungo ra nganti semene suwene
Nganti kapan tak enteni sak tekane

Friday, January 19, 2018

Forwarding Dengan Fitur NAT Mikrotik

Seven - Ketika ada karyawan atau staf yang bersifat mobile atau sedang berdinas ke luar dan membutuhkan akses data yang ada pada server tetapi server berada pada jaringan lokal. Maka kita perlu membuat supaya server tersebut bisa di akses dari jaringan publik. Cara paling sederhana adalah dengan memasang langsung ip publik ke server kita. Akan tetapi cara tersebut akan menimbulkan masalah ketika kita hanya memiliki satu ip publik dan komputer lain pada jaringan lokal kita juga memerlukan koneksi internet. Masalah lainnya adalah manajemen keamanan untuk traffic yang menuju ke server tersebut.

Dengan menggunakan mikrotik, kebutuhan tersebut bisa diatasi dengan cara port forwading menggunakan fitur NAT. Maka bandwidth bisa di manage dan firewall filtering juga bisa dilakukan, kita tempatkan server dibawah router mikrotik. Artinya, server berada pada jaringan lokal kita, contoh topologi :


Hampir sama dengan postingan saya sebelumnya yaitu Membangun Firewall DMZ Sederhana di Mikrotik akan tetapi postingan kali akan menjelaskan beberapa hal yang sebelumnya belum dijelaskan.

Langsung saja ke poin utama...

Supaya server bisa diakses dari publik, kita set fowarding di router mikrotik dengan fitur firewall NAT. Fowarding ini akan membelokkan traffic yang menuju ke IP publik yang terpasang di router menuju ke IP lokal server. Seakan-akan client dari internet berkomunikasi dengan server meminjam IP publik router mikrotik. Langkah pembuatan rule, masuk ke menu IP --> Firewall --> klik tab "NAT", tambahkan rule baru dengan klik tombol "add" atau tanda "+" berwarna biru di winbox.


*Tips: jika tidak yakin dengan port dan protokol yang digunakan oleh server, bisa di kosongkan terlebih dahulu. Dengan begitu, maka semua traffic akan difoward ke server. Jika setelah dicoba NAT sudah berhasil, baru kemudian kita tentukan protokol dan port yang harus di foward ke server.

Dengan konfigurasi seperti diatas, rule fowarding dengan NAT sudah selesai. Tapi jika kita memiliki lebih dari satu ip publik, kita membutuhkan satu rule lagi. Yaitu, rule yang difungsikan untuk mengarahkan traffic respon dari server ke jalur yang sama dengan traffic request. Misal request dari IP publik A, maka respon dari server juga harus keluar dari IP publik A. Jika ternyata traffic respon keluar dari IP publik B, maka traffic tersebut tidak dikenali oleh cilent yang mencoba mengakses server. Rule yang harus dibuat seperti berikut :


Dan rule NAT untuk fowarding sudah selesai. Jika kita memiliki lebih dari satu server sedangkan kita hanya memiliki satu IP publik saja, bisa kita foward berdasarkan port. Misal untuk server A dapat diakses melalui port 8080, kemudian server B melalui port 8090. Saat router menerima koneksi dari port 8080, maka koneksi akan diteruskan ke Server A, begitu juga saat router menerima koneksi dari port 8090, maka akan diteruskan ke server B. Sekarang coba akses server dari jaringan publik menggunakan ip publik yang terpasang di mikrotik.

Hairpin NAT


Kemudian kira - kira apakah bisa server diakses dari jaringan Lokal menggunakan ip publik di mikrotik tadi? Jawabannya adalah tidak. Lalu kenapa ?
Karena pada saat diakses dari jaringan publik, misal client memiliki IP Public 3.4.5.6, maka aliran trafficnya akan seperti berikut:


Dari aliran data diatas, ketika Server diakses dari jaringan publik data bisa dikirim dengan baik oleh router. Tetapi berbeda, jika diakses dari jaringan Lokal, misal client memiliki IP Address 172.16.15.2, maka aliran data akan menjadi seperti berikut :


Yang terjadi adalah server akan langsung mengirim traffic respon ke client tanpa melewati router, karena source address ada dan dikenali di jaringan Server (masih dalam 1 segmen IP). Traffic respon yang dikirim dari server akan ditolak oleh client, karena sebelumnya client me-request ke router mikrotik terlebih dahulu, bukan langsung ke Server. Client hanya mau menerima respon dari ip yang sebelumnya dituju, yakni 10.9.8.2. Nah solusinya adalah dengan menambahkan Rule NAT untuk traffic dari Lokal menuju Server.


Rule NAT diatas akan mengubah source ip address yang sebelumnya adalah ip komputer client, digantikan dengan ip router Mikrotik ketika data diteruskan dari router Mikrotik ke server. Maka server akan mengirimkan data respon ke router Mikrotik, bukan langsung ke komputer client. Dengan rule nat baru tersebut, maka aliran data akan menjadi seperti berikut :


Dengan begitu, client dari jaringan lokal bisa mengakses ke Server dengan IP publik yang terpasang di router Mikrotik. Konfigurasi diatas disebut dengan Hairpin NAT.

Wednesday, January 17, 2018

Membuat Halaman Sitemap Di Blogspot

Seven.web.id sitemap

Seven - Halo sobat semua, pada postingan kali ini saya akan berbagi cara Membuat Halaman Sitemap Di Blogspot.
Sitemap bila di alih bahasa ke bahasa Indonesia menjadi peta situs. Atau lebih mudahnya sitemap merupakan daftar isi blog.

Sitemap dibuat bertujuan untuk memudahkan pengunjung blog untuk melihat isi dari blog kita. Sama seperti dengan buku, kita bisa memiliki sedikit gambaran dari melihat daftar isinya, nah jika pada situs/blog adalah dengan melihat sitemap/peta situs maka pengunjung bisa memiliki sedikit gambaran tentang isi blog kita.

Mari mulai...
Pertama, setelah sobat login di dasbor blogger, masuk ke menu 'Halaman' dan buatlah halaman baru. Kenapa kita membuat sitemap pada halaman bukan posting? Karena jika kita membuat sitemap pada posting maka sitemap akan muncul sebagai artikel baru. Maka supaya tidak menjadi postingan artikel baru maka kita buat pada halaman baru.

Kedua, setelah tampil halaman editing halaman baru buat judul halaman baru untuk sitemap blog kita. Misalnya kita isi judul dengan 'Sitemap' buat judul yang simple dan bisa menunjukkan bahwa halaman tersebut halaman sitemap dan judul halaman tersebut akan membentuk url halaman sitemap blog kita.

Ketiga, pada menu pilih HTML bukan Compose karena kita akan memasukkan kode javascript kemudian copy + paste kode dibawah pada kolom editor.
* cari url-blog.blogspot.com kemudian ganti dengan url blog sobat.
Kemudian publikasikan halam baru yang kita buat. Selanjutnya sobat bisa menambahkan menu sitemap pada menu di blog dengan mengarahkan ke url sitemap yang kita buat tadi supaya mudah diakses oleh pengunjung.

Mudahkan membuat sitemap untuk blog kita?
Semoga artikel cara Membuat Halaman Sitemap Di Blogspot bermanfaat bagi sobat semua.
Happy blogging!