본문 바로가기
MySql

MySQL mysql이 로그인 한 사용자를 잊어 버림 : "@ '%'사용자에게 명령이 거부 됨

by 베이스 공부 2020. 10. 5.
반응형

show grants; 를 실행하면 데이터베이스에 대한 모든 권한이있는 사용자로 로그인되었음을 나타냅니다.

show table status; 를 실행하면 오류가 발생합니다. 그리고 오류는 내가 로그인 한 사용자 이름을 표시하지 않습니다!

이 명령에 대해 mysql이 내가 누군지 잊어 버리는 것과 같습니다. 다른 select 문은 잘 작동합니다. 누구든지 이것을 설명 할 수 있습니까? 어떻게 고치는 지? 감사.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.13-log Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show grants;
+---------------------------------------------------------------------------------------------------------------------+
| Grants for php@localhost                                                                                            |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'php'@'localhost' IDENTIFIED BY PASSWORD '*8F5FF90079BC601F8EA7C148475658E65A0C029D' |
| GRANT ALL PRIVILEGES ON `sunflower_work`.* TO 'php'@'localhost'                                                     |
| GRANT ALL PRIVILEGES ON `news_demo`.* TO 'php'@'localhost'                                                          |
| GRANT ALL PRIVILEGES ON `news_base`.* TO 'php'@'localhost'                                                          |
+---------------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)

mysql> show table status from sunflower_work;
ERROR 1143 (42000): SELECT command denied to user ''@'%' for column 'uid' in table 'users'
mysql>

업데이트 ... Tomalak이 제안한대로 사용자를 삭제하고 더 완전한 권한과 비밀번호없이 다시 생성했습니다. 여전히 문제는 지속됩니다. 이제 다음과 같이 보입니다.

mysql> show grants;
+--------------------------------------------------+
| Grants for php@localhost                         |
+--------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'php'@'localhost' |
+--------------------------------------------------+
1 row in set (0.00 sec)

mysql> show table status;
ERROR 1143 (42000): SELECT command denied to user ''@'%' for column 'uid' in table 'users'
mysql> 

 

해결 방법

 

문제는 아마도 데이터베이스에 VIEWS가 있다는 것입니다. 보기는 특정 권한으로 생성 될 수 있습니다.

오류 메시지를 통해 알 수 있듯이 로그인 한 사용자와 다른 사용자에 대해 불평합니다. 뷰의 경우 뷰가 데이터를 볼 수있는 권한을 결정하는 방법을 지정할 수 있기 때문입니다.

데이터베이스로 이동하면 다음을 입력 해보십시오.

SHOW FULL TABLES IN sunflower_work WHERE TABLE_TYPE NOT LIKE '%table%';

그런 다음 거기에있는 특정 견해의 권리를 조사 할 수 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/6527599

 

 

반응형

댓글