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


19

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

답변:


14

mysql 인스턴스에 관리자 (일반적으로 루트)로 연결하고 다음 명령을 제공하십시오.

select user from mysql.db where db='DB_NAME';

방금 라이브 MariaDB (MySQL 포크)에 대해 이것을 실행했으며 2 개의 빈 행을 반환했습니다.
Chris S

1
데이터베이스 이름이 무엇입니까? "DB_NAME"을 db의 이름으로 바꿔야합니다.
user79644

제한 select user from mysql.db없이 실행 하면 2 개의 빈 행도 반환됩니다.
Chris S

MariaDB와 MySQL의 차이점은 확실하지 않지만 해당 쿼리는 표준 MySQL 5 설치에서 예상대로 실행됩니다.
rvf

이것은 OP에 대한 답변의 일부일뿐입니다. mysql.user.db 필드는 여러 데이터베이스와 일치하는 와일드 카드 문자를 포함 할 수 있습니다. 제안 된 검색어를 사용하면 누락됩니다. dev.mysql.com/doc/refman/5.0/en/grant.html
user4514

10

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에서는 적어도 열 수준의 권한이있는 것처럼 테이블 수준의 권한이있는 것 같습니다. 테이블 수준 권한이 있다고해서 데이터베이스 수준 권한이 있다는 의미는 아닙니다. 프로 시저 레벨 권한에 대해 확실하지 않습니다.


1
이것은 답변의 일부일뿐입니다. mysql.user.db 필드는 여러 데이터베이스와 일치하는 와일드 카드 문자를 포함 할 수 있습니다. 제안 된 검색어를 사용하면 누락됩니다. dev.mysql.com/doc/refman/5.0/en/grant.html
user4514

어떤 데이터베이스? 나는 도착했다ERROR 1046 (3D000): No database selected
user124384

@ user124384 답변에서 언급되지 않은 것은 mysql데이터베이스 를 사용해야한다는 것 입니다. MySQL에서 사용하는 모든 데이터가 저장되는 곳입니다. 또는 다음 USE mysql;과 같은 테이블 이름에 데이터베이스 이름을 추가 하는 명령 을 제공하십시오.FROM mysql.dbFROM mysql.tables_priv
Gypsy Spellweaver

8
# 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;

2
show grants는 현재 (로그인 한) 사용자의 부여 만 보여줍니다
nl-x

루트로서 당신은 또한 쇼 보조금을 할 수 있습니다
Rowan Hawkins

2

당신은 것을 명심해야 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';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.