itsource

도커의 nextcloud 및 mariadb(둘 다): SQLSTATE[HY000] [2002] 해당 파일 또는 디렉터리가 없습니다.

mycopycode 2022. 9. 28. 00:08
반응형

도커의 nextcloud 및 mariadb(둘 다): SQLSTATE[HY000] [2002] 해당 파일 또는 디렉터리가 없습니다.

nextlcoudmariadb를 Linuxserver 이미지로 셋업하고 nextcloud의 첫 번째 실행 마법사를 통과하고 싶을 때 장애물에 부딪히려고 했습니다.최초 실행 마법사의 모든 설정을 포함하는 오류 메시지

문제

즉, 첫 번째 마법사는Error while trying to create admin user: Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [2002] No such file or directory.

질문:.

그것은 어디에서, 어떻게 문제를 해결할 것인가?

시스템.

Amahi 11을 사용하고 있으며 저장소에서 도커를 설치했습니다.도커 검증:

  Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:48:52 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:19:08 2018
  OS/Arch:          linux/amd64
  Experimental:     false

도커 컴포지트로 nextcloud와 mariadb를 시작합니다.mariadb의 내용을 따릅니다.

version: '2'
  services:
    mariadb:
      image: linuxserver/mariadb
      container_name: mariadb
      environment:
        - PUID=XX
        - PGID=YYY
        - MYSQL_ROOT_USER=root
        - MYSQL_ROOT_PASSWORD=secret
        - MYSQL_DATABASE=nextcloud
      volumes:
        - <path/to/my/folder>:/config
      ports:
        - 3307:3306
      restart: unless-stopped

이미 시도:

  1. 많은 연구가 헛수고로 끝나거나 다음 요점을 제시하게 됩니다.
  2. 따라서 오류 정보에서 데이터베이스가 실제로 존재하는지 확인하기 시작했습니다.sudo docker exec -it mariadb bash거기서, 패스워드가 설정되어 있지 않기 때문에, root에 「mysql」을 붙여 커맨드 라인에의 액세스가 거부되고 있는 것을 알 수 있었습니다(mmh...도킹 스테이션 파일에 무슨 문제가 있나요?어쨌든 나는 그것을 수정했다.mysql -u root -pSECRET그리고.mysql -u root --password=SECRET.와 함께show databases;찾을 수 없었습니다nextcloud데이터베이스입니다.(도커 컴포지트 파일에 문제가 있는 것 같습니다.)그래서 저도 만들었어요.create database nextcloud;)데이터베이스가 올바르게 표시되게 되어 있습니다.<path/to/my/folder>결과:변화 없어, 문제는 아직 남아있어.
  3. 도커 컴포지트 파일에서 몇 가지 편집을 더 했습니다.

    version: '2'
      services:
        mariadb:
          image: linuxserver/mariadb
          container_name: mariadb
          environment:
            - MYSQL_ROOT_PASSWORD=secret
            - MYSQL_DATABASE=nextcloud
            - PUID=XX
            - PGID=YYY
          volumes:
            - <path/to/my/folder>:/config
          ports:
            - 3307:3306
          restart: unless-stopped
    

    그래서 저는 계층을 바꿔서 그 계층은 없앴습니다.MYSQL_ROOT_USER=root회선. 재기동할 때mysql -u root --password=SECRET를 표시해 주세요.nextcloud데이터베이스입니다.그러나 이러한 변경 내용이 지난번(수동) 변경에서 볼륨 내에 남아 있는지 알 수 없습니다.결과: 아직 문제가 있습니다.

그냥 궁금해서 로컬 호스트 포트를 가지고 놀기 시작했어요.3307을 선택한 이유는 호스트 시스템에서 3306에서 실행되고 있는 mariadb가 있기 때문입니다.포트 변경localhost:3307로.localhost:WXYZ- 같은 오류가 발생... - 변경 중localhost로.<your host-IP>!!!

성공.

나는 변했다localhost->mariadb그리고 그게 효과가 있었어!

나는 사용해야만nextcloud-mariadb:3306접속 문자열로 사용합니다.도망쳐서 알아냈어$ docker ps -a에 이름과 포트를 나타냅니다.

도커에서 Nextcloud를 실행할 때--link mariadb:mariadb그 후 를 사용할 수 있습니다.mariadb교체하다localhost

커스텀 서버 호스트명을 사용해야 했습니다.localhostLinux 에서는 명령어를 실행하면 얻을 수 있습니다.hostname.

도 같은 했습니다.MYSQL_HOST , 「」의localhost 이름 경우)으로 합니다.MYSQL_HOST: mysql에 기재되어 있습니다.docker-compose.yml

version: "3.7"
services:

  mysql:
    image: mysql
    container_name: mysql-nextcloud
    restart: unless-stopped
    ports:
      - 3306:3306
    environment:
     ...
    volumes:
      ...

  app:
    image: nextcloud
    container_name: nextcloud
    restart: unless-stopped
    ports:
      - 80:80
    links:
      - mysql
    volumes:
      ...
    environment:
      MYSQL_PASSWORD: ...
      MYSQL_DATABASE: ...
      MYSQL_USER: ...
      MYSQL_HOST: mysql

언급URL : https://stackoverflow.com/questions/55088828/nextcloud-and-mariadb-both-on-docker-sqlstatehy000-2002-no-such-file-or-d

반응형