Problema para importação do q2a

Estou importando um site do Question2Answer e segui os passos abaixo. O script não consegue se conectar ao banco de dados. Alguém, por favor, me ajude com isso.

Tomei como referência este tópico do vBulletin

Instalação do servidor via Docker

Passos:

  1. Instalei o Discourse usando o guia de 30 minutos e funcionou perfeitamente.

  2. Entrei no app usando os comandos abaixo:
    \u003e cd /var/discourse
    \u003e ./launcher enter app

  3. Instalei o MariaDB, pois não consegui instalar o MySQL:

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

  1. Após finalizar a instalação do MariaDB, verifiquei seu status e iniciei:

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

  1. Instalei as dependências

\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. Importei o banco de dados

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

  1. Exportei as variáveis abaixo. Não tenho anexos, então não exportei essa variável. Também não defini senha para o usuário 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 é o erro que estou recebendo agora após executar o comando abaixo.

/var/www/discourse# su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’
root:@localhost deseja q2adb
Carregando grupos existentes…
Carregando usuários existentes…
Carregando categorias existentes…
Carregando posts existentes…
Carregando tópicos existentes…

Acesso negado para o usuário ‘root’@‘localhost’
Não foi possível conectar ao banco de dados.

Nome do host: localhost
Usuário: root
Senha:
Banco de dados: q2adb

Edite o script ou defina estas variáveis de ambiente:

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

Saindo.

Ou você precisa definir uma senha ou talvez um nome de host? Você instalou o MySQL dentro do container?

Consegue se conectar ao MySQL pela linha de comando e verificar se há dados lá? (Mostre as tabelas :wink:

@pfaffman

Estou dentro do container.

Tentei definir o Hostname como localhost, ‘127.0.0.1’, ip-171-22-11-150 (este é o hostname exibido quando executo o comando >hostname) e o endereço IP real do servidor.

Também defini a senha para o usuário root. Vejo que as tabelas no banco de dados foram importadas corretamente a partir do q2a.

Estou perdendo alguma etapa?

Especialistas do Discourse, por favor, ajudem-me com isso. Não sei como proceder no momento.

Obrigado pela ajuda antecipada!

A maneira tradicional de incentivar as pessoas a te dar ajuda extra é pagar por isso; você pode postar no Marketplace com um orçamento.

Olá, Comunidade Discourse,

@sat, você já encontrou uma solução para isso?

Encontrei o mesmo erro ao tentar migrar do vBulletin5 usando a parte do Docker do mesmo tópico.

Também instalei o MariaDB em vez do MySQL:

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

Importei meus dados SQL e consegui me conectar ao banco de dados, vendo que as tabelas foram criadas:

mysqlcheck -c vb5  -u root -p

No início, usei o login padrão (root / vazio) e, em uma segunda tentativa, defini uma senha para o usuário 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'

Não tenho certeza sobre o TABLE_PREFIX aqui. Mas todos os nomes de tabela começam com vb5. na minha instalação padrão — então imagino que isso deva estar correto (também tentei deixá-lo vazio).

Mas o principal problema é que não consigo me conectar ao banco de dados MariaDB com o usuário do Discourse:

su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'
Carregando grupos existentes...
Carregando usuários existentes...
Carregando categorias existentes...
Carregando posts existentes...
Carregando tópicos existentes...
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': Acesso negado para o usuário 'root'@'localhost' (Mysql2::Error)
su discourse
mysqlcheck -c vb5  -u root -p
Digite a senha: #password1234
mysqlcheck: Erro obtido: 1698: Acesso negado para o usuário 'root'@'localhost' ao tentar conectar

Ok, agora estou um passo mais perto de fazer isso funcionar. Consegui conectar o usuário do Discourse.

  1. Conecte-se ao contêiner do Discourse como root.
  2. Conecte-se ao banco de dados MariaDB
mysql -u root -p
*insira sua senha*
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
EXIT;

Em seguida, alterne para o usuário do Discourse e tente conectar ao banco de dados com a conta root:

su discourse
mysql -u root -p
Digite a senha: #password1234

E você deve ver o shell SQL, quando antes estava recebendo um erro de acesso negado.

Agora, saia do usuário do Discourse e tente executar o script de migração novamente:

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

Agora o script está em execução (mas estou recebendo um erro relacionado ao vBulletin5 que preciso resolver em seguida).