Problema per l'importazione di q2a

Sto importando un sito Question2Answer e ho seguito i passaggi indicati di seguito. Lo script non riesce a connettersi al database. Qualcuno può per favore aiutarmi con questo problema?

Ho preso riferimento da questo thread vBulletin

Installazione del server Docker

Passaggi:

  1. Ho installato Discourse seguendo la guida di 30 minuti e ha funzionato perfettamente.

  2. Sono entrato nell’app con i seguenti comandi:
    \u003e cd /var/discourse
    \u003e ./launcher enter app

  3. Ho installato MariaDB poiché non sono riuscito a installare MySQL:

\u003e apt-get update \u0026\u0026 apt-get install libmariadb-dev mariadb-server-10.3

  1. Dopo aver completato l’installazione di MariaDB, ho verificato lo stato e avviato il servizio:

\u003e sudo service mysql status
\u003e sudo service mysql start

  1. Installazione delle dipendenze

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

  1. Importazione del database

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

  1. Ho esportato le seguenti variabili. Non avendo allegati, non ho esportato quella variabile specifica. Inoltre, non ho impostato una password per l’utente root.
    \u003e export DB_NAME=“q2adb”
    \u003e export DB_USER=“root”
    \u003e export DB_PW=“”
    \u003e export TABLE_PREFIX=“qa_”
    \u003e export TIMEZONE=“America/Los_Angeles”
    \u003e
    \u003e cd /var/www/discourse
    \u003e su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’

Questo è l’errore che ricevo dopo aver eseguito il comando seguente.

/var/www/discourse# su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’
root:@localhost richiede q2adb
Caricamento dei gruppi esistenti…
Caricamento degli utenti esistenti…
Caricamento delle categorie esistenti…
Caricamento dei post esistenti…
Caricamento degli argomenti esistenti…

Accesso negato per l’utente ‘root’@‘localhost’
Impossibile connettersi al database.

Hostname: localhost
Username: root
Password:
database: q2adb

Modifica lo script o imposta queste variabili d’ambiente:

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

Uscita.

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)