평화롭던 늦은 밤, 한동안 MySQL을 쓰다가
오래간만에 mariaDB를 사용하려고 세팅했더니 이런 에러가 떴다.
Access denied for user 'root'@'localhost'
아!! 내가 root계정의 비밀번호를 지정해주지 않았었나?
이거다 mariaDB의 비번을 지정해주면 되겠지?
update user set password=password('password') where user='root';
ERROR 1356 (HY000): View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
??? 왜 안되노?
문법이 틀렸었나? 아니? 다 맞는 거 같은데?
에러 코드를 읽어보니 뭐 mysql.user은 업데이트 저렇게 못한다는 것 같은데
뭔 개소리지? 이렇게 했던 거 같은데? 그럼 어케 해?
검색을 해봤다.
영어를 잘하진 못하는 내가 봐도 10.4이상부터 뭔 변화가 생겨서 mysql.user 테이블이 뷰테이블로 변경된 거 같다.
아 설마? 바로 버전 확인 드가자.
시부레... 10.4보다 한참 높았었네
그래도 다행히 명령어만 SET PASSWORD 이런식으로 바꿔주면 되나보다.
set password for 'root'@'localhost' = password('password');
flush privileges;
붐!
와우 해결됐다.
+++
그럼 간단한 express를 이용하여 mysql connnection 함수를 짜서 확인해보자.
const express = require("express");
const app = express();
const mysql = require("mysql");
const PORT = process.env.PORT || 4000;
const connection = mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
database: "test",
});
connection.connect((error) => {
if (error) throw error;
else console.log("connected to database");
});
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
성공!!
진짜 4시간 동안 고생했는데 덕분에 잘 해결했습니다. ㅠㅠ
감사합니다