30 Okt 2013

Latihan User - Hak Akses

MELIHAT USER YANG SUDAH ADA

template1=# select * from pg_catalog.pg_user;

usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valuntil | useconfig
----------+----------+-------------+----------+-----------+---------+----------+----------+-----------
postgres | 10    |  t  |   t  |  t  |  t  |  ********  | |
zahra    | 16529 |  t  |   f  |  f  |  f  |  ********  | |
fatimah  | 16531 |  t  |   f  |  f  |  f  |  ********  | |
(3 rows)

MEMBUAT USER AHMAD, UMAR, ALI

template1=# create user ahmad with password 'ahmad' createdb;
CREATE ROLE

template1=# create user umar with password 'umar' createdb;
CREATE ROLE

template1=# create user ali with password 'ali' createdb;
CREATE ROLE


MELIHAT GRUP YANG SUDAH ADA

template1=# select * from pg_catalog.pg_group;

                groname | grosysid | grolist
      -----------+----------+---------
      marketing | 16546 | {}
      (1 row)

MEMASUKAN USER KEDALAM GRUP

template1=# alter group marketing add user ahmad, fatimah, umar, ali;
ALTER ROLE

template1=# select * from pg_catalog.pg_group;

           groname | grosysid | grolist
          -----------+----------+---------------------------
          marketing | 16546 | {16543,16531,16544,16545}
          (1 row)


MENAMPILKAN LIST USER YANG ADA DI GRUP MARKETING

template1=# select groname, usename from pg_group, pg_user where usesysid = any(grolist);

                     groname | usename
                    -----------+---------
                    marketing | fatimah
                    marketing | ahmad
                    marketing | umar
                    marketing | ali
                    (4 rows)

Melihat user yang ada didatabase

template1=# select usename,usesysid from pg_catalog.pg_user;

            usename | usesysid          ----------+----------           postgres | 10               zahra| 16529             fatimah| 16531               ahmad| 16543               umar | 16544                ali | 16545                      (6 rows)

Melihat group yang ada di database

template1=# select * from pg_catalog.pg_group;

groname   | grosysid | grolist
-----------+----------+---------------------------
marketing | 16546 | {16543,16531,16544,16545}
(1 row)

melihat user yang ada digroup marketing

template1=# select groname,usename from pg_group,pg_user where usesysid = any (grolist);

groname    | usename
-----------+---------
marketing | fatimah
marketing | ahmad
marketing | umar
marketing | ali
(4 rows)

MENJADIKAN SEBUAH USER YANG AWALNYA TIDAK BISA MEMBUAT SEBUAH DATABASE MENJADI BISA MEMBUAT DATABASE

-Melihat apakah user bisa membuat database atau tidak 

template1=# select usename,usesysid,usecreatedb from pg_catalog.pg_user;

usename | usesysid | usecreatedb
----------+----------+-------------
postgres| 10       | t
zahra   | 16529    | t
fatimah | 16531    | t
ahmad   | 16543    | t
umar    | 16544    | t
ali     | 16545    | t
(6 rows)

RUMUSNYA:
template=# alter user bowo with createdb;

KALO SEBALIKNYA,  DARI BISA KE TIDAK BISA, RUMUSNYA:
template=# alter user bowo with nocreatedb;

MELIHAT GROUP

template1=# SELECT * FROM pg_catalog.pg_group;

groname | grosysid | grolist
-----------+----------+---------------------------------------
dosen   | 16547    | {16545,16549}
marketing | 16546  | {16543,16531,16544,16548,16545,16549}
(2 rows)

KELUAR DARI TEMPLATE 1

template1=# \q

AHMAD Masuk kedalam dblatihan

postgres@henny-K84L:~$ psql -U ahmad dblatihan
Password for user ahmad:
psql (9.1.9)
Type "help" for help.



MELIHAT OWNER PEMILIK TABLE

dblatihan=> \d

List of relations
Schema | Name | Type | Owner
--------+----------------+----------+----------
public | agama | table | postgres
public | pegawai | table | postgres
public | pegawai_id_seq | sequence | postgres
(3 rows)


MEMBUAT TABEL DEPARTEMEN

