Problème pour l'import q2a

J’importe un site Question2Answer et j’ai suivi les étapes ci-dessous. Le script ne parvient pas à se connecter à la base de données. Quelqu’un peut-il s’il vous plaît m’aider sur ce point.

Je me suis référé au fil de discussion vBulletin

Installation du serveur Docker

Étapes :

  1. J’ai installé Discourse en suivant le guide de 30 minutes et cela a fonctionné parfaitement.
  2. J’ai accédé à l’application en utilisant les commandes suivantes :

cd /var/discourse
./launcher enter app

  1. J’ai installé MariaDB car je n’ai pas pu installer MySQL :

apt-get update && apt-get install libmariadb-dev mariadb-server-10.3

  1. Après avoir terminé l’installation de MariaDB, j’ai vérifié son statut et l’ai démarré :

sudo service mysql status
sudo service mysql start

  1. Installation des dépendances

echo “gem ‘mysql2’, require: false” >> /var/www/discourse/Gemfile
echo “gem ‘php_serialize’, require: false” >> /var/www/discourse/Gemfile
cd /var/www/discourse
su discourse -c ‘bundle install --no-deployment --without test --without development --path vendor/bundle’

  1. Importation de la base de données

mysql -uroot -p -e ‘CREATE DATABASE q2adb’
mysql -uroot -p q2adb < q2a-old-db.sql

  1. J’ai exporté les variables ci-dessous. Je n’ai aucune pièce jointe, donc je n’ai pas exporté cette variable. Je n’ai également pas défini de mot de passe pour l’utilisateur root.

export DB_NAME=“q2adb”
export DB_USER=“root”
export DB_PW=“”
export TABLE_PREFIX=“qa_”
export TIMEZONE=“America/Los_Angeles”

cd /var/www/discourse
su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’

Voici l’erreur que je rencontre maintenant après avoir exécuté la commande ci-dessous.

/var/www/discourse# su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’
root:@localhost souhaite q2adb
Chargement des groupes existants…
Chargement des utilisateurs existants…
Chargement des catégories existantes…
Chargement des publications existantes…
Chargement des sujets existants…

Accès refusé pour l’utilisateur ‘root’@‘localhost’
Impossible de se connecter à la base de données.

Nom d’hôte : localhost
Nom d’utilisateur : root
Mot de passe :
Base de données : q2adb

Modifiez le script ou définissez ces variables d’environnement :

export DB_HOST=“localhost”
export DB_NAME=“”
export DB_PW=‘password’
export DB_USER=“root”
export TABLE_PREFIX=“qa_”

Fin.

Soit vous devez définir un mot de passe, soit peut-être un nom d’hôte ? Avez-vous installé MySQL à l’intérieur du conteneur ?

Pouvez-vous vous connecter à MySQL en ligne de commande et vérifier qu’il y a des données ? (Afficher les tables ;))

@pfaffman

Je suis à l’intérieur du conteneur.

J’ai essayé de définir l’Hostname sur localhost, ‘127.0.0.1’, ip-171-22-11-150 (c’est ce qui est affiché comme nom d’hôte lorsque j’exécute la commande hostname) et avec l’adresse IP réelle du serveur.

J’ai également défini un mot de passe pour l’utilisateur root. Je vois que les tables de la base de données ont été importées correctement depuis q2a.

Est-ce que j’oublie une étape ?

Experts de Discourse, veuillez m’aider sur ce point. Je ne sais pas comment procéder pour le moment.

Merci d’avance pour votre aide !

La méthode traditionnelle pour inciter les gens à vous apporter une aide supplémentaire est de les payer ; vous pouvez publier dans Marketplace avec un budget.

Bonjour à la communauté Discourse,

@sat, avez-vous déjà trouvé une solution à ce problème ?

J’ai rencontré la même erreur en essayant de migrer depuis vBulletin5 en utilisant la partie Docker du même fil.

J’ai également installé MariaDB à la place de MySQL :

apt-get update && apt-get install libmariadb-dev mariadb-server-10.3

J’ai importé mes données SQL et je peux me connecter à la base de données et constater que les tables ont été créées :

mysqlcheck -c vb5  -u root -p

Au début, j’ai utilisé les identifiants par défaut (root / vide), puis lors d’une deuxième tentative, j’ai défini un mot de passe pour l’utilisateur root :

export DB_NAME="vb5"
export DB_USER="root"
export DB_PW="password1234"
export TABLE_PREFIX="vb5."
export ATTACHMENT_DIR='/vb5-attachments'
export TIMEZONE='Europe/Berlin'

cd /var/www/discourse
su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'

Je ne suis pas certain du TABLE_PREFIX ici. Mais dans mon installation par défaut, tous les noms de tables commencent par vb5. — je suppose donc que cela devrait convenir (j’ai aussi essayé de le laisser vide).

Cependant, le problème principal est que je ne parviens pas à me connecter à la base de données MariaDB avec l’utilisateur discourse :

su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'
Chargement des groupes existants...
Chargement des utilisateurs existants...
Chargement des catégories existantes...
Chargement des publications existantes...
Chargement des sujets existants...
Traceback (most recent call last):
        5: from script/import_scripts/vbulletin5.rb:632:in `<main>'
        4: from script/import_scripts/vbulletin5.rb:632:in `new'
        3: from script/import_scripts/vbulletin5.rb:27:in `initialize'
        2: from script/import_scripts/vbulletin5.rb:27:in `new'
        1: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect': Accès refusé pour l'utilisateur 'root'@'localhost' (Mysql2::Error)
su discourse
mysqlcheck -c vb5  -u root -p
Entrez le mot de passe : #password1234
mysqlcheck : Erreur 1698 : Accès refusé pour l'utilisateur 'root'@'localhost' lors de la connexion

Ok, je suis maintenant un pas de plus près de faire fonctionner cela. J’ai réussi à connecter l’utilisateur Discourse.

  1. Connectez-vous au conteneur Discourse en tant que root.
  2. Connectez-vous à la base de données MariaDB
mysql -u root -p
*entrez votre mot de passe*
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
EXIT;

Ensuite, passez à l’utilisateur discourse et essayez de vous connecter à la base de données avec le compte root :

su discourse
mysql -u root -p
Entrez le mot de passe : #password1234

Vous devriez voir l’interpréteur SQL, alors qu’auparavant vous obteniez un refus d’accès.

Maintenant, quittez l’utilisateur discourse et essayez à nouveau d’exécuter le script de migration :

exit
su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'

Le script s’exécute maintenant (mais je rencontre une erreur liée à vBulletin5 que je dois résoudre ensuite).