본문 바로가기
개발 학습/데이터베이스

mysql-sequelize error : ER_ACCESS_DENIED_ERROR (using password: NO)

by StelthPark 2022. 6. 27.

mysql을 설치후 nodejs 환경에서 시퀄라이즈로 마이그레이션하려고 명령어를 입력했다.

> npx sezuelize-cli db:migrate

config 파일안에 mysql 비밀번호도 정확히 입력했고 DB 이름부터 설정을 정확하게 하였지만 아래와 같은 오류가 계속 나타났다.

 

<config.js>

const dotenv = require('dotenv');
dotenv.config();

module.exports = {
  development: {
    username: 'root',
    password: process.env.DATABASE_PASSWORD,
    database: 'authentication',
    host: '127.0.0.1',
    dialect: 'mysql',
    logging: false
  },
  test: {
    username: 'root',
    password: process.env.DATABASE_PASSWORD,
    database: 'authentication',
    host: '127.0.0.1',
    dialect: 'mysql',
  },
  production: {
    username: 'root',
    password: process.env.DATABASE_PASSWORD,
    database: 'authentication',
    host: '127.0.0.1',
    dialect: 'mysql',
  },
};

<error message>

Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: NO)

using passwrd가 no인것은 애초에 비밀번호 입력이 되지않았다는 것이고 yes같은 경우 틀린 비밀번호를 입력하면 나타난다. 그래서 구글에 찾아보니 mysql의 root계정 의 패스워드 타입때문인데 이 타입을 바꿔줘야한다.

우선 mysql을 USE한 다음 SELECT User, HOST, plugin을 mysql.user로 부터 확인해보자.

 

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

확인 결과 User중 root의 plugin이 auth_socket으로 되어 있는데 이를 mysql_native_password로 변경해주어야 일반적인 로그인이 가능해지게 된다.

 

mysql> update user set plugin='mysql_native_password' where user='root';

mysql> flush privileges;

이후 다시 select로 잘 변경되었는지 확인한 뒤 exit를 하자. mysql -u root -p로 패스워드 입력후 잘 접속 되나 확인한 뒤

다시 시퀄라이즈로 마이그레이션을 하는 명령어를 입력해보자.

 

 

 

댓글