Mysql pilih pengguna dan hak istimewa

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

Mysql pilih pengguna dan hak istimewa

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

Mysql pilih pengguna dan hak istimewa
Menu Laporan Data Baru

Mysql pilih pengguna dan hak istimewa
Panduan Laporan Data

Mysql pilih pengguna dan hak istimewa
Kueri Kustom Laporan Data

Mysql pilih pengguna dan hak istimewa
Kueri Pemuatan Laporan Data

Mysql pilih pengguna dan hak istimewa
Grup Laporan Data berdasarkan Host

Mysql pilih pengguna dan hak istimewa
Judul Laporan Data

Mysql pilih pengguna dan hak istimewa
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 ; .