티스토리 뷰

하아..별걸로 다 삽질을 하네.

그래도 건진게 있으니까 한시름 놓습니다.


오늘 이슈는 localhost 로의 mysql 접속입니다.

$ mysql -uroot -ptest
ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)

일단 패스워드가 틀렸다는 에러인데.. (test라는 패스워드는 블로깅을 위한 샘플임) "root가 접속을 하는데 패스워드가 틀렸다" 입니다.

당연한 이야기죠? 근데 외부에서 접속할때 항상 test라는 패스워드를 써왔는데 이게 뭔가 싶었죠, 검색을 해보면 패스워드 초기화를 위해 mysqld를 skip-grant-tables 옵션을 써서 다시 올리고 패스워드를 재설정 하라는 내용밖에 안보입니다.


결과적으로는 고정관념(?)의 폐해 였습니다.

아이디와 패스워드는 1:1 매치일것이다.


이게 문제입니다.

mysqld은 기본적으로 아이디와 패스워드가 1:1 매치가 아니었네요.

접속이 되는 외부에서 user 테이블을 살펴보면

*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: *7B844B41A3799185EBF33B603FA8C632E65CA3EF
........생략
*************************** 3. row ***************************
                  Host: 127.0.0.1
                  User: root
              Password: *DF901ED0337CFD4DEB37B135C6BBF849E10058A9
........생략
*************************** 7. row ***************************
                  Host: %
                  User: root
              Password: *DF901ED0337CFD4DEB37B135C6BBF849E10058A9
........생략

보이시죠요?

root 라는 id 1개에 대해서 3개의 패스워드를 갖을 수 있습니다.

외부에서 접근하는(Host:%) 경우와, localhost 로 접근하는 경우, 127.0.0.1(이것과 localhost를 구분짓고 있네요?)에서 접근하는 경우. 각기 다른 패스워드를 갖습니다.


혹시 삽질하는 또 다른 피해자(개발자?)가 없기를 바랍니다.

'개발 > DB' 카테고리의 다른 글

[mysql] update 문법  (0) 2015.12.04
[mysql] 컬럼 타입 INT 괄호 옵션  (1) 2015.12.01
[mysql] unixtime 갖고 놀기  (0) 2014.03.20
[mysql] 결과로 출력 된 열을 행으로 출력  (0) 2013.11.25
[mysql] concat()  (0) 2013.09.26
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday