해결 방법
systemd 환경변수 이용
1. 서비스 중지
systemd stop mysqld
2. skip-grant-tables 옵션 넣기
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
3. mysqld 시작
systemctl start mysqld
4. 패스워드 없이 접속
mysql -u root
5. 패스워드 변경
flush privileges;
alter user 'root'@'localhost' identified by 'NewPassword';
flush privileges;
6. 옵션 제거 및 정상 재시작
systemctl unset-environment MYSQLD_OPTS
systemctl restart mysqld
옵션
--skip-grant-tables
: 권한 테이블 mysql.user를 검사하지 않도록 하는 옵션
: 원래 정상 접속 시(client -> password auth -> mysql.user 검사 -> 접속 허용)
: --skip-grant-tables 사용 시(client -> 바로 접속 허용)
--skip-networking: MySQL TCP 네트워크 포트를 아예 오픈 하지 않음
: 만약 네트워크까지 열려 있으면 외부 공격자가 무비밀번호로 접속 할 수 있기 때문에 해당 여지를 원천적으로 차단
: 참고사항으로 TCP는 막히지만 Unix Socket은 살아 있기 때문에 로컬 쉘에서는 접속이 가능한 부분
'데이터베이스 > MySQL' 카테고리의 다른 글
| MYSQL 기본 사용법 (0) | 2013.10.29 |
|---|