dblatihan=> create table departemen (
dblatihan(> id serial primary key, nama varchar(30)
dblatihan(> );
NOTICE: CREATE TABLE will create implicit sequence "departemen_id_seq" for serial column "departemen.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "departemen_pkey" for table "departemen"
CREATE TABLE

MELIHAT TABEL AGAMA, NAMUN KARENA OWNERNYA POSTGRES (LIHAT DIATAS YG KUNING) MAKA PERMISSION DENIED

dblatihan=> select * from agama;
ERROR: permission denied for relation agama
dblatihan=> \q

MASUK KE DBLATIHAN MENGGUNAKAN POSTGRES

postgres@henny-K84L:~$ psql -U postgres dblatihan;
Password for user postgres:
psql (9.1.9)
Type "help" for help.

MEMBERIKAN HAK AKSES SEPENUHNYA KE AHMAD

dblatihan=# grant all on agama,pegawai to ahmad;
GRANT

dblatihan-# \d

List of relations
Schema | Name | Type | Owner
--------+-------------------+----------+----------
public | agama | table | postgres
public | departemen | table | ahmad
public | departemen_id_seq | sequence | ahmad
public | pegawai | table | postgres
public | pegawai_id_seq | sequence | postgres
(5 rows)
dblatihan-# \q


MASUK KE DBLATIHAN USER AHMAD

postgres@henny-K84L:~$ psql -U ahmad dblatihan;
Password for user ahmad:
psql (9.1.9)
Type "help" for help.

dblatihan=> \d

List of relations
Schema | Name | Type | Owner
--------+-------------------+----------+----------
public | agama | table | postgres
public | departemen | table | ahmad
public | departemen_id_seq | sequence | ahmad
public | pegawai | table | postgres
public | pegawai_id_seq | sequence | postgres
(5 rows)

KARENA SUDAH DIBERIKAN HAK AKSES, MAKA AKAN TAMPIL

dblatihan=> select * from agama;

id | nama
----+----------
1 | Islam
2 | Kristen
3 | Khatolik
(3 rows)

MEMBERIKAN HAK AKSES KE ALI (HANYA SELECT)

dblatihan=> grant select on departemen to ali;
GRANT

dblatihan=> \q

postgres@henny-K84L:~$ psql -U ali dblatihan;
Password for user ali:
psql (9.1.9)
Type "help" for help.


dblatihan=> drop table departemen;
ERROR: must be owner of relation departemen

AHMAD MASUK KE DBLATIHAN

postgres@henny-K84L:~$ psql -U ahmad dblatihan;
Password for user ahmad:
psql (9.1.9)
Type "help" for help.

AHMAD MEMBERIKAN HAK AKSES KE GROUP

dblatihan=> grant all on departemen to group marketing;
GRANT

AHMAD MENCABUT HAK AKSES DARI GROUP

dblatihan=> revoke all on departemen from group marketing;
REVOKE 

Worksheet 1 - PostgreSQL


Di Worksheet ini, diminta membuat database serta table-table didalamnya, membuat hak akses dan memberikan hak akses kepada user lainnya.

yuuuu, simak bareng-bareng perintahnya ..... :)

1. Buat Database & Tabel                                                         

mysql> create database dbkaryawan;
Query OK, 1 row affected (0.04 sec)

mysql> use dbkaryawan;
Database changed

mysql> create table departemen (
    -> id integer auto_increment primary key,
    -> kode varchar(10),
    -> nama varchar(45),
    -> alamat varchar(45),
    -> budget double,
    -> nipmanager varchar(10)
    -> );
Query OK, 0 rows affected (0.17 sec)

mysql> create table pegawai (
    -> nip varchar(10) primary key,
    -> nama varchar(45),
    -> tmp_lahir varchar(45),
    -> tgl_lahir date,
    -> cv text,
    -> anak integer,
    -> gaji_pokok double,
    -> tunjangan double,
    -> departemen_id int,
    -> foreign key (departemen_id) references departemen(id)
    -> );
Query OK, 0 rows affected (0.17 sec)

------------

2. Untuk simulasi testing akses data, isi record departemen dengan 5 record dan pegawai 10 record                                                                 

mysql> insert into departemen values (default, 'FA', 'Finance Accounting', 'Jl. Margonda Raya No. 522', 100000000, '99901123');
Query OK, 1 row affected (0.05 sec)

mysql> insert into pegawai values ('88210291', 'Achmad Ilham', 'Jakarta', '1985-09-02', 'Software Engineer', 1, 2000000, 300000, 1);
Query OK, 1 row affected (0.05 sec)

------------

3. Database karyawan dan isinya hanya dapat diakses oleh user satpamdb dari server database saja 

mysql> grant all privileges on dbkaryawan.* to satpamdb@localhost identified by 'satpamdb';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

------------

4. Database karyawan dan isinya dapat diakses melalui jaringan dari komputer managerhrd yang berada diruang manager HRD

mysql> grant all privileges on dbkaryawan.* to managerhrd@192.168.1.8 identified by 'managerhrd';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

------------

5. Terdapat beberapa staff HRD yang dapat mengakses database dari komputer masing   -masing melalui jaringan komputer, dengan rincian tugas:

- staff1 yang bertugas memaintain data pegawai dan tidak bisa mengakses data departemen :

mysql> grant all privileges on dbkaryawan.pegawai to staff1@192.168.1.2 identified by 'staff1';
Query OK, 0 rows affected (0.00 sec)

- staff2 yang bertugas memaintain data departemen dan tidak bisa mengakses data pegawai :
    
mysql> grant all privileges on dbkaryawan.departemen to staff2@192.168.1.3 identified by 'staff2';
Query OK, 0 rows affected (0.00 sec)

- staff3 hanya dapat melihat isi data pegawai : nip,nama,tgl_lahir,tmp_lahir dan data departemen : nama,alamat,nipmanager

mysql> grant select(nip,nama,tgl_lahir,tmp_lahir) on dbkaryawan.pegawai to staff3@192.168.1.4 identified by 'staff3';
Query OK, 0 rows affected (0.00 sec)

mysql> grant select(nama,alamat,nipmanager) on dbkaryawan.departemen to staff3@192.168.1.4 identified by 'staff3';
Query OK, 0 rows affected (0.00 sec)

- staff4  mendapat tugas untuk menambah data, mengubah data, melihat seluruh data pegawai dan tidak bisa menghapus data pegawai

mysql> grant insert,update,select on dbkaryawan.pegawai to staff4@192.168.1.5 identified by 'staff4';
Query OK, 0 rows affected (0.00 sec)


Alhamdulillah selesai ^_^

PostgreSQL (1)

Assalamualaikum, 
sekarang belajar database didunia baru nihh ...
udah ga make Mysql tapi make PostgreSQL .. :)
Alhamdulillah nambah ilmu baru lagi :)

