Jak poznać wszystkich użytkowników, którzy mogą uzyskać dostęp do bazy danych?
Jak poznać wszystkich użytkowników, którzy mogą uzyskać dostęp do bazy danych?
Odpowiedzi:
Połącz się z instancją mysql jako użytkownik admin (ogólnie jako root) i wydaj następujące polecenie ...
select user from mysql.db where db='DB_NAME';
select user from mysql.dbbez kwalifikacji zwraca również 2 puste wiersze.
Odpowiedź użytkownika 79644 zapewnia użytkownikom z uprawnieniami na poziomie bazy danych, ale będzie brakować użytkownikom z uprawnieniami tylko na poziomie tabeli, kolumny lub procedury. Aby znaleźć je wszystkie, użyj następujących instrukcji:
SELECT user,host FROM db WHERE db='name';
SELECT user,host FROM tables_priv WHERE db='name';
SELECT user,host FROM columns_priv WHERE db='name';
SELECT user,host FROM procs_priv WHERE db='name';
Przynajmniej w MySQL 5.5 wydaje się, że posiadanie uprawnień na poziomie kolumny oznacza, że masz uprawnienia na poziomie tabeli. Posiadanie uprawnień na poziomie tabeli nie oznacza, że masz uprawnienia na poziomie bazy danych. Nie jestem pewien co do uprawnień na poziomie procedury.
ERROR 1046 (3D000): No database selected
mysqlbazy danych. Tam przechowywane są wszystkie dane używane przez MySQL. Albo wydaj polecenie USE mysql;dodania nazwy bazy danych do nazw tabel, takich jak FROM mysql.dblubFROM mysql.tables_priv
# current users that access the db
mysql> show processlist;
+-----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+------+---------+------+-------+------------------+
| 214 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+------+-----------+------+---------+------+-------+------------------+
# who can access what at anytime and his privilege level
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
# what privileges are available
mysql> show privileges;
Należy pamiętać, że MySQLGRANT dla baz danych może zawierać znaki wieloznaczne . Należy to uwzględnić przy użyciu LIKEw zapytaniu:
SELECT user,host FROM db WHERE 'name' LIKE db;
SELECT user,host FROM tables_priv WHERE db='name';
SELECT user,host FROM columns_priv WHERE db='name';
SELECT user,host FROM procs_priv WHERE db='name';