답변:
mysql 인스턴스에 관리자 (일반적으로 루트)로 연결하고 다음 명령을 제공하십시오.
select user from mysql.db where db='DB_NAME';
select user from mysql.db
없이 실행 하면 2 개의 빈 행도 반환됩니다.
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에서는 적어도 열 수준의 권한이있는 것처럼 테이블 수준의 권한이있는 것 같습니다. 테이블 수준 권한이 있다고해서 데이터베이스 수준 권한이 있다는 의미는 아닙니다. 프로 시저 레벨 권한에 대해 확실하지 않습니다.
ERROR 1046 (3D000): No database selected
mysql
데이터베이스 를 사용해야한다는 것 입니다. MySQL에서 사용하는 모든 데이터가 저장되는 곳입니다. 또는 다음 USE mysql;
과 같은 테이블 이름에 데이터베이스 이름을 추가 하는 명령 을 제공하십시오.FROM mysql.db
FROM 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;
당신은 것을 명심해야 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';