SQUELIZE 를 위한 MY SQL 설정

분명히 기억 상 예전에는 mysql 설정하기 어려웠던 걸로 기억합니다. 아마 제가 제대로 된 자료를 찾지 못해서 그런 것 같은데 nodejs 교과서를 참조하여 공부하던 중 mysql을 설정하는 방법을 정리할 필요가 있어 정리합니다.

$sudo apt update
$sudo apt install mysql-server
$sudo mysql_secure_installation

일단 mysql을 설치합니다.

  "development": {
    "username": "root",
    "password": "root 비밀번호",
    "database": "nodejs",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },

nodejs 318 페이지에 config/config.json 파일을 수정하라고 나옵니다.

sudo mysql -h localhost -u root -p

하지만 첫 번째 문단에 있는 방법으로 설치하게 되면, sudo 권한으로 접속해야 하는데 그러면 Squelize를 이용해 연결할 때 권한 없음 에러가 발생합니다.

mysql> SELECT User, Host, plugin From mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | auth_socket           |
+------------------+-----------+-----------------------+

보통은 이 문제에 대한 해결책으로 root plugin을 caching_sha2_password로 수정하라는 방법을 알려 주는데 루트 사용자를 수정하지 않고 새로운 사용자를 추가하는 방법으로 해결하고자 합니다.

루트 권한을 이용해 로그인 할 경우는 모든 데이터베이스에 접근할 수 있지만, 새로운 사용자를 만들고 그 사용자에게 지금 공부하는 데이터베이스의 허용 권한만 주는 것이 보안에 좀 더 안전하기 때문입니다.

mysql> create user nahyun@localhost identified by '비밀번호';
mysql> grant all privileges on nodejs.* to nahyun@localhost;

mysql에 접속하여 해당 커맨드를 사용하여 유저를 추가하고, 데이터베이스 접근 권한을 추가합니다.

  "development": {
    "username": "nahyun",
    "password": "비밀번호",
    "database": "nodejs",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },

config/config.json을 수정하면 연결이 잘 되었다는 메시지와 함께 연결을 완료하게 됩니다.

-예전에 라즈베리 파이를 사서 데이터베이스! 공부해보자 라는 느낌으로 phpmyadmin을 써본 적이 있는데 그때 참 문제가 많았던 것으로 기억합니다, 특히 mysql에 접속이 안 되더라구요..? 그리고 시간이 지나 오늘 여김 없이 책에 있는 예제를 따라 했지만, 문제가 발생한 것을 보고, 이런 거 주변 프로그래머들은 정리해놓던데, 라는 게 기억이 나서 여기에 정리해보았습니다.!

댓글 남기기