Rails 5でSQlite3で作っていたアプリを、Mysqlへ移行しようとしたのですが、bundle exec rake db:create
でMysql2::Error::ConnectionError: Access denied for user
エラーが出てしまい先に勧めません。
環境
$ rails -v Rails 5.2.0
やったこと
MysqlのUbuntuへのインストール/スタート
sudo apt-get update sudo apt-get install libmysqld-dev sudo apt-get install mysql-server sudo mysql_secure_installation systemctl status mysql.service sudo /etc/init.d/mysql start
mysqlの新しいユーザーを追加。(rootの挙動がおかしかったので)
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
gemfileへ追記
gem 'mysql2'
gemをインストール
bundle install
\config\database.yml を編集
# SQLite version 3.x # default: &default adapter: sqlite3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 # # development: # <<: *default # database: db/development.sqlite3 # test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3 development: adapter: mysql2 encoding: utf8 database: aptnote_development pool: 5 username: user password: password host: localhost # socket: /tmp/mysql.sock
これでできるはず…だができませんでした。
$ bundle exec rake db:create Mysql2::Error::ConnectionError: Access denied for user 'user'@'localhost' to database 'aptnote_development': CREATE DATABASE `aptnote_development` DEFAULT CHARACTER SET `utf8` Couldn't create database for {"adapter"=>"mysql2", "encoding"=>"utf8", "database"=>"aptnote_development", "pool"=>5, "username"=>"user", "password"=>"password", "host"=>"localhost"} rake aborted! ActiveRecord::StatementInvalid: Mysql2::Error::ConnectionError: Access denied for user 'user'@'localhost' to database 'aptnote_development': CREATE DATABASE `aptnote_development` DEFAULT CHARACTER SET `utf8` /home/yuis/.rbenv/versions/2.4.2/bin/bundle:23:in `load' /home/yuis/.rbenv/versions/2.4.2/bin/bundle:23:in `<main>' Caused by: Mysql2::Error::ConnectionError: Access denied for user 'user'@'localhost' to database 'aptnote_development' /home/yuis/.rbenv/versions/2.4.2/bin/bundle:23:in `load' /home/yuis/.rbenv/versions/2.4.2/bin/bundle:23:in `<main>' Tasks: TOP => db:create (See full trace by running task with --trace)
ConnectionErrorとあるので、mysqlがそもそも起動していないのかと一瞬思いますが、やはり最初に起動しているわけで。
データベースを作っておかないといけないのかな、とも一瞬思いましたが、たしかRailsはデータベースをdb:create
で作ってくれるので、予め同名のデータベースを作成しておく必要はないし、逆に作成してしまっていると既に存在しているとしてエラーが出た気がします。
参考にした記事
railsのapp作成でmysqlを使用する時の導入とハマるところ rake db:createができるまでの流れ - Qiita
mysql - Rails and Mysql2 Access denied for user 'root'@'localhost' (using password: NO) - Stack Overflow
Mysql2で「Access denied for user 'root'@'localhost'」 - Qiita
Ruby on Rails MYSQL error Access denied for user 'root@localhost' - Stack Overflow
railsのDBをmysqlに変更する。 - Qiita
How To Install MySQL on Ubuntu 16.04 | DigitalOcean
RailsのDBを(初めから| |後から)MySQLに変更する - Qiita
回答1件
あなたの回答
tips
プレビュー