외부 볼륨을 연결하는 동안 도커 구성과 문제를 사용하여 mariadb 10.4.8 도커 컨테이너를 사용하는 사용자 'root'@'localhost'에 대한 액세스가 거부되었습니다.
Docker는 처음입니다.어플리케이션용으로 mariadb의 도커 컨테이너를 작성하려고 했는데 mariadb 컨테이너를 실행하면 사용자 'root'@'localhost' (패스워드:YES 사용)도커파일에 대한 액세스가 거부됩니다.
다음은 제가 사용하고 있는 도커 구성입니다.
version: '3'
services:
mysql:
image: mariadb
container_name: mariadb
volumes:
- dbvolume:/var/lib/mysql
- ./AppDatabase.sql:/docker-entrypoint-initdb.d/AppDatabase.sql
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_ROOT_USER: root
MYSQL_USER: root
MYSQL_PASSWORD: root123
MYSQL_DATABASE: appdata
ports:
- "3333:3306"
volumes:
dbvolume:
몇 개의 링크를 참조해 여러 번 시도했지만 도커 컨테이너에 애플리케이션을 연결할 수 있었지만 AppDatabase Import에 실패했습니다.도커 컨테이너 작성 시 sql 스크립트를 사용합니다.
그러나 동일한 도커 구성 파일을 사용하여 mariadb를 응용 프로그램에 연결할 수 없습니다.또한 이 도커 구성 파일도 SQL 스크립트를 데이터베이스로 Import하지 않을 수 있습니다(내가 관찰한 로그에 근거함).
도커 구성 실행 중에 생성된 도커 로그를 다음에 나타냅니다.
$ docker logs 3fde358ff015
2019-09-24 17:40:37 0 [Note] mysqld (mysqld 10.4.8-MariaDB-1:10.4.8+maria~bionic) starting as process 1 ...
2019-09-24 17:40:37 0 [Note] InnoDB: Using Linux native AIO
2019-09-24 17:40:37 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-09-24 17:40:37 0 [Note] InnoDB: Uses event mutexes
2019-09-24 17:40:37 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-09-24 17:40:37 0 [Note] InnoDB: Number of pools: 1
2019-09-24 17:40:37 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-09-24 17:40:37 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2019-09-24 17:40:37 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
2019-09-24 17:40:37 0 [Note] InnoDB: Completed initialization of buffer pool
2019-09-24 17:40:37 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2019-09-24 17:40:37 0 [Note] InnoDB: Upgrading redo log: 2*50331648 bytes; LSN=21810033
2019-09-24 17:40:38 0 [Note] InnoDB: Starting to delete and rewrite log files.
2019-09-24 17:40:38 0 [Note] InnoDB: Setting log file ./ib_logfile101 size to 50331648 bytes
2019-09-24 17:40:38 0 [Note] InnoDB: Setting log file ./ib_logfile1 size to 50331648 bytes
2019-09-24 17:40:38 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2019-09-24 17:40:38 0 [Note] InnoDB: New log files created, LSN=21810033
2019-09-24 17:40:38 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2019-09-24 17:40:38 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-09-24 17:40:38 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-09-24 17:40:38 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2019-09-24 17:40:38 0 [Note] InnoDB: Waiting for purge to start
2019-09-24 17:40:38 0 [Note] InnoDB: 10.4.8 started; log sequence number 21810033; transaction id 14620
2019-09-24 17:40:38 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2019-09-24 17:40:38 0 [Note] Plugin 'FEEDBACK' is disabled.
2019-09-24 17:40:38 0 [Note] Server socket created on IP: '::'.
2019-09-24 17:40:38 0 [Warning] 'proxies_priv' entry '@% root@c980daa43351' ignored in --skip-name-resolve mode.
2019-09-24 17:40:38 0 [Note] InnoDB: Buffer pool(s) load completed at 190924 17:40:38
2019-09-24 17:40:38 0 [Note] Reading of all Master_info entries succeeded
2019-09-24 17:40:38 0 [Note] Added new Master_info '' to hash table
2019-09-24 17:40:38 0 [Note] mysqld: ready for connections.
Version: '10.4.8-MariaDB-1:10.4.8+maria~bionic' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
가져오려는 SQL 스크립트:
create database appdata;
use appdata;
CREATE TABLE `appdatadetails` (
`Name` varchar(8) NOT NULL,
`appIndex` int(11) NOT NULL,
`connector` varchar(16) DEFAULT NULL,
`intName` varchar(12) DEFAULT NULL,
`intIndex` int(11) DEFAULT NULL,
PRIMARY KEY (`Name`,`appIndex`)
)
제가 무엇을 잘못하고 있는지 이해할 수 있도록 도와주세요.여러 블로그에 게재되어 있는 가능한 모든 해결책을 시도해 보았습니다.
업데이트:
최신 정보:
10.1에서 mariadb 도커 이미지를 가동할 수 있었습니다.하지만 볼륨을 첨부해도 여전히 문제가 있습니다.
도커 구성:
version: '3'
services:
mysql:
image: mariadb:10.1
container_name: mariadb
volumes:
- container-volume:/var/lib/mysql
- ./AppDatabase.sql:/docker-entrypoint-initdb.d/AppDatabase.sql
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: appdata
ports:
- "3333:3306"
volumes:
container-volume:
그리고 로그 오류 메시지인 "If I attach container-volume volume" (컨테이너 볼륨 볼륨을 첨부하면)
Creating mariadb ... done
Attaching to mariadb
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] mysqld (mysqld 10.1.41-MariaDB-1~bionic) starting as process 1 ...
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Using mutexes to ref count buffer pool pages
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: The InnoDB memory heap is disabled
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Compressed tables use zlib 1.2.11
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Using Linux native AIO
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Using SSE crc32 instructions
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Initializing buffer pool, size = 256.0M
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Completed initialization of buffer pool
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] InnoDB: Highest supported file format is Barracuda.
mariadb | InnoDB: No valid checkpoint found.
mariadb | InnoDB: A downgrade from MariaDB 10.2.2 or later is not supported.
mariadb | InnoDB: If this error appears when you are creating an InnoDB database,
mariadb | InnoDB: the problem may be that during an earlier attempt you managed
mariadb | InnoDB: to create the InnoDB data files, but log file creation failed.
mariadb | InnoDB: If that is the case, please refer to
mariadb | InnoDB: http://dev.mysql.com/doc/refman/5.6/en/error-creating-innodb.html
mariadb | 2019-09-25 6:56:26 140542855440384 [ERROR] Plugin 'InnoDB' init function returned error.
mariadb | 2019-09-25 6:56:26 140542855440384 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
mariadb | 2019-09-25 6:56:26 140542855440384 [Note] Plugin 'FEEDBACK' is disabled.
mariadb | 2019-09-25 6:56:26 140542855440384 [ERROR] Unknown/unsupported storage engine: InnoDB
mariadb | 2019-09-25 6:56:26 140542855440384 [ERROR] Aborting
mariadb |
mariadb exited with code 1
container-volume을 삭제하면 .sql 스크립트를 Import하여 정상적으로 실행됩니다.
작업 스크립트를 사용하여 업데이트됨:이전에 mariadb 10.4.8 또는 최신 버전을 사용하여 DB에 접속하여 외부 볼륨을 첨부하는 문제에 직면했습니다.
이제 (@Adii의 제안대로) 다운그레이드하여 시도했습니다.완벽하게 실행되므로 외부: true in volumes 서비스를 지정할 필요가 없습니다.
version: '3'
services:
mysql:
image: mariadb:10.1
container_name: mariadb
volumes:
- ./dbvolume:/var/lib/mysql
- ./AppDatabase.sql:/docker-entrypoint-initdb.d/AppDatabase.sql
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: appdata
ports:
- "3333:3306"
새 컨테이너를 생성하더라도 새 사용자 및 키에 영향을 미칩니다.
마운트 위치를 삭제하면 이 위치에서 사용자 이름과 암호가 선택되므로 DB init 스크립트도 실행되지 않습니다.
volumes:
- dbvolume:/var/lib/mysql
또한 당신은 필요 없다.
create database appdata;
데이터베이스가 이미 작성되어 있는 경우:
MYSQL_ROOT_PASSWORD: root123
MYSQL_ROOT_USER: root
MYSQL_DATABASE: appdata
이 순서입니다.
업데이트:
루트가 이미 정의된 대로 사용자 루트를 제거합니다.로 시험해 볼 수 있다.
version: '3.7'
services:
mysql:
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: appdata
image: mariadb
또는 두 번째 사용자가 달라야 합니다.
version: '3.7'
services:
mysql:
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: appdata
MYSQL_USER: test
MYSQL_PASSWORD: root123
image: mariadb
로 시험해 볼 수 있다.
docker exec -it container_name bash -c "mysql -u test -proot123"
또는
docker exec -it mysql bash -c "mysql -u root -proot123"
문제가 해결되지 않으면 DB 이미지를 삭제하고 새 이미지를 꺼냅니다.
이미지 태그 「」를 사용해 .10.1
container-volume을 삭제하면 .sql 스크립트를 Import하여 정상적으로 실행됩니다.
로케이션을 마운트하면 컨테이너가 이미 DB가 있다고 예상하기 때문에 init 스크립트는 실행되지 않습니다.또는 명명된 볼륨을 삭제하고 새 볼륨을 생성하려고 합니다.
따라서 위치를 마운트하고 MySQL 명령을 사용하여 DB를 Import한 후 마운트 위치를 다음에 사용합니다.
언급URL : https://stackoverflow.com/questions/58085851/access-denied-for-user-rootlocalhost-with-mariadb-10-4-8-docker-container-u
'programing' 카테고리의 다른 글
mysql에서 셀 데이터 변경 (0) | 2023.01.10 |
---|---|
다수의 스레드가 완료될 때까지 기다리는 방법 (0) | 2023.01.10 |
Pivotal Cloud Foundry는 MariaDB를 지원합니까? (0) | 2023.01.10 |
기능 프로그래밍 - 불변성은 비용이 많이 드나요? (0) | 2023.01.10 |
JSON의 RestTemplate를 통한 POST 요청 (0) | 2023.01.10 |