본문 바로가기
Project/Error Management

[Error] MySQL Access denied for user 'user_id'@'localhost'

by 꾸압 2022. 11. 2.

 

<설명>

  - root 권한자를 쓰지 않기 위해 새로운 user를 생성하고 권한을 주고자 했다.

  - 제목의 Error 난다? 해결해보자

 


 

<방안>

$ [MySQL 에 접속]
$
$ CREATE USER '[user_id]'@'%' identified by '[user_password]';
$
$ GRANT ALL PRIVILEGES ON *.* TO '[user_id]'@'%';
$
$ flush privileges;
$
$ CREATE DATABASE IF NOT EXISTS [DB_name];
$
$ USE [DB_name];

  - flush privileges 를 해야 권한 변경사항이 적용됨.

  - Database에 접속이 된다면 성공.

 


 

  - 각기 다른 영역(국소 db, table)에 따라 권한 부여 가능.

$ GRANT ALL PRIVILEGES ON *.* TO '[user_name]'@'localhost';

$ GRANT ALL PRIVILEGES ON [db_name].* to '[user_name]'@'localhost';

$ GRANT ALL PRIVELEGES ON [db_name].[table_name] to '[user_name]'@'localhost';

$ GRANT SELECT ON [db_name].[table_name] to '[user_name]'@'localhost';

% GRANT UPDATE([Column_1, Column_2]) ON [db_name].[table.name] TO '[user_name]'@'localhost';

 


 

  - 권한을 준 User는 쓰지 않을 때 삭제하자. 위험하다.

DELETE FROM mysql.user WHERE user='[user_name]';

<이건 예시>
DELETE FROM mysql.user WHERE user='user_test';


<DROP을 쓰면 동시성 ERROR가 나니 DELETE만 쓰자>
DROP USER [user_name]@[server_name];

ex) DROP USER dropthebit@localhost;

 


 

  - User에게 부여한 권한을 삭제하는 것도 방법.

$ REVOKE ALL ON [db_name].* '[user_name]'@'localhost';

 

 


 

<출처 1> https://velog.io/@rladuswl/MySQL-%EC%97%B0%EB%8F%99-%EC%97%90%EB%9F%AC

<출처 2> https://damduc.tistory.com/4

<출처 3> https://sleepyeyes.tistory.com/32

<출처 4>

 

 

댓글