Saya memiliki pengguna, yang saya ingin memberikan semua izin BACA di db schema.
Salah satu cara adalah ini :
GRANT SELECT, SHOW_VIEW ON test.* TO 'readuser'@'%';
Apakah ada cara untuk grup semua operasi baca di grant ?
Jika ada satu keistimewaan yang berdiri untuk SEMUA operasi BACA di database.
Hal ini tergantung pada bagaimana anda mendefinisikan "semua yang membaca."
"Membaca" dari tabel dan pandangan adalah PILIH
hak istimewa. Jika itu's apa yang anda maksud dengan "semua" maka ya:
GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';
Namun, itu terdengar seperti anda berarti kemampuan untuk "seperti" segala sesuatu, untuk "melihat tetapi tidak menyentuh." Jadi, di sini adalah jenis lain dari membaca yang datang ke pikiran:
"Membaca" definisi views adalah SHOW VIEW
hak istimewa.
"Membaca" daftar saat ini-mengeksekusi query dengan pengguna lain adalah PROSES
hak istimewa.
"Membaca" saat ini replikasi negara adalah REPLIKASI KLIEN
hak istimewa.
Perhatikan bahwa salah satu atau semua ini mungkin mengekspos informasi lebih dari yang anda berniat untuk mengekspos, tergantung pada sifat dari user yang bersangkutan.
Jika itu's bacaan yang ingin anda lakukan, anda dapat menggabungkan setiap orang (atau lainnya yang tersedia hak-hak istimewa) dalam satu HIBAH
pernyataan.
GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...
Namun, tidak ada satu keistimewaan yang memberikan beberapa subset dari hak-hak lainnya, yang adalah apa yang kedengarannya seperti anda minta.
Jika anda melakukan hal-hal secara manual dan mencari cara yang lebih mudah untuk pergi tentang ini tanpa perlu ingat yang tepat memberikan anda biasanya membuat untuk kelas tertentu dari pengguna, anda dapat melihat pernyataan untuk meregenerasi sebanding pengguna's hibah, dan perubahan di sekitar untuk membuat user baru dengan hak yang sama:
mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for not_leet@localhost |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Mengubah 'not_leet' dan 'localhost' untuk pertandingan pengguna baru yang ingin anda tambahkan, bersama dengan password, akan mengakibatkan reusable HIBAH
pernyataan untuk membuat user baru.
Tentu, jika anda ingin satu operasi untuk mengatur dan memberikan yang terbatas set hak akses untuk pengguna, dan mungkin menghapus setiap ketidaklayakan hak istimewa, yang dapat dilakukan dengan membuat prosedur tersimpan yang merangkum segala sesuatu yang anda ingin lakukan. Di dalam badan prosedur, anda'd membangun HIBAH
dengan pernyataan SQL dinamis dan/atau secara langsung memanipulasi tabel hibah diri mereka sendiri.
Di ini baru pertanyaan pada Database Administrator, poster ingin kemampuan untuk unprivileged user untuk memodifikasi pengguna lain, yang tentu saja bukan sesuatu yang biasanya dapat dilakukan -- pengguna yang dapat memodifikasi pengguna lain, cukup banyak menurut definisi, tidak unprivileged user-namun-prosedur yang tersimpan memberikan solusi yang baik dalam hal ini, karena mereka berjalan dengan konteks keamanan mereka PENDUKUNG
user, memungkinkan siapa pun dengan MENGEKSEKUSI
hak istimewa pada prosedur untuk sementara menganggap meningkatnya hak-hak istimewa untuk memungkinkan mereka untuk melakukan hal-hal tertentu prosedur menyelesaikan.
GRANT SELECT ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Hal ini akan membuat user dengan PILIH
hak istimewa untuk semua database termasuk Pandangan.
Berbagai izin yang anda dapat memberikan untuk pengguna yang
ALL PRIVILEGES- This would allow a MySQL user all access to a designated database (or if no database is selected, across the system)
CREATE- allows them to create new tables or databases
DROP- allows them to them to delete tables or databases
DELETE- allows them to delete rows from tables
INSERT- allows them to insert rows into tables
SELECT- allows them to use the Select command to read through databases
UPDATE- allow them to update table rows
GRANT OPTION- allows them to grant or remove other users' privileges
Untuk menyediakan pengguna dengan izin, anda dapat menggunakan kerangka ini:
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
Saya menemukan ini artikel ini sangat membantu
Panduan langkah demi langkah saya menemukan di sini.
Untuk membuat database hanya-baca akun user untuk MySQL
Di UNIX prompt, jalankan perintah MySQL-baris program, dan log in sebagai administrator dengan mengetik perintah berikut:
mysql -u root -p
Ketik password untuk akun root. Pada prompt mysql, lakukan salah satu langkah berikut:
Untuk memberikan pengguna akses ke database dari setiap host, ketik perintah berikut:
grant select on database_name.* to 'read-only_user_name'@'%' identified by 'password';
Jika kolektor akan diinstal pada host yang sama seperti database, ketik perintah berikut:
grant select on database_name.* to 'read-only_user_name' identified by 'password';
Perintah ini memberikan pengguna akses hanya-baca untuk database dari host lokal saja. Jika anda tahu nama host atau alamat IP dari host yang kolektor ini akan diinstal pada, ketik perintah berikut:
grant select on database_name.* to 'read-only_user_name'@'host_name or IP_address' identified by 'password';
Nama host harus diatasi dengan DNS atau oleh local host file. Pada mysql prompt, ketik perintah berikut:
flush privileges;
Jenis berhenti
.
Berikut adalah daftar contoh perintah dan pesan konfirmasi:
mysql> grant select on dbname.* to 'readonlyuser'@'%' identified
by 'pogo$23';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bahkan pengguna yang telah mendapat jawaban dan @Michael - sqlbot telah menutupi sebagian besar poin yang sangat baik di pos, tapi satu titik hilang, jadi hanya mencoba untuk menutupinya.
Jika anda ingin untuk memberikan izin baca untuk pengguna yang sederhana (Bukan admin jenis)-
GRANT SELECT, EXECUTE ON DB_NAME.* TO 'user'@'localhost' IDENTIFIED BY 'PASSWORD';
Catatan: MENJALANKAN diperlukan di sini, sehingga pengguna dapat membaca data jika ada disimpan prosedur yang menghasilkan laporan (memiliki beberapa pilih pernyataan).
Ganti localhost dengan IP tertentu dari pengguna yang akan connect ke DB.
Tambahan Izin Baca-
Catatan untuk MySQL 8's yang berbeda
Anda perlu melakukannya dalam dua langkah:
CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY 'some_strong_password';
GRANT SELECT, SHOW VIEW ON *.* TO 'readonly_user'@'localhost';
flush privileges;