# Cara buat Server Client gitulah
Version Workbench
## Bagian Server
### Full Script
```
create database db_user;
use db_user;
select user, host from mysql.user;
create user "Tamu"@"localhost" identified by "123456789";
grant select,update on db_toko_buku.buku to "Tamu"@"localhost";
grant select,update on db_toko_buku.distributor to "Tamu"@"localhost";
show grants for "Tamu"@"localhost";
revoke select,update on db_toko_buku.buku from "Tamu"@"localhost";
```
Gampangnya gini lah scriptnya
### Fungsi Select User
```
select user, host from mysql.user;
```
fungsi dari ini untuk menampilkan user darimana? dari tabel `mysql.user` dari situ akan keliatan ada berapa user

normalnya beginiya tanpa user **Tamu**
`create user "Nama(bebas)"@"localhost" identified by "123456789";`
baris ini dipake buat ngebikin **User** dan perintah `identified` itu buat *Password*
### Grant
perintah `grant` dipake untuk mmeberikan akses umumnya seperti ini
`grant [HakAkses] on [namaDB.namaTabel] to "[nama]"@"localhost";`
Hak Akses 😊
ada beberapa jenis Hak akses antara lain :
* `SELECT` : Hak akses untuk membaca data dari tabel.
* `INSERT` : Hak akses untuk menambahkan data baru ke dalam tabel.
* `UPDATE` : Hak akses untuk memperbarui atau mengubah data yang sudah ada di dalam tabel.
* `DELETE` : Hak akses untuk menghapus data dari tabel.
* `CREATE` : Hak akses untuk membuat objek baru seperti tabel, database, atau indeks.
* `DROP` : Hak akses untuk menghapus objek seperti tabel, database, atau indeks.
* `ALTER` : Hak akses untuk mengubah struktur dari objek seperti tabel.
* `GRANT OPTION` : Hak akses untuk memberikan hak akses kepada pengguna lain.
* `ALL PRIVILEGES` : Hak akses yang mencakup semua hak akses di atas.
dan hak akses bisa digabung seperti
```
grant select,update on db_toko_buku.buku to "Tamu"@"localhost";
```
### Menampilkan Hak Akses yang dimiliki
```
show grants for "Tamu"@"localhost";
```
singkatnya ini digunakan untuk melihat hak apa saja yang dimiliki oleh User
### Revoke
```
revoke select,update on db_toko_buku.buku from "Tamu"@"localhost";
```
Hampir sama dengan `Grant` perbedaannya adalah jika `Grant` memberikan hak akses maka `Revoke` untuk **mencabut/menghapus** hak akses penerapannya sangat mudah yaitu :
```
Revoke [Hak Akses Yang ingin dicabut] on [namaDB.namaTBL] from "[nama]"@"localhost";
```
## Bagian Client/Tamu
setelah kita membuat di bagian server sekarang kita buat bagian clientnya
Pada Halaman depan MYSQL

tekan tombol (+) maka akan muncul

pada bagian Connection Name itu bebas tapi kalo bisa yang berhubungan
dan untuk `Username` isi sesuai dengan akun yang sudah kalian buat tadi diawal

ini adalah tampilan awalnya hanya akan terlihat kosong dan hanya ada DataBase yang dibagikan
### Full Script
```
select * from buku;
select * from distributor;
use db_toko_buku;
update buku set judul = 'nama baru' where id_buku = '2';
select * from det_penjualan;
update distributor set nama = 'nama baru' where id_distributor = '5';
select * from distributor;
show grants for "Tamu"@"localhost";
```
pada dasarnya ini sama saja seperti MySQL seperti biasa tetapi kita memiliki hak yang terbatas (Sesuai dengan apa yang sudah diberikan) jika hanya diberikan Hak Akses `Select` maka kita hanya bisa melihat data yang ada didalam tabel tanpa bisa mengubahnya
# CMD
version CMD
- Perintah `Select` untuk menampilkan berapa banyak user

- Perintah `Create user` untuk membuat user

- ini adalah bagaimana cara masuk ke user yang sudah dibuat dengan CMD

- ini adalah tampilan dalamnya

dalam foto diatas terdapat ERROR itu terjadi karena user ingin membuat `Database` tetapi user tidak memiliki **Hak Akses** sehingga terjadi **ERROR**
> note : asik nih
> [TOC]