데이터베이스 (MySQL)에 액세스 할 수있는 모든 사용자를 아는 방법은 무엇입니까? 액세스 할

데이터베이스에 액세스 할 수있는 모든 사용자를 아는 방법은 무엇입니까?



답변

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';