```
SQL The user specified as a definer ('root'@'%') does not exist 해결하는 한 가지 방법
```

목차
- 소개
- 원인 1 외부 서버 접속
- 원인 2 Stored Procedure 정의
- 근본 해결방안
소개
SQL 에서 The user specified as a definer ('root'@'%') does not exist 문제가 발생하는 경우
정의된 ('root'@'%') 유저가 확인이 안 되기 때문입니다
원인 1
외부 서버에서 접속하는 경우
'%' 가 와일드카드로서 외부에서 접속이 가능하게 하는 반면
'localhost'의 경우 내부에서만 접속이 가능합니다
해결방안
유저의 host가 localhost 인지 와일드카드인지 아니면 지정해 둔 값인지 확인합니다
SELECT User, Host FROM mysql.user WHERE User = 'root' AND Host != 'localhost';
SELECT User, Host FROM mysql.user;
root의 호스트를 필요에 맞게 변경하고
권한을 준다음
적용을 합니다
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
원인 2
Stored Procedure에
CREATE DEFINER=`root`@`localhost` PROCEDURE `SP이름`()으로 돼있다면
host가 일치하지 않는 경우 에러를 발생합니다
해결방안
정의된 호스트를 확인하고 해당되는 호스트에 맞게 SP에 정의된 CREATE DEFINER를 수정합니다
SELECT User, Host FROM mysql.user WHERE User = 'root' AND Host != 'localhost';
근본 해결방안
root를 외부에 노출하면 안 됩니다
따라서 해당 에러에 root가 보이는 것부터가 문제입니다
따라서 아래와 같이 유저를 정의해서 사용하시면 좋습니다
CREATE USER 'dbadmin'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO 'dbadmin'@'localhost';
grant all on *.* to 'dbadmin'@'localhost' identified by '비밀번호' with grant option;
FLUSH PRIVILEGES;
필요시 기존 유저 삭제 후 확인 후에 진행합니다
DROP USER 'db_admin'@'localhost';
SELECT User, Host FROM mysql.user;
참조
MySQL error 1449: The user specified as a definer does not exist
When I run the following query I get an error: SELECT `a`.`sl_id` AS `sl_id`, `a`.`quote_id` AS `quote_id`, `a`.`sl_date` AS `sl_date`, ...
stackoverflow.com
https://stackoverflow.com/questions/1709078/how-can-i-restore-the-mysql-root-user-s-full-privileges
How can I restore the MySQL root user’s full privileges?
I accidentally removed some of the privileges from my MySQL root user, including the ability to alter tables. Is there some way I can restore this user to its original state (with all privileges)?
stackoverflow.com
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
'DB' 카테고리의 다른 글
| PostgreSQL16 pgadmin4 DB Backup and Restore 해보기 (0) | 2024.01.20 |
|---|---|
| MySql Nodejs Bcrypt 암호화 설정하는 한가지 꿀팁 (0) | 2023.11.02 |
| PostgreSQL에서 값이 존재하는지 확인하는 한가지 방법 / Exists (0) | 2023.01.07 |
| String으로 PK 만들때 Performance 높이는 한가지 방법 (1) | 2022.11.23 |
| 생각) SQL 서버에서 공백문자열을 쓰는게 NULL을 쓰는것 보다 좋은 한가지 이유 (0) | 2022.10.31 |