MariaDB Ignoring query to other database 발생 이유

리눅스에서 MySQL 또는 MariaDB에 로그인했을 때 쿼리를 날리려고 하자 Ignoring query to other database라는 정체불명의 에러가 나타났습니다.

MariaDB [(none)]> show databases;
Ignoring query to other database

Ignoring query to other database

이 문제에 대해 구글링을 하면 아주 단순한 원인과 해법을 찾을 수 있습니다. 대부분 비슷한 내용인데, 마음에 들지는 않는 결론입니다.

 

로그인할 때 오타를 냈다는 건데요.

mysql -u root -p

 

이렇게 로그인 해야하는데

 

mysql -root -p

이렇게 u를 빼고 로그인했다는 겁니다.

 

확인해 보면 실제로 틀린 말은 아닙니다. mysql -root -p로 로그인을 하고 쿼리를 날리면 Ignoring query to other database 에러가 다시 발생하는 걸 볼 수 있었습니다.

 

mysql -root -p

 

그렇기 때문에 로그인할 때 mysql -u [계정명] -p 옵션을 올바르게 로그인해야 한다는 겁니다.

 

다시 말하지만, 틀린 말은 아닌데 여전히 의문이 남습니다. mysql -root -p로 어떻게 로그인이 되는 거죠? "오타를 내서 문제가 생긴 거다"라는 논리적이지 못한 결론이 마음에 들지 않습니다. 오타를 내서 로그인이 안 됐으면 모르겠는데, 로그인이 되잖아요. 그래서 좀 더 알아봤습니다.

 

mysql -root -p로 로그인이 가능한 이유

-root 라는 게 무슨 의미인데 로그인이 되는 걸까요. 결론부터 말씀드리면 이게 얼핏 root 라는 계정으로 무언가를 하려는 명령어처럼 보이지만 아닙니다. 사실은 -r -o -o -t 라는 개별 알파벳 옵션으로 mysql을 실행하는 명령어로 인식되는 거 같습니다.

 

확인하기 위해 아래의 방식으로 모두 로그인해봤습니다.

mysql -r -p
mysql -o -p
mysql -t -p

 

mysql -r -p과 mysql -t -p는 모두 로그인도 되고 데이터베이스 쿼리도 됩니다. 그러나 mysql -o -p는 로그인은 되지만 Ignoring query to other database 에러가 발생하는 걸 확인했습니다.

 

mysql -o -p

 

찾았습니다. Ignoring query to other database를 발생시키는 문제는 정확히 말하면 -root가 아니라 -o 였던 겁니다.

 

mysql의 옵션 중 아래의 내용을 발견했습니다. -o는 현재 선택된 데이터베이스 외의 다른 데이터베이스에 대한 질의를 무시하는 옵션입니다. 그래서 다른 데이터베이스에 대한 쿼리를 무시(Ignoring query to other database)하는 에러가 나왔던 겁니다.

 

-o 옵션 설명

 

이상 알아도 별 쓸모는 없는(?) mysql -root -p에 대한 설명이었습니다.

반응형

댓글

Designed by JB FACTORY