"Host '192.168.48.4' is not allowed to connect to this MySQL server"
또는
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
도커를 빌드하는데 위와 같은 문구가 발생하거나, mysql 컨테이너로 접속하면 mysql root 권한이 없다고 뜨는 경우가 있다.
root 권한도 잘 줬고 데이터도 디비에 잘 들어가는거 같은데 왜 권한 문제가 발생하는지 모르는 순간을 위해 남겨둔다.
이런 문제가 발생할 때는 주로 데이터파일을 다른 것으로 바꿔서 다시 저장할때 등장했다.
볼륨은 데이터 저장을 하고 다른 컨테이너에서 참조하게 하기 위해 사용되는데, 여러번 데이터 파일이 바뀌면서 기존 데이터들이 volume에 남아 있어 에러를 띄우는 것이었다.
해결방법은 아래처럼 volume을 다 지우고 다시 빌드를 해보면 된다.
docker volume prune
추가적으로 csv 파일을 사용할때는 마지막 줄에 비어있는 줄이 없도록 해야한다.
load data infile '/lib/mysql-files/nutritions.csv'
into table Nutritions fields terminated by ',' enclosed by '"' lines terminated by '\r\n' ignore 1 rows;
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 73
csv에서 파일을 읽어올때 비어있는 줄이 있으면 그 줄도 데이터 인줄 알고 읽어 들이다가 primary key인 id가 없어서 에러를 발생시킨다.