Membuat DataBase, User dan Password di MySQL Berbasis Username System
Sore tadi waktu ngelihat milis tanya-jawab@linux.or.id, ada pertanyaan dari om Dewa Ehem tentang bagaimana sih cara membuat database, user dan password sekaligus berbasis pada user yang terdaftar pada mesin linux kita. Nah dibawah ini pertanyaan yang dikirim oleh om Dewa Ehem ke milis tanya-jawab@linux.or.id
From: “Funny Farady Coastera”
To: tanya-jawab@linux.or.id
Date: Thu, 9 Apr 2009 16:35:55 +0700
Subject: [tanya-jawab] mengatur privilege user mysql secara masalAssalamu’alaikum Wr. Wb
Kemarin-kemarin saya sudah pernah nanyain cara membuat user secara masal
menggunakan adduser, sekarang saya mau ngelanjutin pertanyaannya, itu juga
kalau boleh. Ada tidak script yang mampu membuat database sesuai dengan nama
usernya, password jg sesuai dengan nama usernya kemudian mempunyai privilege
select, create, insert, edit, khusus untuk database tersebut (satu user satu
database)Mohon kalau ada scriptnya, bisa di sharing.. guna pembelajaran bersama.
NB, via console yah.. Bisa pake python, perl atau yang lainnya.. sangat d
mohon bantuannya.
BTW, kalau thread ini masuk kategori programming mohon di pindahWassalamu’alaikum Wr. Wb
Nah gara-gara pertanyaan tersebut, akhirnya jadi iseng-iseng deh ngebuat shell scriptnya
Dan hasil dari pertanyaan yang diajukan dari om Dewa Ehem adalah sebagai berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #!/bin/sh # Variable declaration MYSQL_ROOT_USER=root MYSQL_ROOT_PASSWD=admin HOME_DIR=/export/home TMP_FILE=/tmp/LIST_OF_USER.txt SQL_FILE=/tmp/SQL_FILE.sql # Function declaration getListOfUser() { cut -d " " -f2 $TMP_FILE | sort | cut -d " " -f1 } # List available user in home dir ls $HOME_DIR > $TMP_FILE for user in $(getListOfUser) ; do echo "Creating database and db user base on " $user # Creating database with $user echo "create database $user;" >> $SQL_FILE # Create user first echo "CREATE USER '$user'@'localhost' IDENTIFIED BY '$user';" >> $SQL_FILE # Give permission to this $user echo "GRANT SELECT, INSERT, UPDATE, DELETE ON $user.* TO '$user'@'localhost';" >> $SQL_FILE done # Connecting to MySQL then insert to database mysql -u $MYSQL_ROOT_USER -p$MYSQL_ROOT_PASSWD < $SQL_FILE echo "Deleting temporary file" rm -rf $TMP_FILE rm -rf $SQL_FILE echo "Creating MySQL User based on user home done. " |
Penjelasan kode diatas adalah sebagai berikut :
-
Pada baris ke 4-5 kita pertama-tama mendefinisikan dahulu user dan password yang mempunyai akses full pada database MySQL. Kemudian pada baris berikutnya yaitu pada baris 6 kita mendefinisikan direktori /home sebagai target untuk mengetahui jumlah user yang terdaftar pada sistem kita
- Nah pada baris 7 dan 8 kita menggunakan 2 buah textfile sebagai file temporary yang berfungsi untuk menampung seluruh nama user yang terdaftar pada sistem dan perintah SQL untuk tiap-tiap username tersebut.
- Kemudian pada baris 11-13, kita buat 1 buah fungsi yang akan membaca nilai variabel $TMP_FILE yang mempunyai nilai /tmp/LIST_OF_USER.txt. Sedangkan fungsi ini akan digunakan pada perulangan yang terjadi pada baris 18-29.
- Pada baris 16, kita akan mencoba melihat ada berapa user yang terdapat di dalam direktori /home dan menuliskan hasilnya pada file /tmp/LIST_OF_USER.txt melalui variabel $TMP_FILE
- Pada baris 18-29 ini adalah proses intinya yaitu pertama-tama kita akan membaca seluruh daftar user yang sudah disimpan pada file /tmp/LIST_OF_USER.txt melalui fungsi getListOfUser dan menampung hasil pembacaan tersebut pada variabel user. Semua proses ini dapat dilihat pada baris ke 18, setelah kita mendapatkan nilai $user, kita akan menuliskan perintah SQL untuk membuat user di MySQL pada sebuah file yaitu /tmp/SQL_FILE.sql. Pada baris 22-28 ini adalah perintah di MySQL untuk membuat database, user dan memberi hak akses SELECT, INSERT, UPDATE dan DELETE di database.
- Setelah selesai membuat sebuah file, sekarang mari kita coba membuat database dan user pada MySQL sesuai dengan user yang terdaftar pada sistem. Caranya yaitu pada waktu login ke MySQL kita kirimkan juga file yang telah kita buat pada baris 18-29, agar ketika proses login kita tidak disuguhi prompt password maka gabungkan nilai password pada opsi -p ketika login dan proses ini dapat dilihat pada baris ke 32
-
Setelah semua proses selesai, sebaiknya kita bersihkan dulu file-file temporary yang sudah dibuat. Dan ini bisa dilihat pada baris 34-35 kemudian beritahu user bahwa proses telah selesai
Ok semua prosedur dan script sepertinya sudah selesai, sekarang mari kita coba script diatas
Sebelum mencoba script diatas, mari kita cek dulu bahwa kita belum mempunyai database berdasarkan nama user. Caranya adalah seperti dibawah ini :
[martin@opensolarisbox:~/Latihan/shellScript]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 53 Server version: 5.0.67 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) mysql> quit Bye [martin@opensolarisbox:~/Latihan/shellScript]$
Ok kita belum punya database berdasarkan username, sekarang beri hak eksekusi pada script yang telah kita buat diatas dengan perintah chmod +x kemudian jalankan scriptnya seperti dibawah ini :
[martin@opensolarisbox:~/Latihan/shellScript]$ chmod +x mysqlUser.sh [martin@opensolarisbox:~/Latihan/shellScript]$ ./mysqlUser.sh Creating database and db user base on dewa Creating database and db user base on ehem Creating database and db user base on martin Deleting temporary file Creating MySQL User based on user home done. [martin@opensolarisbox:~/Latihan/shellScript]$
Sekarang mari kita cek pada MySQL apakah database dan user sudah dibuat sesuai dengan harapan kita ?
[martin@opensolarisbox:~/Latihan/shellScript]$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 55 Server version: 5.0.67 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | dewa | | ehem | | martin | | mysql | | test | +--------------------+ 6 rows in set (0.00 sec) mysql> show grants for 'dewa'@'localhost'; +-------------------------------------------------------------------------------------------------------------+ | Grants for dewa@localhost | +-------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'dewa'@'localhost' IDENTIFIED BY PASSWORD '*40494FDF155F3A47EEC1B99D4D4B0CFC56CEDFBE' | | GRANT SELECT, INSERT, UPDATE, DELETE ON `dewa`.* TO 'dewa'@'localhost' | +-------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec) mysql> show grants for 'ehem'@'localhost'; +-------------------------------------------------------------------------------------------------------------+ | Grants for ehem@localhost | +-------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'ehem'@'localhost' IDENTIFIED BY PASSWORD '*E96BA83EF4FE05623DAA90696D92E551A7B865D6' | | GRANT SELECT, INSERT, UPDATE, DELETE ON `ehem`.* TO 'ehem'@'localhost' | +-------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec) mysql> show grants for 'martin'@'localhost'; +---------------------------------------------------------------------------------------------------------------+ | Grants for martin@localhost | +---------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'martin'@'localhost' IDENTIFIED BY PASSWORD '*CD4AFD8FF7FC169D64F8F55753F4DFAD49B5D780' | | GRANT SELECT, INSERT, UPDATE, DELETE ON `martin`.* TO 'martin'@'localhost' | +---------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec) mysql> quit Bye [martin@opensolarisbox:~/Latihan/shellScript]$
Dan untuk membuktikannya, mari kita coba login ke MySQL dengan user yang terdaftar pada sistem dan passwordnya sama dengan nama user tersebut seperti dibawah ini :
[martin@opensolarisbox:~/Latihan/shellScript]$ mysql -u martin -pmartin Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 56 Server version: 5.0.67 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | martin | | test | +--------------------+ 3 rows in set (0.37 sec) mysql> quit Bye [martin@opensolarisbox:~/Latihan/shellScript]$
Nah selesai juga akhirnya, dan asyik juga yah
Tags: cara membuat database dengan mysql, cara membuat database MysQl, membuat database dengan mysql


Salam Kenal and Thks untk infonya,sebelumnya saya mohon ijin untuk mengcoppy artikel ini,
MOHON INFONYA!!!!!!!!!!
Saya Bermaksud Untuk membuat suatu artikel atau suatu form laporan di suatu perusahaan suwasta, apakah akan membuat gangguan di sofwheres program perusahaan tersebut ?????
mohon saran buat blog ane gan
masih pemula
http://nehemiaberbagi.blogspot.com/
bagaimana cara belajar script dasar java
saya tidak tau memulai dari mana gan
tanks gan
sedikit bingung juga ya..
tapi saya kan belajar dengan ada nya posting ini..
makasih gan infonya..