나는 많은 수의 mysql 데이터베이스를 가진 서버를 가지고 있습니다. 최근 루트로 로그인하면 일부 스키마 표시가 중단되었습니다.
해당 특정 데이터베이스에 대한 로그인을 사용하면 이를 볼 수 있습니다.
이 데이터베이스의 '소유자'는 루트이지만 루트에 표시되지 않는 다른 데이터베이스도 다른 사람이 소유하고 있습니다.
최근에 우리가 액세스하고 작업한 데이터베이스가 사라진 것 같지만 현재 표시되지 않는 데이터베이스가 5개 이상 있습니다. 로컬 캐시가 아니며 루트 로그인을 사용하는 사람도 동일한 문제가 있습니다.
답변1
만약 당신의현재 사용자()라고 말하지 않으면 root@localhost
루트 권한이 없으며 루트 권한으로 연결할 수 없습니다.
연결된 후 실제 권한이 무엇인지 확인하려면 다음을 실행하세요.
SHOW GRANTS;
특정 데이터베이스에 연결하면 다음을 볼 수 있습니다.
- 해당 데이터베이스의 테이블
- 해당 데이터베이스에 대한 INFORMATION_SCHEMA의 메타데이터
예를 들어 buyspace_systdb에 연결했다고 가정해 보겠습니다.
의 출력SHOW GRANTS;
아마도 이런 식으로 나타날 것입니다
GRANT USAGE ON *.* ...
GRANT ALL PRIVILEGES ON buyspace_systdb.* TO ...
root@localhost
해당 로컬 서버 내에서 로그인하면 사용자가 작동합니다. 원격으로 로그인하는 경우 root@localhost
허용되지 않습니다.사용자()다음으로 인증하다현재 사용자(). 이에 대한 증거는 귀하의 질문에 대한 첫 번째 화면에 있습니다. information_schema만 볼 수 있습니다. 1개 또는 2개의 항목이 있는 information_schema.schemata를 제외하고는 사실상 비어 있습니다. root@'%'
에 존재 mysql.user
하고 와 동일한 권한을 갖고 있다면 과 root@localhost
같은 모든 것을 볼 수 있습니다 root@localhost
.
MySQL에는 하향 나선형 효과가 있는 인증 체계가 있습니다. 연결하려는 사용자가 존재하지 않으면 더 모호한 사용자 이름을 시도합니다(와일드카드 또는 제한된 권한 허용). 내 DBA StackExchange 게시물 보기MySQL 오류: 'a'@'localhost' 사용자에 대한 액세스가 거부되었습니다(비밀번호 사용: YES). 이에 대한 자세한 내용은
결론root@localhost
: 원격지에서는 접속이 불가능합니다.