sat
(Sat)
2019 年 9 月 14 日午前 12:13
1
Question2Answer サイトをインポートしており、以下の手順に従いました。しかし、スクリプトがデータベースに接続できません。どなたかご助力ください。
参考にしたのは vBulletin スレッド です。
Docker 環境でのサーバーインストール
手順:
30 分ガイド に従って Discourse をインストールし、正常に動作することを確認しました。
以下のコマンドでアプリにログインします。
\u003e cd /var/discourse
\u003e ./launcher enter app
MySQL のインストールがうまくいかなかったため、MariaDB をインストールしました。
\u003e apt-get update \u0026\u0026 apt-get install libmariadb-dev mariadb-server-10.3
MariaDB のインストールが完了した後、ステータスを確認して起動します。
\u003e sudo service mysql status
\u003e sudo service mysql start
依存関係のインストール
\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’
データベースのインポート
mysql -uroot -p -e ‘CREATE DATABASE q2adb’
mysql -uroot -p q2adb \u003c q2a-old-db.sql
以下の環境変数を設定しました。添付ファイルがないため、それに関連する変数は設定していません。また、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’
以下を実行した後に発生しているエラーです。
/var/www/discourse# su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’
root:@localhost wants q2adb
Loading existing groups…
Loading existing users…
Loading existing categories…
Loading existing posts…
Loading existing topics…
Access denied for user ‘root’@‘localhost’
Cannot connect in to database.
Hostname: localhost
Username: root
Password:
database: q2adb
スクリプトを編集するか、以下の環境変数を設定してください。
export DB_HOST=“localhost”
export DB_NAME=“”
export DB_PW=‘password’
export DB_USER=“root”
export TABLE_PREFIX=“qa_”
Exiting.
pfaffman
(Jay Pfaffman)
2019 年 9 月 14 日午前 12:45
2
パスワードを設定する必要があるか、あるいはホスト名が必要かもしれません。コンテナ内で MySQL をインストールしましたか?
コマンドラインから MySQL に接続し、データが存在することを確認できますか。(SHOW TABLES ;))
sat
(Sat)
2019 年 9 月 14 日午後 3:39
3
@pfaffman
コンテナ内から操作しています。
Hostname を localhost、‘127.0.0.1’、ip-171-22-11-150(hostname コマンドを実行した際に表示されるホスト名)、およびサーバーの実際の IP アドレスに設定してみました。
また、root ユーザーのパスワードも設定しました。q2a からデータベースのテーブルが正しくインポートされていることは確認できました。
何か見落としている手順はありますか?
sat
(Sat)
2019 年 9 月 15 日午前 2:39
4
Discourse のエキスパートの皆様、ご助力をお願いいたします。現在、どのように進めればよいか見当がつかない状況です。
事前に御礼申し上げます!
人々に追加のサポートを提供してもらうための従来の方法は、その対価としてお金を支払うことです。予算を明記して Marketplace に投稿することもできます。
INSTAR
(Mike Polinowski)
2019 年 10 月 31 日午前 11:21
6
こんにちは、Discourse コミュニティの皆様。
@sat さん、この問題の解決策は見つかりましたか?
私も Docker を使用した vBulletin5 からの移行を試みた際に、同じエラーに遭遇しました。これは 同じスレッド の内容です。
また、MySQL ではなく MariaDB をインストールしました:
apt-get update && apt-get install libmariadb-dev mariadb-server-10.3
SQL データをインポートし、データベースに接続してテーブルが作成されていることを確認しました:
mysqlcheck -c vb5 -u root -p
最初はデフォルトのログイン情報(root / パスワードなし)を使用しましたが、2 回目の試行では 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'
TABLE_PREFIX の設定については確信が持てません。デフォルトのインストールではすべてのテーブル名が vb5. で始まるため、これで問題ないと思われます(空のまま試したこともあります)。
しかし、主な問題は、discourse ユーザーで MariaDB データベースに接続できないことです:
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
INSTAR
(Mike Polinowski)
2019 年 10 月 31 日午後 12:19
7
よし、これで一歩前進です。Discourse ユーザーの接続に成功しました。
Discourse コンテナに root として接続します。
MariaDB データベースに接続します。
mysql -u root -p
*パスワードを入力*
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
EXIT;
次に discourse ユーザーに切り替え、root アカウントでデータベースに接続を試みます。
su discourse
mysql -u root -p
Enter password: #password1234
以前は「アクセス拒否」のエラーが出ていましたが、今度は SQL シェルが表示されるはずです。
その後、discourse ユーザーから退出し、マイグレーションスクリプトを再度実行します。
exit
su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'
これでスクリプトが実行されました(ただし、次に解決すべき vBulletin5 関連のエラーが発生しています)。