Redmineのローカル環境構築の際、データベースのテーブル等の作成につまづいた時の対処法(mysql)
Redmineのローカル環境構築の際、データベースのテーブル等の作成につまづいた時の対処法(mysql)
概要
ちょっと自分でローカルにredmineを構築してプロジェクト管理をしたいなと思って、Redmineガイドに基づいて構築していった。
基本的に手順通りに作成していったが、「Step 6 - データベースのテーブル等の作成」の際にerrorがでまくったので、そのerror内容と解決策を記録しておこうと思う。
error内容
redmineのappのルートディレクトリにて、以下のコマンドを実行。
❯ RAILS_ENV=production bundle exec rails db:migrate
rails aborted!
Mysql2::Error::ConnectionError: Access denied for user 'redmine'@'localhost' (using password: YES)
/Library/Ruby/Gems/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect'
/Library/Ruby/Gems/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `new'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in `mysql2_connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:830:in `new_connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:874:in `checkout_new_connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in `try_to_checkout_new_connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:814:in `acquire_connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:538:in `checkout'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:1033:in `retrieve_connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_handling.rb:118:in `retrieve_connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/connection_handling.rb:90:in `connection'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/Library/Ruby/Gems/2.6.0/gems/activerecord-5.2.4.2/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <top (required)>'
/Library/Ruby/Gems/2.6.0/gems/railties-5.2.4.2/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Library/Ruby/Gems/2.6.0/gems/railties-5.2.4.2/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Library/Ruby/Gems/2.6.0/gems/railties-5.2.4.2/lib/rails/command.rb:48:in `invoke'
/Library/Ruby/Gems/2.6.0/gems/railties-5.2.4.2/lib/rails/commands.rb:18:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Mysql2::Error::ConnectionError: Access denied for user 'redmine'@'localhost' (using password: YES)
と出ていたので、「 redmine
@localhost
のユーザーアクセス権が拒否されました(パスワード使用中) 」と解釈。
データベース側を調べてみる必要があると判断。
mysql
ここでやったこととしては2つ。
- mysql側のdatabaseの一覧を見てみた(一部
**
で加工してます)。 - app側の
config/database.yml
でproduction環境の設定を変更。
❯ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is **
Server version: ****** Homebrew
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases
-> ;
+--------------------+
| Database |
+--------------------+
| *** |
| *** |
| *** |
| *** |
+--------------------+
4 rows in set (0.01 sec)
production:
adapter: mysql2
database: redmine
host: localhost
username: root
password: "MYPASSWORD"
encoding: utf8mb4
(中略)
この2つからわかったことは、以下の通り。
- production環境には
redmine
というdatabaseが必要であったが、mysql上ではそれがなかった。 - passwordは設定していたので、その辺りの問題はなかった。
- ということは、mysqlに
redmine
のdatabaseを新規設定する必要がある。
となったので、mysql側に手動で新しく redmine
というdatabase名を登録。
mysql> CREATE DATABASE redmine;
Query OK, 1 row affected (0.01 sec)
作成後、管理者名もついでに登録しました。
mysql> create user USERNAME identified by 'PASSWORD';
Query OK, 0 rows affected (0.00 sec)
redmine側に戻る
諸々DB側で設定したあと、redmine側に戻り、もう一度実行してみた。
❯ RAILS_ENV=production bundle exec rails db:migrate
== 1 Setup: migrating =========================================================
(中略)
== 20190620135549 ChangeRolesNameLimit: migrated (0.0262s) ====================
ここまでいって、次のStep7へと進むことができました。
まとめ
mysqlに関しては、特にrailsと絡むことで結構罠に落ちるなあという印象です。
おそらく、ガイドの方のmysql versionが古いせいかもしれません。。。
今後も気をつけながら操作していきたいです。
追記(2020.10.15 08:21更新)
Twitterにて、このようなご指摘をいただきました。
自分がなんらかの手違いで、ここを予め設定していないのが、主な原因のようでした。。。
やらかしました、、、
とはいえ、いい経験になったので、このまま残しておきたいと思います😭。
Discussion