Problema para la importación de q2a

Estoy importando un sitio de question2answer y seguí los pasos a continuación. El script no puede conectarse a la base de datos. Por favor, alguien ayúdeme con esto.

Tomé como referencia este hilo de vBulletin

Instalación de servidor Docker

Pasos:

  1. Instalé Discourse usando la guía de 30 minutos y funcionó perfectamente.

  2. Entré a la aplicación usando los siguientes comandos:
    \u003e cd /var/discourse
    \u003e ./launcher enter app

  3. Instalé MariaDB ya que no pude instalar MySQL:

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

  1. Después de finalizar la instalación de MariaDB, verifiqué su estado y lo inicié:

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

  1. Instalé las dependencias

\u003e echo “gem ‘mysql2’, require: false” >> /var/www/discourse/Gemfile
\u003e echo “gem ‘php_serialize’, require: false” >> /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. Importé la base de datos

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

  1. Exporté las siguientes variables; no tengo ningún archivo adjunto, por lo que no exporté esa variable. Tampoco establecí contraseña para el usuario 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’

Este es el error que obtengo ahora después de ejecutar el siguiente comando.

/var/www/discourse# su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’
root:@localhost desea q2adb
Cargando grupos existentes…
Cargando usuarios existentes…
Cargando categorías existentes…
Cargando publicaciones existentes…
Cargando temas existentes…

Acceso denegado para el usuario ‘root’@‘localhost’
No se puede conectar a la base de datos.

Nombre de host: localhost
Nombre de usuario: root
Contraseña:
Base de datos: q2adb

Edite el script o establezca estas variables de entorno:

export DB_HOST=“localhost”
export DB_NAME=“”
export DB_PW=‘contraseña’
export DB_USER=“root”
export TABLE_PREFIX=“qa_”

Saliendo.

O necesitas establecer una contraseña o quizás un nombre de host. ¿Instalaste MySQL dentro del contenedor?

¿Puedes conectarte a MySQL desde la línea de comandos y ver que hay datos allí? (Muestra las tablas :wink:

@pfaffman

Estoy dentro del contenedor.

He intentado configurar el nombre de host como localhost, ‘127.0.0.1’, ip-171-22-11-150 (este es el nombre de host que se muestra al ejecutar el comando >hostname) y con la dirección IP real del servidor.

También he establecido una contraseña para el usuario root. Veo que las tablas de la base de datos se importaron correctamente desde q2a.

¿Estoy omitiendo algún paso?

expertos de Discourse, por favor ayúdenme con esto. No sé cómo proceder en este momento.

¡Gracias de antemano por su ayuda!

La forma tradicional de incentivar a las personas a brindarte ayuda adicional es pagar dinero por ello; podrías publicar en Marketplace con un presupuesto.

Hola comunidad de Discourse,

@sat, ¿has encontrado una solución para esto?

Me encontré con el mismo error al intentar migrar desde vBulletin5 usando la parte de Docker del mismo hilo.

También instalé MariaDB en lugar de MySQL:

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

Importé mis datos SQL y puedo conectarme a la base de datos y ver que las tablas se han creado:

mysqlcheck -c vb5  -u root -p

Al principio, usé el inicio de sesión predeterminado (root / vacío) y en un segundo intento establecí una contraseña para el usuario 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'

No estoy seguro del TABLE_PREFIX aquí. Pero todos los nombres de tablas comienzan con vb5. en mi instalación predeterminada, así que supongo que esto debería estar bien (también probé dejarlo vacío).

Pero el problema principal es que no puedo conectarme a la base de datos MariaDB con el usuario discourse:

su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'
Cargando grupos existentes...
Cargando usuarios existentes...
Cargando categorías existentes...
Cargando publicaciones existentes...
Cargando temas existentes...
Traceback (última llamada desde):
        5: desde script/import_scripts/vbulletin5.rb:632:in `<main>'
        4: desde script/import_scripts/vbulletin5.rb:632:in `new'
        3: desde script/import_scripts/vbulletin5.rb:27:in `initialize'
        2: desde script/import_scripts/vbulletin5.rb:27:in `new'
        1: desde /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': Acceso denegado para el usuario 'root'@'localhost' (Mysql2::Error)
su discourse
mysqlcheck -c vb5  -u root -p
Ingrese contraseña: #password1234
mysqlcheck: Error obtenido: 1698: Acceso denegado para el usuario 'root'@'localhost' al intentar conectarse

¡Genial! Ahora estoy un paso más cerca de que esto funcione. Logré conectar al usuario de Discourse.

  1. Conéctate al contenedor de Discourse como root.
  2. Conéctate a la base de datos MariaDB.
mysql -u root -p
*introduce tu contraseña*
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
EXIT;

Luego, cambia al usuario de Discourse e intenta conectarte a la base de datos con la cuenta root:

su discourse
mysql -u root -p
Introduce contraseña: #password1234

Deberías ver la consola SQL, cuando antes recibías un “acceso denegado”.

Ahora, sal del usuario de Discourse e intenta ejecutar el script de migración nuevamente:

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

Ahora el script se está ejecutando (pero estoy obteniendo un error relacionado con vBulletin5 que tengo que resolver a continuación).