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 Show 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
Untuk mendapatkan daftar hak pengguna terkait akses data, kueri berikut dapat dijalankan
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
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_
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;
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;
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;_
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;
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;_
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 Seperti yang dapat Anda lihat pada tangkapan layar ini, kami telah membuat laporan menggunakan wizard dbForge Studio tanpa harus repot mendesain laporan itu sendiri KesimpulanDalam 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 ; . |