Tampilkan postingan dengan label Database. Tampilkan semua postingan
Tampilkan postingan dengan label Database. Tampilkan semua postingan

05 April 2018

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

SN Blog - 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

17 Juli 2017

Mengamankan MariaDB Server

SN Blog - Setelah anda menginstall MariaDB Server, hal yang direkomendasikan bahkan wajib dilakukan adalah mengamankan MariaDB Server Anda. Terutama jika digunakan dalam lingkungan produksi. Mengamankan server database MariaDB sangat mudah dilakukan. Dalam kasus saya, saya menggunakan OS Ubuntu Server. Untuk OS lainnya silahkan menyesuaikan.

Berikut langkah-langkah mengamankan server database MariaDB:

  1. Buka Terminal lalu jalankan perintah berikut "sudo mysql_secure_installation". (tanpa tanda kutip)
  2. Anda akan diminta memasukkan password root saat ini untuk melanjutkan. Tekan tombol enter jika tidak ada.
  3. Langkah selanjutnya Anda akan ditanya apakah Anda akan mengubah password root atau tidak. Ketik "Y" (tanpa tanda kutip) lalu enter untuk mengganti password root atau ketik "n" lalu enter untuk melewatinya tanpa mengganti password root.
  4. Selanjutnya adalah menghapus pengguna anonim. Ketik "Y" (tanpa tanda kutip) lalu enter untuk menghapus pengguna anonim atau ketik "n" lalu enter untuk tidak menghapus pengguna anonim. Sangat direkomendasikan untuk menghapus pengguna anonim!
  5. Pada langkah ini Anda akan ditanya untuk melarang pengguna root login ke server database MariaDB secara remot. Ketik "Y" (tanpa tanda kutip) lalu enter untuk melarang user root login via secara remot atau ketik "n" lalu enter untuk mengijinkan pengguna root login secara remot. Sangat direkomendasikan untuk melarang pengguna root login secara remot!
  6. Langkah selanjutnya adalah menghapus database "test" beserta hak akses ke database "test". Secara default ketika menginstall MariaDB database bernama "test" juga akan dibuat dan semua pengguna dapat mengaksesnya. Ketik "Y" (tanpa tanda kutip) lalu enter untuk menghapus database "test" beserta hak akses ke database "test". Sangat direkomendasikan untuk menghapus database "test", terutama jika digunakan dalam lingkungan produksi.
  7. Selanjutnya adalah memuat ulang tabel hak akses untuk memastikan perubahan yang dilakukan akan langsung diterapkan. Ketik "Y" (tanpa tanda kutip) lalu enter untuk memuat ulang tabel hak akses.
Berikut gambar langkah-langkah mengamankan server database MariaDB:

Securing MariaDB Installation.


Tentunya langkah-langkah diatas belum sepenuhnya membuat server database MariaDB Anda aman, diperlukan pemahaman pengetahuan lebih lanjut tentang keamanan cyber/cyber security Anda bisa berkonsultasi dengan ahli IT yang Anda percaya untuk melakukannya. Semoga bermanfaat.

30 April 2017

Rumus-Rumus Dalam MySQL

SN Blog - Rumus-Rumus Dalam Mysql


1. Fungsi Agregaris/Agregates


  • AVG


Menghitung rata-rata dari suatu kolom tertentu yang telah didefinisikan dalam perintah select.
Sintak :
SELECT AVG nama_kolom FROM nama_tabel [WHERE]
Contoh:
SELECT AVG (nilai) FROM mata_pelajaran


  • COUNT

Untuk menghitung jumlah baris dalam tabel.
Sintak :
SELECT COUNT nama_kolom FROM nama_tabel [WHERE]
Contoh :
SELECT COUNT (*) FROM siswa
SELECT COUNT (mata_pelajaran) FROM jadwal


  • MAX


Untuk mengetahui nilai terbesar dari sebuah kolom tertentu dalam perintah select.
Sintak :
SELECT MAX (nilai) FROM mata_pelajaran


  • MIN

Untuk mengetahui nilai terkecil dari sebuah kolom tertentu dalam perintah select
Sintak :
SELECT MIN nama_kolom FROM nama_tabel [WHERE]
Contoh :
SELECT MIN (nilai) FROM mata_pelajaran


  • SUM

Untuk menjumlah suatu kolom tertentu yang telah didefinisikan dalam perintah select.
Sintak :
SELECT SUM (nama_kolom)FROM nama_tabel [WHERE = KONDISI]
Contoh :
SELECT SUM (nilai) From mata_pelajaran

2. Fungsi Waktu


  • GETDATE

Untuk menampilkan tanggal sekarang
Contoh :
SELECT GATEDATE()


  • DATEADD

Untuk menambah jumlah hari ,tanggal atau tahun yang ditentukan
Sintak :
DATEADD(datepart,jumlah,tanggal)
Contoh :
SELECT DATEADD(day,10,getdate())
SELECT DATEADD(Month,10,getdate())
SELECT DATEADD(year,10,getdate())


  • DATEDIFF

Untuk mengetahui rentan waktu (bias hari,bulan,tahun)
Sintak :
DATEDIFF (datepart,tanggal_awal,tanggal_akhir)
Contoh :
SELECT DATEDIFF(month,’01/01/2007’,’01/01/2008)


  • DATENAME

Untuk menampilkan nama hari,bulan atau tahun
Sintak :
DATENAME(detepart,tanggal)
Contoh :
SELECT DATENAME(month.getdate()) AS’Bulan sekarang’
3. Fungsi Aritmatika


  • SQRT

Untuk mencari akar dari nilai tertentu.
Contoh :
SELECT SQRT (100)


  • CEILING

Untuk pembulatan ke atas dari angka decimal
Contoh :
SELECT CEILING(25.25)
Keterangan : Akan menghasilkan nilai 26


  • FLOOR

Untuk pembulatan ke bawah dari angka decimal
Contoh :
SELECT FLOOR (25.25)
Keterangan :  Akan menghasilkan nilai 25