SLES 11 SP2에서 MySQL 서버 버전 5.0.96을 실행 중이며 안전한 방법으로 사용자 암호를 변경하려고합니다. 물론하여 사용자의 암호를 변경하는 것은 매우 간단합니다 :보안을 위해 mysql 암호를 변경하십시오 - 모범 사례
SET PASSWORD FOR 'user'@'192.168.0.%' = PASSWORD('mysecret');
하지만이 쿼리는 쿼리 로그, 바이너리 로그, 그리고 MySQL의 기록 파일에 영향을 찾습니다. 클라이언트를 시작하기 전에
export MYSQL_HISTFILE=/dev/null
, 그리고 :이를 방지하기 위해, 내가 사용
SET sql_log_bin = 0;
SET sql_log_off = 1;
이후. Grep과 mysqlbinlog는 내 계획이 함께한다는 것을 증명하지만, MySQL이/dev/null의 파일 모드 비트를 0600으로 자동 변경했다고 간과 해 왔습니다.
이 시점에서 나는 사용자의 암호를 안전하게 변경하는 더 좋은 방법이 없는지 스스로에게 묻습니다. 그리고 지금 나는 당신에게 묻고 있습니다 :
MySQL 서버의 사용자 암호를 안전하게 변경하는 가장 좋은 방법은 무엇입니까?
MySQL의 기본 암호 저장 형식은 매우 약한 unsalted 해시 (double-SHA1 5.5)입니다. mysql 테이블 데이터 파일에 액세스 할 수있는 사람이면 누구나 암호를 강제로 빼낼 수 있습니다. 따라서 중요한 비밀번호를 MySQL 비밀번호로 다시 사용하지 마십시오. – bobince
루트로 export MYSQL_HISTFILE =/dev/null을 사용하는 것은 매우 나쁜 생각입니다. MySQL은/dev/null 파일을 재생성합니다. 따라서 파일 모드 비트와 소유권이 변경됩니다. 또한/dev/null은 더 이상 블록 장치가 아닙니다. 이것은 끔찍한 결과를 초래할 수 있습니다. 일부 데몬은 더 이상 시작할 수 없습니다. –
하나의 가능성은 mysql 외부에서 암호 해시를 계산하는 것입니다. 이런 식으로 mysql은 패스워드를 모른다. '*'. uc (sha1_hex (sha1 ('mysecret'))))를 사용하여 Digest :: SHA 모듈을 사용하여 PERL에서이를 수행 할 수 있습니다. –