[NOTED] Jangan Pernah Gunakan Nama ‘key’ Sebagai Nama Kolom di MySQL

Dasar noob, sempat dibuat pusing karena query yang saya tulis di mysql console selalu error, setelah browsing sebentar baru tahu kalau nama kolom yang saya gunakan, yakni ‘key’ adalah reserved keyword yang sebaiknya dihindari penggunaannya di MySQL.

Untung masih bisa diatasi dengan menambahkan tanda ` (backtick), sehingga query menjadi seperti berikut:

update table set `key`=1 where id=10;

Meski bisa diatasi, ini tetap bukan best practices, so jangan pernah ulangi kesalahan yang sama, cari tahu reserved keyword di MySQL sebelum membuat nama kolom.

Advertisements

Mengubah Jam Server ke Jam Lokal

Mungkin judul inggrisnya “how to convert server time to local time zone?”. Yak kurang lebih begitu… Bagaimana caranya?

import arrow
import pytz
from datetime import datetime

def to_local_tz(s):
    """Convert UTC to local timezone (Asia/Jakarta)."""
    try:
        dt_str = datetime.strftime(s, "%Y-%m-%d %H:%M:%S")
        dt_arr = arrow.Arrow.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
        return dt_arr.to("Asia/Jakarta").naive
    except Exception as e:
        pass

Selamat mencoba…

Setting MySQL 5.7 Remote Access Ubuntu 16.04

Sunting berkasĀ /etc/mysql/mysql.conf.d/mysqld.cnf

sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf

cari baris bind-address = 127.0.0.1

ganti ke

bind-address = 0.0.0.0
sudo service mysql restart
netstat -an|grep 3306 | grep LISTEN
# output
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN

login dari localhost:

mysql -h xxx.xxx.xxx.xxx --port=3306 -u root -p

Set Blank Password di MySQL (Development)

Ingat ya, ini cuma untuk kebutuhan local alias development aja…

Kalau sebelumnya harus pakai sudo baru bisa masuk ke mysql console, sekarang bisa menggunakan user biasa, caranya:

  1. First, connect in sudo mysql
    sudo mysql -u root
    
  2. Check your accounts present in your db
    SELECT User,Host FROM mysql.user;
    +------------------+-----------+
    | User             | Host      |
    +------------------+-----------+
    | admin            | localhost |
    | debian-sys-maint | localhost |
    | magento_user     | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    
  3. Delete current root@localhost account
    mysql> DROP USER 'root'@'localhost';
    Query OK, 0 rows affected (0,00 sec)
    
  4. Recreate your user
    mysql> CREATE USER 'root'@'%' IDENTIFIED BY '';
    Query OK, 0 rows affected (0,00 sec)
    
  5. Give permissions to your user (don’t forget to flush privileges)
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
    Query OK, 0 rows affected (0,00 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0,01 sec)
    
  6. Exit MySQL and try to reconnect without sudo.

Cara Install MySQL di Kali Linux 2017.2 (Rolling)

Entah kenapa kok ketika di ketik

sudo apt install mysql-

Kemudian tekan tab, gak muncul mysql-server. Mentang-mentang distro pentest kemudian gak butuh mysql gitu apa? Hehehehe… just kidding…. Mungkin karena versi light yang saya install, sehingga repo ke mysql tidak disertakan. Tapi jangan khawatir, masih bisa diatasi kok. Begini caranya:

Download tools dari laman URL berikut:

https://dev.mysql.com/downloads/repo/apt/

install menggunakan

sudo dpkg -i <paket_name>

kemudian update

sudo apt update

Setelah itu

sudo apt install mysql-server

Beres….

 

 

MySQL di Python3

1200px-MySQL.svg

Jarang banget saya menggunakan engine database yang satu ini, seringnya menggunakan engine NoSQL seperti mongo. Namun, kali ini beda, karena project ini tuntutan klien, dan klien familiar dengan MySQL ya sudah…

Di sini saya menggunakan Python3, library yang saya butuhkan:

  • mysqlclient
  • sqlalchemy
  • sqlalchemy_utils

Saya menggunakan ORM (sqlalchemy) untuk mempermudah kerja, daripada harus menulis raw query syntax, so painful…

Berikut ini contoh kode membuat database dan tabel:

from sqlalchemy import create_engine, MetaData
from sqlalchemy_utils import database_exists, create_database
from sqlalchemy import Column, DateTime, String, Integer, func
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

# create db if not exist
engine = create_engine("mysql://root:@localhost/subdhunter")
if not database_exists(engine.url):
    create_database(engine.url)

# create db model
class Domain(Base):
    __tablename__ = 'domain'
    id= Column(Integer, primary_key=True)
    domain_name = Column(String(100))
    domain_title = Column(String(250))
    domain_status = Column(Integer)
    real_domain_name = Column(String(100))
    created = Column(DateTime, default=func.now())

# create table
from sqlalchemy.orm import sessionmaker
session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)

sdasd

Beralih ke Kali Linux

Peralihan ini sekaligus penanda mulainya belajar tentang cyber security, sebuah tema yang hampir tidak pernah saya sentuh, meski sudah bertahun-tahun menekuni dunia web programming. Distro Kali Linux ini berbasis Debian, jadi beberapa basic command hampir sama dengan Ubuntu.

Sempat gagal menginstall menggunakan GNOME version dan Mate version (corrupt iso), akhirnya berhasil dengan menggunakan Lite version (XFCE). Untuk tools-tools yang ada belum bisa cerita banyak karena memang masih nol di dunia ini. Nanti seiring dengan proses belajar, insyaAllah akan saya post materi-materi yang sekiranya cukup penting.

Sekian…

Rasakan Kecepatan Firefox Quantum Versi Beta

Hari ini, tim pengembang Firefox mengumumkan versi Beta dari Firefox Quantum, versi terbaru dari Firefox yang diklaim memiliki kinerja jauh lebih cepat dari versi-versi sebelumnya. Bagaimana bisa lebih cepat? Kalau sebelumnya Firefox menggunakan hanya satu CPU core, sekarang Firefox Quantum memanfaatkan multiple CPU core yang sekarang lumrah dijumpai di berbagai mesin baik desktop maupun mobile.

Kalau mau lebih yakin, silakan lakukan uji menggunakan Speedometer 2.0