데이터베이스에 액세스 할 수있는 모든 사용자를 아는 방법은 무엇입니까?
답변
mysql 인스턴스에 관리자 (일반적으로 루트)로 연결하고 다음 명령을 제공하십시오.
select user from mysql.db where db='DB_NAME';
답변
user79644의 답변은 데이터베이스 수준의 권한을 가진 사용자를 얻지 만 테이블 수준, 열 수준 또는 프로 시저 수준 권한 만 가진 사용자는 그리워합니다. 이들을 모두 찾으려면 다음 명령문을 사용하십시오.
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';
MySQL 5.5에서는 적어도 열 수준의 권한이있는 것처럼 테이블 수준의 권한이있는 것 같습니다. 테이블 수준 권한이 있다고해서 데이터베이스 수준 권한이 있다는 의미는 아닙니다. 프로 시저 레벨 권한에 대해 확실하지 않습니다.
답변
# 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;
답변
당신은 것을 명심해야 MySQL의GRANT
데이터베이스가 포함 할 수있는 와일드 카드 문자를 . 이것은 LIKE
쿼리에서 사용하여 설명 해야합니다.
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';