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.

Either you need to set a password or maybe a host name? You installed mysql inside the container?

Can you connect to mysql from the command line and see that there is data there. (Show tables :wink:

@pfaffman

I’m inside container.

I tried setting Hostname to localhost, ‘127.0.0.1’, ip-171-22-11-150 (this is shown as a hostname when I issue command >hostname) and with actual IP address of server.

I also set password for a root users. I do see tables in db got imported correctly from q2a.

Am I missing any step?

discourse experts, please help me on this. I dont know how to proceed at the moment.

Thanks for your help in advance!

The traditional way to incentivize people to give you extra help is to pay money for it, you could post in marketplace with a budget.

Hello Discourse Community,

@sat have you found a solution for this yet ?

I ran into the same error while trying to migrate from vBulletin5 using the Docker part of the same thread.

I also installed MariaDB instead of MySQL:

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

I imported my SQL data and I am able to connect to the database and see that the tables are created:

mysqlcheck -c vb5  -u root -p

At first, I used the default login (root / blank) and in a second attempt I set a password for the root user:

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'

I am not sure about the TABLE_PREFIX here. But all table names start with vb5. in my default installation - so I guess this should be ok (I also tried leaving it empty).

But the main issue is that I cannot connect to the MariaDB database with the discourse user:

su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'
Loading existing groups...
Loading existing users...
Loading existing categories...
Loading existing posts...
Loading existing topics...
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': Access denied for user 'root'@'localhost' (Mysql2::Error)
su discourse
mysqlcheck -c vb5  -u root -p
Enter password: #password1234
mysqlcheck: Got error: 1698: Access denied for user 'root'@'localhost' when trying to connect

Ok I am now a step closer into getting this to work. I was able to get the discourse user to connect.

  1. Connect into the Discourse container as root.
  2. Connect to the MariaDB Database
mysql -u root -p
*enter your password*
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
EXIT;

Then switch to the discourse user and try to connect to the database with the root account:

su discourse
mysql -u root -p
Enter password: #password1234

And you should see the SQL shell, when before you were getting an access denied.

Now exit the discourse user and try to run the migration script again:

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

Now the script is running (but I am getting a vBulletin5 related error I have to figure out next)