MySQL memiliki sistem akses database yang canggih. Pengguna basis data dapat memiliki akses ke seluruh basis data, tabel terpisah, atau ke kolom tabel terpisah. Selain itu, ada batasan untuk tindakan yang dapat dilakukan pengguna dengan rekaman
Server MySQL menggunakan beberapa tabel dalam database khusus untuk mengatur struktur akses database yang begitu rumit. Kebijakan akses didasarkan pada nilai yang tersedia dalam tabel ini
Basis data yang digunakan server MySQL untuk menyimpan data internal tentang pengguna disebut mysql secara default. Ada tabel untuk menyimpan informasi tentang akun pengguna di database ini
- pengguna berisi daftar semua pengguna server MySQL dan izin mereka untuk mengakses database;
- db berisi daftar database dengan daftar pengguna database yang cocok dan hak istimewa mereka untuk menjalankan operasi;
- tables_priv berisi daftar tabel database (tampilan) yang dapat diakses pengguna;
- kolom_priv berisi daftar kolom dari tabel basis data (tampilan) yang dapat diakses pengguna;
- procs_priv berisi daftar prosedur database (fungsi) yang dapat diakses pengguna
Untuk mendapatkan daftar hak pengguna terkait akses data, kueri berikut dapat dijalankan
- daftar hak istimewa global
SELECT
mu.host `Host`,
mu.user `User`,
REPLACE(RTRIM(CONCAT(
IF(mu.Select_priv = 'Y', 'Select ', ''),
IF(mu.Insert_priv = 'Y', 'Insert ', ''),
IF(mu.Update_priv = 'Y', 'Update ', ''),
IF(mu.Delete_priv = 'Y', 'Delete ', ''),
IF(mu.Create_priv = 'Y', 'Create ', ''),
IF(mu.Drop_priv = 'Y', 'Drop ', ''),
IF(mu.Reload_priv = 'Y', 'Reload ', ''),
IF(mu.Shutdown_priv = 'Y', 'Shutdown ', ''),
IF(mu.Process_priv = 'Y', 'Process ', ''),
IF(mu.File_priv = 'Y', 'File ', ''),
IF(mu.Grant_priv = 'Y', 'Grant ', ''),
IF(mu.References_priv = 'Y', 'References ', ''),
IF(mu.Index_priv = 'Y', 'Index ', ''),
IF(mu.Alter_priv = 'Y', 'Alter ', ''),
IF(mu.Show_db_priv = 'Y', 'Show_db ', ''),
IF(mu.Super_priv = 'Y', 'Super ', ''),
IF(mu.Create_tmp_table_priv = 'Y', 'Create_tmp_table ', ''),
IF(mu.Lock_tables_priv = 'Y', 'Lock_tables ', ''),
IF(mu.Execute_priv = 'Y', 'Execute ', ''),
IF(mu.Repl_slave_priv = 'Y', 'Repl_slave ', ''),
IF(mu.Repl_client_priv = 'Y', 'Repl_client ', ''),
IF(mu.Create_view_priv = 'Y', 'Create_view ', ''),
IF(mu.Show_view_priv = 'Y', 'Show_view ', ''),
IF(mu.Create_routine_priv = 'Y', 'Create_routine ', ''),
IF(mu.Alter_routine_priv = 'Y', 'Alter_routine ', ''),
IF(mu.Create_user_priv = 'Y', 'Create_user ', ''),
IF(mu.Event_priv = 'Y', 'Event ', ''),
IF(mu.Trigger_priv = 'Y', 'Trigger ', '')
)), ' ', ', ') AS `Privileges`
FROM
mysql.user mu
ORDER BY
mu.Host,
mu.User
- daftar hak istimewa untuk database
SELECT
md.host `Host`,
md.user `User`,
md.db `Database`,
REPLACE(RTRIM(CONCAT(
IF(md.Select_priv = 'Y', 'Select ', ''),
IF(md.Insert_priv = 'Y', 'Insert ', ''),
IF(md.Update_priv = 'Y', 'Update ', ''),
IF(md.Delete_priv = 'Y', 'Delete ', ''),
IF(md.Create_priv = 'Y', 'Create ', ''),
IF(md.Drop_priv = 'Y', 'Drop ', ''),
IF(md.Grant_priv = 'Y', 'Grant ', ''),
IF(md.References_priv = 'Y', 'References ', ''),
IF(md.Index_priv = 'Y', 'Index ', ''),
IF(md.Alter_priv = 'Y', 'Alter ', ''),
IF(md.Create_tmp_table_priv = 'Y', 'Create_tmp_table ', ''),
IF(md.Lock_tables_priv = 'Y', 'Lock_tables ', ''),
IF(md.Create_view_priv = 'Y', 'Create_view ', ''),
IF(md.Show_view_priv = 'Y', 'Show_view ', ''),
IF(md.Create_routine_priv = 'Y', 'Create_routine ', ''),
IF(md.Alter_routine_priv = 'Y', 'Alter_routine ', ''),
IF(md.Execute_priv = 'Y', 'Execute ', ''),
IF(md.Event_priv = 'Y', 'Event ', ''),
IF(md.Trigger_priv = 'Y', 'Trigger ', '')
)), ' ', ', ') AS `Privileges`
FROM
mysql.db md
ORDER BY
md.Host,
md.User,
md.Db_
- daftar hak istimewa untuk tabel
SELECT
mt.host `Host`,
mt.user `User`,
CONCAT(mt.Db, '.', mt.Table_name) `Tables`,
REPLACE(mt.Table_priv, ',', ', ') AS `Privileges`
FROM
mysql.tables_priv mt
WHERE
mt.Table_name IN
(SELECT
DISTINCT
t.table_name `tables`
FROM
information_schema.tables AS t
WHERE
t.table_type IN
('BASE TABLE', 'SYSTEM VIEW', 'TEMPORARY', '') OR
t.table_type <> 'VIEW' AND
t.create_options IS NOT NULL
)
ORDER BY
mt.Host,
mt.User,
mt.Db,
mt.Table_name;
- daftar hak istimewa untuk dilihat
SELECT
mv.host `Host`,
mv.user `User`,
CONCAT(mv.Db, '.', mv.Table_name) `Views`,
REPLACE(mv.Table_priv, ',', ', ') AS `Privileges`
FROM
mysql.tables_priv mv
WHERE
mv.Table_name IN
(SELECT
DISTINCT
v.table_name `views`
FROM
information_schema.views AS v
)
ORDER BY
mv.Host,
mv.User,
mv.Db,
mv.Table_name;
- daftar hak istimewa untuk kolom tabel
SELECT
mtc.host `Host`,
mtc.user `User`,
CONCAT(mtc.Db, '.', mtc.Table_name, '.', mtc.Column_name) `Tables Columns`,
REPLACE(mtc.Column_priv, ',', ', ') AS `Privileges`
FROM
mysql.columns_priv mtc
WHERE
mtc.Table_name IN
(SELECT
DISTINCT
t.table_name `tables`
FROM
information_schema.tables AS t
WHERE
t.table_type IN
('BASE TABLE', 'SYSTEM VIEW', 'TEMPORARY', '') OR
t.table_type <> 'VIEW' AND
t.create_options IS NOT NULL
)
ORDER BY
mtc.Host,
mtc.User,
mtc.Db,
mtc.Table_name,
mtc.Column_name;_
- daftar hak istimewa untuk kolom tampilan
SELECT
mvc.host `Host`,
mvc.user `User`,
CONCAT(mvc.Db, '.', mvc.Table_name, '.', mvc.Column_name) `Views Columns`,
REPLACE(mvc.Column_priv, ',', ', ') AS `Privileges`
FROM
mysql.columns_priv mvc
WHERE
mvc.Table_name IN
(SELECT
DISTINCT
v.table_name `views`
FROM
information_schema.views AS v
)
ORDER BY
mvc.Host,
mvc.User,
mvc.Db,
mvc.Table_name,
mvc.Column_name;
- daftar hak istimewa untuk prosedur
SELECT
mp.host `Host`,
mp.user `User`,
CONCAT(mp.Db, '.', mp.Routine_name) `Procedures`,
REPLACE(mp.Proc_priv, ',', ', ') AS `Privileges`
FROM
mysql.procs_priv mp
WHERE
mp.Routine_type = 'PROCEDURE'
ORDER BY
mp.Host,
mp.User,
mp.Db,
mp.Routine_name;_
- daftar hak istimewa untuk fungsi
SELECT
mf.host `Host`,
mf.user `User`,
CONCAT(mf.Db, '.', mf.Routine_name) `Procedures`,
REPLACE(mf.Proc_priv, ',', ', ') AS `Privileges`
FROM
mysql.procs_priv mf
WHERE
mf.Routine_type = 'FUNCTION'
ORDER BY
mf.Host,
mf.User,
mf.Db,
mf.Routine_name;
Anda mungkin perlu membuat laporan yang layak dicetak dengan data ini dan memberikannya sebagai laporan, misalnya, atas permintaan pelanggan atau otoritas. Untuk tujuan ini, Anda dapat menggunakan alat GUI MySQL khusus yang mencakup perancang laporan data
Jika Anda memiliki kueri siap pakai, Anda dapat memanfaatkan wizard yang mudah digunakan dan membuat laporan menggunakan template yang telah ditentukan sebelumnya dan data yang dikelompokkan, misalnya oleh host, dalam beberapa menit
Menu Laporan Data Baru
Panduan Laporan Data
Kueri Kustom Laporan Data
Kueri Pemuatan Laporan Data
Grup Laporan Data berdasarkan Host
Judul Laporan Data
Pratinjau Laporan Data
Seperti yang dapat Anda lihat pada tangkapan layar ini, kami telah membuat laporan menggunakan wizard dbForge Studio tanpa harus repot mendesain laporan itu sendiri
Kesimpulan
Dalam artikel tersebut, kami telah menjelaskan dengan skrip tertentu cara mendapatkan daftar hak pengguna terkait akses data
Bagaimana cara MEMILIH pengguna di MySQL?
Untuk menampilkan pengguna di database MySQL, pertama masuk ke server MySQL Anda sebagai pengguna administratif menggunakan klien baris perintah mysql, lalu jalankan kueri MySQL ini. mysql> pilih * dari mysql. pengguna;
Bagaimana cara memeriksa hak istimewa file di MySQL?
Pedoman Keamanan Umum .
Coba mysql -u root. Jika Anda berhasil terhubung ke server tanpa diminta kata sandi, Anda memiliki masalah. .
Gunakan perintah SHOW GRANTS dan periksa untuk melihat siapa yang memiliki akses ke apa. Hapus hak istimewa yang tidak diperlukan menggunakan perintah REVOKE
Bagaimana cara melihat semua hibah di MySQL?
Jawab. Di MySQL, Anda dapat menggunakan perintah SHOW GRANTS untuk menampilkan semua informasi hibah untuk pengguna. Ini akan menampilkan hak istimewa yang diberikan kepada pengguna menggunakan perintah GRANT.
Bagaimana cara memeriksa pengguna dan kata sandi di MySQL?
Jadi misalnya, untuk menampilkan nama pengguna, kata sandi, dan host pengguna MySQL, kami akan memodifikasi kueri sql agar sesuai dengan itu. mysql> pilih pengguna, kata sandi, host dari mysql. pengguna ; .