하나하나 확인 중에 있으며 문제가 또 발생할 경우 다양한 방법들을 작성할 예정입니다.
원인 발견(2023-12-31)
기존 도커 설정시에 db 아이디와 패스워드를 기본으로 설정을 해놓았는데 이 점을 파고들어서 익명의 누군가가 비트코인을 내놓으라는 요구를 하기위해 데이터베이스를 삭제하고 흔적을 남겨놓은것입니다.
데이터베이스가 삭제가 되면 이러한 폴더가 생성이 되고 이 안에 들어가서 확인을 해보면 이러한 흔적을 남겨놓고 가는데요 해석을 해 보자면 "삭제된 데이터베이스를 복구하고싶으면 48시간 이내에 비트코인을 지불해라 지불 후에 우리에게 연락을 취하면 삭제된 데이터베이스를 복구해주겠다" 라는 뜻을 내포하고있습니다.
MariaDB [README_TO_RECOVER_A]> select * from RECOVER_YOUR_DATA;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| text |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| All your data is backed up. You must pay 0.017 BTC to 1KdmpErgS3isFf8FrLaTfGHLQPKNsv839G In 48 hours, your data will be publicly disclosed and deleted. |
| After paying send mail to us: rambler+2hpzg@onionmail.org and we will provide a link for you to download your data. Your DBCODE is: 2HPZG |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
해결방안 : 신원미상이 DB에 접근할수 없게 더 안전한 password로 변경할것을 권장드립니다.
현재 docker에서 mariadb를 사용하여 database를 구축하고 있습니다.
근데 갑자기 terminal에 database가 존재하지 않는다는 에러가 떴고 확인해 보니 실제로 mariadb의 데이터베이스가 증발한 것을 확인했습니다.
발생한 시점들 마다 docker의 log를 확인해 보았더니 전부 starting shutdown이 찍힌 것을 확인을 하였습니다.
vscode error
node:events:491
throw er; // Unhandled 'error' event
^
Error: Unknown database 'Youtube'
at Packet.asError (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\packets\packet.js:728:17)
at ClientHandshake.execute (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\commands\command.js:29:26)
at Connection.handlePacket (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\connection.js:478:34)
at PacketParser.onPacket (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\connection.js:97:12)
at PacketParser.executeStart (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\connection.js:104:25)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Readable.push (node:internal/streams/readable:234:10)
Emitted 'error' event on Connection instance at:
at Connection._notifyError (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\connection.js:252:12)
at Connection._handleFatalError (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\connection.js:183:10)
at Connection.handlePacket (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\connection.js:488:12)
at PacketParser.onPacket (C:\Users\first\Desktop\programmers\youtube-demo\node_modules\mysql2\lib\connection.js:97:12)
[... lines matching original stack trace ...]
at Readable.push (node:internal/streams/readable:234:10) {
code: 'ER_BAD_DB_ERROR',
errno: 1049,
sqlState: '42000',
sqlMessage: "Unknown database 'Youtube'",
sql: undefined,
fatal: true
}
시도 1 docker를 로컬데이터로 연결하기
호스트시스템(로컬)의 디렉토리에 바인딩 마운트를 하면 컨테이너의 내부에 연결한 로컬폴더가 있는 것처럼 동작시킬 수 있습니다.
docker run --name mariadb -d -p 3306:3306 --restart=always -v C:/mariadb/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mariadb
"Mounts": [
{
"Type": "bind",
"Source": "C:/mariadb/data",
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
장점 : 위 경우 도커가 완전이 날아가고 이미지를 새로 만들어도 데이터가 유지된다.
단점 : docker cli명령을 통해 관리할 수 없습니다. 또한 로컬에서 삭제나 수정을 할 수 있기 때문에 보안이 취약합니다.
시도 2 window update
docker와 window10에서 충돌이 일어난다는 이야기를 들어서 혹시나 하는 마음에 window upgrade를 진행하였습니다.
하지만 동일 한 이슈가 발생하는것을 확인하였습니다.
'ERROR' 카테고리의 다른 글
[Error] listen EACCES: permission denied 8080 (0) | 2023.12.29 |
---|---|
[error] Docker DB schema 연동 안됐을 때 + Access denied for user 'root'@'172.17.0.1' (0) | 2023.12.20 |
[error] address already in use :::8000 (0) | 2023.12.13 |