Sangat umum untuk melihat pernyataan hibah seperti berikut yang memberikan akses ke semua tabel dalam database tertentu.
GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Dimana mydatabase
, myreaduser
, myhoost
, dan somepassword
adalah variabel yang sesuai untuk database Anda. Perhatikan bahwa FLUSH PRIVILEGES
perintah me-reset hak istimewa MySQL dan Anda tidak akan dapat menggunakan hibah pengguna baru sampai dijalankan.
Pengguna tersebut akan dapat membaca dan mengakses semua tabel dalam database. Untuk contoh ini kita akan menggunakan database boatio yang memiliki 3 tabel:boats
, trips
, dan users
.
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats |
| trips |
| users |
+------------------+
3 rows in set (0.00 sec)
Jika kami ingin membuat pengguna yang hanya memiliki akses ke trips
tabel, kita cukup mengganti wildcard splat (*) yang mewakili semua tabel, dengan tabel tertentu yang Anda inginkan (dalam hal ini:trips
).
GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Sekarang kita dapat masuk sebagai pengguna baru dan menjalankan tabel pertunjukan untuk melihat bahwa ia hanya memiliki akses ke trips
meja dan bukan dua lainnya. Pengguna baru ini sama sekali tidak tahu bahwa tabel lain ada.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
+------------------+
1 row in set (0.00 sec)
Untuk memberi pengguna akses ke lebih banyak tabel, cukup jalankan kembali GRANT
. yang sama pernyataan dengan nama tabel tambahan. Misalnya, berikut ini akan memberikan akses ke trips
dan users
tabel tetapi bukan boats
.
GRANT SELECT, SHOW VIEW ON boatio.trips TO myreaduser@localhost IDENTIFIED BY 'somepassword';
GRANT SELECT, SHOW VIEW ON boatio.users TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;
Dan buktinya:pengguna sekarang memiliki akses ke trips
dan users
tabel tetapi bukan boats
.
$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips |
| users |
+------------------+
2 rows in set (0.00 sec)