berikut review belajar ku selama dikampus ...

1. MENGECEK STATUS POSTGRES
root@henny-K84L:/home/henny# service postgresql status
Running clusters: 9.1/main

2. LOGIN
root@henny-K84L:/home/henny# sudo su postgres

3. MASUK KEDALAM POSTGRESQL
postgres@henny-K84L:/home/henny$ psql -U postgres template1
psql (9.1.9)
Type "help" for help.

4. MEMBUAT PASSWORD POSTGRES
template1=# ALTER USER postgres with password 'masukan_password';
ALTER ROLE

5. KELUAR DARI POSTGRES
template1=# \q

6. MEMBUAT DATABASE DENGAN NAMA DBLATIHAN
postgres@henny-K84L:/home/henny$ createdb dblatihan -U postgres

7. MASUK KEDALAM DATABASE LATIHAN
postgres@henny-K84L:/home/henny$ psql -U postgres dblatihan
psql (9.1.9)
Type "help" for help.

8. MEMBUAT TABEL AGAMA
dblatihan=# CREATE TABLE agama (
dblatihan(# id integer primary key,
dblatihan(# nama varchar(20)
dblatihan(# );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "agama_pkey" for table "agama"
CREATE TABLE

9. MELIHAT TABEL YANG ADA
dblatihan=# \dt

                           List of relations
                Schema | Name | Type | Owner
                --------+-------+-------+----------
                public | agama | table | postgres
                (1 row)

10. MELIHAT SKEMA TABEL AGAMA
dblatihan=# \d agama

          Table "public.agama"
          Column | Type | Modifiers
          --------+-----------------------+-----------
          id       | integer                       | not null
          nama | character varying(20) |
          Indexes:
         "agama_pkey" PRIMARY KEY, btree (id)


11. MEMASUKKAN DATA KEDALAM TABEL AGAMA
dblatihan=# INSERT INTO agama VALUES (1, 'Islam');
INSERT 0 1
dblatihan=# INSERT INTO agama VALUES (2, 'Kristen');
INSERT 0 1
dblatihan=# INSERT INTO agama VALUES (3, 'Khatolik');
INSERT 0 1

12. MELIHAT ISI DARI TABEL AGAMA
dblatihan=# SELECT * FROM agama ;
         id | nama
       ----+----------
        1 | Islam
        2 | Kristen
        3 | Khatolik
       (3 rows)

13. MEMBUAT TABEL PEGAWAI
dblatihan=# CREATE TABLE pegawai (
dblatihan(# id serial primary key,
dblatihan(# nim varchar(10) unique not null,
dblatihan(# nama varchar(40) not null,
dblatihan(# idagama integer references agama(id)
dblatihan(# );
NOTICE: CREATE TABLE will create implicit sequence "pegawai_id_seq" for serial column "pegawai.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pegawai_pkey" for table "pegawai"
NOTICE: CREATE TABLE / UNIQUE will create implicit index "pegawai_nim_key" for table "pegawai"

14. MELIHAT SKEMA TABEL
dblatihan=# \d
List of relations
Schema | Name | Type | Owner
--------+----------------+----------+----------
public | agama | table | postgres
public | pegawai | table | postgres
public | pegawai_id_seq | sequence | postgres
(3 rows)

15. MEMASUKKAN DATA KEDALAM TABEL PEGAWAI
dblatihan=# INSERT INTO pegawai VALUES (default, 0110100, 'Henny Anggraeni', 1);
INSERT 0 1
dblatihan=# INSERT INTO pegawai VALUES (default, 0110200, 'Syafira Azzahra', 1);
INSERT 0 1

16. MELIHAT ISI DARI TABEL PEGAWAI
dblatihan=# SELECT * FROM pegawai;

          id | nim | nama | idagama
        ----+--------+-----------------+---------
          1 | 110100 | Henny Anggraeni | 1
          2 | 110200 | Syafira Azzahra | 1
         (2 rows)