리눅스에서 mysql에 접속
sudo /usr/bin/mysql -u root -p
을 입력하여 mysql에 접속한다.
use mysql;
다음과 같은 명령어를 입력하여 들어간 다음에
// 특정 ip만 접근을 허용하는 사용자 추가
create user '유저명'@'123.456.789.100' identified by '비번';
// 권한 허용
grant all privileges on *.* to '유저명'@'123.456.789.100';
이 때 나의 경우에는 aws ec2를 만들어서 mysql을 연결하여 사용할 것이기에, 한 포트만 사용해줄 것이다. 그래서 한 ip만 허용하여 유저가 들어가게 해놨다. 그렇지만 localhost로 해서 내부접근하는 경우와 외부접근하는 경우도 있기에 아래 사이트를 참고해서 사용자를 추가하면 된다.
💫 https://computer-science-student.tistory.com/514
또한, 포트에 대하여 유저가 들어갈 수 있게 권한을 허용해야지만 접근이 가능하다.
처음에 사용자를 만들기에만 바빠서 어떻게 하는지 모르고, 권한을 허용을 안해서 저런 에러가 계속적으로 떴다. 그래서 구글링해보니 내가 권한 허용을 안하고 데이터베이스 접속을 한다고 하니, 당연히 막은 것이었다.
그리고 user테이블에 사용자로 잘 추가되었는지 확인해본다.
select user,host from user;
user테이블에는 column이 많기 때문에 user, host등 보고자 하는 컬럼만 지정하여 볼 수 있게 하는 것이 간편하다. 그리고 내가 사용자로 지정이 되었다면 다음 단계로 넘어가야 한다.
Database 만들기
위와 같은 경우는 mysql 데이터베이스로 들어가서 사용하는 경우이다. mysql에 접속해보면 기본 테이블이 많이 존재한다. 기존에 있는 테이블과 같이 내가 사용하고자 하는 테이블을 생성하여 사용한다면 너무 많아서 효율성이 떨어질 것이다. 그래서 새로운 데이터베이스를 생성해주었다.
create database 데이터베이스이름;
기본적이지만, 참고한 사이트의 경우 데이터베이스의 이름이 따옴표로 감싸져 있어, 따옴표로 감싸고 생성했더니 계속 오류가 떴다. 데이터베이스의 이름은 그냥 따옴표없이 작성해야 된다. 유념하자!
node.js에서 mysql을 연결하고자 할 때
var mysql = require('mysql');
console.log('Get connection ...');
var conn = mysql.createConnection({
database: 'mysql',
host: "",
user: "uhee",
password: "1234"
});
conn.connect(function(err) {
if (err) throw err;
console.log("Connected!");
});
→ 위의 코드처럼 작성하고, connection이 되는지를 확인하기 위해서 코드 중간에 콘솔창에 출력하는 코드를 작성한다. 그리고 conn이라는 변수를 설정하여 자신의 mysql을 설정한다.
이 경우에 많이 헤매였는데, 여러 예시가 database를 mysql로 지정하였기 때문이다. 그런데 나는 database를 따로 만들어서 사용했기 때문에 conn.database를 바꿔 주었다.
하다보니까 위같은 에러도 떴는데 위에서 설명한 것처럼 내가 한 포트만 사용해야 되는데,
- 포트를 잘못 지정해서 오류나고,
- 유저를 생성했는데 포트에 대한 유저를 지정하지 않아서 오류가 났다.
mysql query 작성
connection.query("INSERT INTO new_table (user_id) values(?)", [user_id],
function (err, rows, fields) {
if (err) {
console.log("DB저장 실패");
}else{
console.log("DB저장 성공");
};
});
내가 참고했던 사이트의 경우, 오타가 너무 많이 나서 오류가 계속적으로 발생하였다. 사이트는 참고만 하고 직접 코드를 작성하는 것을 추천한다. query문에 자신의 데이터베이스의 테이블로 바꿔주고, 컬럼에 그에 맞게 바꿔주고 error가 나면 db저장 실패라고 뜬다. 만약 에러가 나지 않는다면 db에 저장된다.
그리고 많이 오류가 나는 부분인데 위와 같이 [user_id]와 같이 []로 넣어주고자 하는 값을 감싸야 한다. 이와 같이 하지 않을 경우 오류가 난다.
아래는 제대로 해서 db에 저장된 경우이다.
아래와 같은 사이트를 참고하여 글을 작성하였습니다.
https://yuhodots.github.io/backend/19-08-19/
https://wonyoung2257.tistory.com/7?category=805961
https://velog.io/@uoayop/MySQL-code-ERNOTSUPPORTEDAUTHMODE-errno-1251