2011-11-10 3 views
0

&을 컴파일하여 x86_64 리눅스 서버에 mysql-5.1.59를 설치했습니다.mysqladmin과 password() 함수의 해시 값이 다른 경우

먼저 나는 CLI 및 로그인에 루트 암호를 설정 :

$ bin/mysqladmin -uroot password 'somepass' 
$ bin/mysql -uroot -p 'somepass' 
mysql> 

로그인 성공!

mysql> grant all privileges on mydb.* to 'myuser'@'localhost' identified by 'somepass'; 
mysql> flush privileges; 

암호는 정확히 루트와 동일합니다 :

은 그럼 SQL 문을 사용하여 사용자를 만들었습니다. 내가 조회 한 후

는하지만 :

mysql> select host,user,password from mysql.user; 

나는 두 계정의 암호 값이 동일한가없는 것으로 나타났습니다. 그리고 myuser로 로그인 mysql을 시도했지만 실패했습니다.

mysql> update mysql.user set password=PASSWORD('somepass') where user='root'; 
mysql> flush privileges; 

그럼 난 더 이상 루트로 mysql을 로그인 할 수 없습니다 : 나는 루트 암호 이런 식으로 변경하면 그런데

$ bin/mysql -uroot -p 
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 

이 결코 내 다른 서버에서 발생하지 않습니다. 이 문제는 OS와 관련이있는 것처럼 보입니다. 어떻게 해시 된 값이 서로 다른 값을 가질 수 있습니까? 감사합니다.

답변

0

MySQL 설명서는이 영역에서 약간 희소하지만 암호를 암호화한다고 가정합니다.

보안을 위해 일반적으로 "salt"라는 임의 값이 해시되기 전에 암호에 추가됩니다. salt를 사용하면 동일한 비밀번호의 결과 해시가 매우 다릅니다. 위키

:

이점 소금에 절인 암호를 사용하여 제공되는 소금이 충분히 큰 제공, 저장된 값에 대한 룩업 테이블을 이용한 사전 공격이 허무하고있다. 즉, 공격자는 너무 많은 공간을 차지하기 때문에 해시 된 값 (패스워드 + 소금)의 미리 계산 된 룩업 테이블 (즉, 무지개 테이블)을 생성 할 수 없다. 사전 사전 공격은 여전히 ​​가능하지만 미리 계산할 수 없기 때문에 훨씬 느립니다.

+0

질문에서 언급 한 두 가지 방법이 각각 다른 소금을 사용하는 것처럼 보입니다. – Dongying

+0

글쎄 그것은 마침내 그것이 내 잘못이라고 밝혀졌습니다 ... 내 암호에 백 슬래시가 있으며 SQL 문에서이 암호를 사용하는 것을 잊어 버렸습니다 ... – Dongying

+0

소금에 절인 암호를 사용하는 경우 모든 암호는 고유 소금. 다시 한번 이것이 MySQL의 암호가 작동하는 방법인지는 모르겠지만 문제가 해결되어 기쁩니다. –

관련 문제