[ft_sever] mysql 오류 & 해결방법

gaeun·2020년 9월 23일
0

ft_server

목록 보기
1/1

mysql 접속 오류

  1. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    mysql -u [user name] -p [your password] 입력
    ex. mysql -u root -p 1234

  2. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    mysql> use mysql
    mysql> update user set password=password('바꿀 비밀번호') where user='사용자 이름';
    mysql> flush privileges;

1번의 경우 비밀번호를 입력하지 않아서 그렇고, 2번의 경우 비밀번호가 틀린 경우이므로 (진짜 비밀번호를 모르겠으면) 새 비밀번호로 설정하고 새로고침[flush] 한다.

위의 방법으로도 해결이 안되거나, Dockerfile로 돌렸을 때 동일한 에러가 발생하는 경우 해결방법

1) config.inc.php 파일에서 $cfg['Servers'][$i]['AllowNoPassword'] 부분을 true로 바꿔준다.
2) mysql에 접속해서 Grant all privileges on *.* to 'user'@'%' identified by '';를 입력한다.

  • 비밀번호 없이 모든 사용자에게 모든 데이터베이스 권한을 부여한다는 뜻. 원래는 by 뒤의 따옴표 안에 비밀번호를 입력해야 함.
  • Dockerfile에 작성할 경우
    echo "위의 명령문 Grant~~" | mysql -u root --skip-password;를 써주거나
    mysql < 파일.sql로 따로 생성한 파일에 위의 명령어(Grant~~)를 입력해 mysql에 넣어주기
    -> 전자는 echo를 통해 출력한 내용을 |(파이프라인) 다음에 나오는 것에 입력한다는 뜻이다. 후자는 입력 리다이렉션에 해당한다.

3) 사용할 데이터베이스 설정값에 비밀번호를 ''(없음)으로 지정한다.
-> 내 프로젝트의 경우, mysql에 wordpress를 추가하여 사용하였는데,
wordpress DB 설정값인 wp-config.php 파일에서 비밀번호 설정부분을 define( 'DB_PASSWORD', '' ); 이렇게 공란으로 처리해야 정상적으로 mysql에서 작동한다.

위 3가지를 전부 설정해줘야 하며, 이 방법은 mysql 비밀번호를 없애고 AllowNoPassword를 true로 설정하여 mysql에 비밀번호 없이 접속하는 방법이다. 따라서 보안 상의 위험이 있으므로 개인 프로젝트 외에서는 사용을 지양한다.

.
.
.

<번외>

profile
비전공자의 개발 도전기

0개의 댓글