DB/MySQL

[mariadb] 특정 계정의 Host를 변경할 때, View 관련 오류 발생 문제

채윤아빠 2022. 11. 25. 23:45
728x90
반응형

문제점 및 증상

특정 계정의 Host를 변경할 때 다음과 같이 View 관련 오류가 발생하였습니다.

MariaDB [mysql]> update user set Host = '172.16.10.%' where Host = '%' and 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


이 문제에 대한 해결 방법일 정리해 둡니다.


해결방안

MariaDB-10.4+ 이후부터 mysql.user 가 테이블이 아니라 VIEW로 변경되었습니다.

따라서 직접적으로 INSERT, UPDATE가 안되고, "ALTER USER", "SET PASSWORD" 구문일 이용해야만 합니다.

Host를 변경하고자 할 때는 아래와 같이 "RENAME" 구문을 이용합니다.

MariaDB [mysql]> RENAME USER "root"@"%" TO "root"@"172.16.10.%";
Query OK, 0 rows affected (0.001 sec)

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

특정 로그인 계정에 대한 비밀번호를 변경하고자 할 때는 다음과 같이 수행합니다.

-- ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('로그인 비밀번호');
FLUSH PRIVILEGES;

참고자료

"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":https://stackoverflow.com/questions/64841185/