Làm cách nào tôi có thể xem tất cả các quyền của người dùng trong mysql?
MySQL có một hệ thống truy cập cơ sở dữ liệu nâng cao. Người dùng cơ sở dữ liệu có thể có quyền truy cập vào toàn bộ cơ sở dữ liệu, các bảng riêng biệt hoặc các cột riêng biệt của bảng. Ngoài ra, có một hạn chế đối với các hành động mà người dùng có thể thực hiện với các bản ghi Show Máy chủ MySQL sử dụng một số bảng trong cơ sở dữ liệu đặc biệt để tổ chức cấu trúc truy cập cơ sở dữ liệu phức tạp như vậy. Chính sách truy cập dựa trên các giá trị có sẵn trong các bảng này Cơ sở dữ liệu mà máy chủ MySQL sử dụng để lưu trữ dữ liệu nội bộ về người dùng được gọi là mysql theo mặc định. Có các bảng để lưu trữ thông tin về tài khoản của người dùng trong cơ sở dữ liệu này
Để lấy danh sách các đặc quyền của người dùng liên quan đến truy cập dữ liệu, có thể thực hiện các truy vấn sau
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; Bạn có thể cần tạo một báo cáo có thể in được với dữ liệu này và cung cấp báo cáo đó dưới dạng báo cáo, chẳng hạn như theo yêu cầu của khách hàng hoặc cơ quan có thẩm quyền. Với mục đích này, bạn có thể sử dụng công cụ MySQL GUI đặc biệt bao gồm trình thiết kế báo cáo dữ liệu Nếu bạn đã sẵn sàng truy vấn, bạn có thể tận dụng lợi thế của trình hướng dẫn dễ sử dụng và tạo báo cáo bằng cách sử dụng mẫu được xác định trước và dữ liệu được nhóm, chẳng hạn như theo máy chủ, trong vài phút Như bạn có thể thấy trên các ảnh chụp màn hình này, chúng tôi đã tạo một báo cáo bằng trình hướng dẫn của dbForge Studio mà không cần thiết kế báo cáo một cách tẻ nhạt Phần kết luậnTrong bài viết, chúng tôi đã mô tả bằng các tập lệnh cụ thể cách lấy danh sách các đặc quyền của người dùng liên quan đến truy cập dữ liệu Làm cách nào để kiểm tra tất cả các đặc quyền của người dùng trong MySQL?Nếu tài khoản người dùng mà bạn đăng nhập có đặc quyền CHỌN trên cơ sở dữ liệu mysql nội bộ, bạn có thể xem các đặc quyền được cấp cho các tài khoản người dùng khác. Để hiển thị các đặc quyền của các tài khoản khác, hãy sử dụng định dạng sau. HIỂN THỊ CÁC KHOẢN CẤP CHO ' ; .
Làm cách nào tôi có thể thấy vai trò của người dùng trong MySQL?TỔNG CẤP HIỂN THỊ MySQL . Đầu tiên, chỉ định tên của tài khoản người dùng hoặc vai trò mà bạn muốn hiển thị các đặc quyền đã được cấp trước đó cho tài khoản hoặc vai trò người dùng sau từ khóa FOR. . Thứ hai, sử dụng mệnh đề USING để kiểm tra các đặc quyền liên quan đến vai trò của người dùng Làm cách nào tôi có thể xem tất cả MySQL DBS?HIỂN THỊ CƠ SỞ DỮ LIỆU liệt kê các cơ sở dữ liệu trên máy chủ MySQL. SHOW SCHEMAS là một từ đồng nghĩa với SHOW DATABASES. Mệnh đề LIKE, nếu có, cho biết tên cơ sở dữ liệu nào phù hợp. Mệnh đề WHERE có thể được cung cấp để chọn các hàng sử dụng các điều kiện tổng quát hơn, như đã thảo luận trong Phần 26. 8, “Mở rộng cho câu lệnh SHOW”. |