3
votes

nextcloud et mariadb (les deux) sur docker: SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type

J'ai essayé de configurer nextlcoud et mariadb avec les images du serveur linux et touchez mon barrage routier lorsque je veux accéder à l'assistant de nextcloud: Message d'erreur incl. tous les paramètres de l'assistant de première exécution

Problème

I.e. la première fois que l'assistant me donne Erreur lors de la tentative de création de l'utilisateur administrateur: Échec de la connexion à la base de données: Une exception s'est produite dans le pilote: SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type . p >

Question:

D'où cela vient et comment résoudre le problème?

Système

J'utilise Amahi 11 et ont installé le docker à partir des dépôts. Version de Docker:

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

Je démarre nextcloud et mariadb avec docker-compose. Suite au contenu de 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

Déjà essayé:

  1. De nombreuses recherches, qui se sont révélées vides ou m'ont amené à faire le point suivant:
  2. Donc, à partir des informations d'erreur, j'ai commencé à vérifier si la base de données existe réellement: sudo docker exec -it mariadb bash . Là, j'ai pensé que l'accès à la ligne de commande avec «mysql» pour root a été refusé parce que le mot de passe n'a pas été défini. (mmmh ... y a-t-il quelque chose qui ne va pas avec mon fichier docker-compose-?) Quoi qu'il en soit, j'ai corrigé celui-là avec mysql -u root -pSECRET et mysql -u root --password = SECRET . Avec show databases; je n'ai trouvé aucune base de données nextcloud . (Il DOIT y avoir quelque chose qui ne va pas avec mon fichier docker-compose-file.) Je l'ai donc créé également ( create database nextcloud; ). La base de données est maintenant affichée correctement et je l'ai trouvée dans . Résultat: Aucun changement, le problème persiste.
  3. J'ai fait quelques modifications supplémentaires avec mon fichier docker-compose:

      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
    

    J'ai donc changé la hiérarchie et éliminé la ligne MYSQL_ROOT_USER = root . Lors du redémarrage, je peux mysql -u root --password = SECRET et afficher la base de données nextcloud . ENCORE, je ne suis pas sûr, si ces changements sont restés dans le volume de mes derniers changements (manuels). Résultat: Le problème persiste.


4 Réponses :


2
votes

Par curiosité, j'ai commencé à jouer avec le localhost-port. J'ai choisi 3307 parce que mon système hôte a un mariadb fonctionnant sur 3306, que je ne veux pas utiliser. Donc, en modifiant le port localhost: 3307 en localhost: WXYZ - vous le nommez, cela donne la même erreur ... mmmh - en changeant localhost en !!!

<½SUCCÈS


0 commentaires

2
votes

J'ai changé localhost -> mariadb et cela a fonctionné!


0 commentaires

2
votes

J'ai dû utiliser nextcloud-mariadb: 3306 comme chaîne de connexion. Je l'ai compris en exécutant $ docker ps -a qui répertorie le nom et le port.


0 commentaires

0
votes

Lorsque vous exécutez Nextcloud dans le docker, ajoutez --link mariadb: mariadb . Vous pouvez ensuite utiliser mariadb pour remplacer localhost


0 commentaires