Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pelajari tentang Izin Tingkat Tabel MySQL

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)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan referensi ke konektor MySQL untuk .NET?

  2. mysql_fetch_assoc():argumen yang diberikan bukan sumber hasil MySQL yang valid di php

  3. Pandangan mendalam tentang Pengindeksan Basis Data

  4. Cara memisahkan DATE dan TIME dari DATETIME di MySQL

  5. hitungan untuk setiap bergabung - pengoptimalan