sat
(Sat)
2019 年9 月 14 日 00:13
1
我正在导入 question2answer 网站,并遵循了以下步骤。脚本无法连接到数据库。请任何人帮忙解决此问题。
我参考了 vBulletin 线程
Docker 安装服务器
步骤:
使用 30 分钟指南 安装了 Discourse,运行完美。
使用以下命令进入应用:
\u003e cd /var/discourse
\u003e ./launcher enter app
安装 MariaDB ,因为我无法安装 MySQL:
\u003e apt-get update && 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” >> /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’
导入数据库
mysql -uroot -p -e ‘CREATE DATABASE q2adb’
mysql -uroot -p q2adb < 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 想要访问 q2adb
正在加载现有群组…
正在加载现有用户…
正在加载现有分类…
正在加载现有帖子…
正在加载现有主题…
用户 ‘root’@‘localhost’ 访问被拒绝
无法连接到数据库。
主机名:localhost
用户名:root
密码:
数据库:q2adb
请编辑脚本或设置这些环境变量:
export DB_HOST=“localhost”
export DB_NAME=“”
export DB_PW=‘password’
export DB_USER=“root”
export TABLE_PREFIX=“qa_”
正在退出。
pfaffman
(Jay Pfaffman)
2019 年9 月 14 日 00:45
2
你需要设置密码,或者可能是主机名?你在容器内安装了 MySQL 吗?
你能从命令行连接到 MySQL 并确认其中有数据吗?(显示一下表吧;)
sat
(Sat)
2019 年9 月 14 日 15:39
3
@pfaffman
我在容器内部。
我尝试将主机名设置为 localhost、‘127.0.0.1’、ip-171-22-11-150(这是我运行命令 >hostname 时显示的主机名)以及服务器的实际 IP 地址。
我还为 root 用户设置了密码。我看到数据库中的表已从 q2a 正确导入。
我是否遗漏了某些步骤?
sat
(Sat)
2019 年9 月 15 日 02:39
4
Discourse 专家,请帮我一下。我目前不知道该如何继续。
提前感谢您的帮助!
传统激励他人提供额外帮助的方式是支付报酬,你可以在 Marketplace 中发布带有预算的帖子。
INSTAR
(Mike Polinowski)
2019 年10 月 31 日 11:21
6
你好,Discourse 社区,
@sat 你找到这个问题的解决方案了吗?
我在尝试使用 Docker 部分从 vBulletin5 迁移时也遇到了同样的错误,参考了 同一个帖子 。
我还安装了 MariaDB 而不是 MySQL:
apt-get update && apt-get install libmariadb-dev mariadb-server-10.3
我导入了 SQL 数据,并且能够连接到数据库,看到表已经创建:
mysqlcheck -c vb5 -u root -p
起初,我使用了默认登录(root / blank ),第二次尝试时我为 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'
正在加载现有群组...
正在加载现有用户...
正在加载现有分类...
正在加载现有帖子...
正在加载现有主题...
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 用户连接上了。
以 root 身份登录 Discourse 容器。
连接到 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
输入密码:#password1234
此时您应该能看到 SQL 命令行界面,而之前您遇到的是“访问被拒绝”的错误。
现在退出 discourse 用户,再次尝试运行迁移脚本:
exit
su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'
现在脚本正在运行(不过我遇到了一个与 vBulletin5 相关的错误,接下来需要解决)。