- 投稿日:2020-05-14T20:48:10+09:00
Mysql5.7で接続できない状態でrootパスワードを変更する方法
【開発環境】
macOS CatalinaMysql5.7で接続できない状態でrootパスワードを変更する方法
ローカルでmysqlにパスワード付きで接続しようとした時
$ mysql -u root -pERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
というエラーが出たので、その対処法を記載します。パスワードが間違っているorそもそもパスワードを設定していない場合に出るエラーみたいですね。
$ mysql -u rootこれで接続できればパスワードを設定していないかがわかります。
これで接続できない場合パスワードが間違っている可能性が高いです。
私がやった方法を記載していきます。
Mysqlをストップする
いろいろする前にとりあえずMysqlを止めます。
$ mysql.server stop状態を見ます。
$ mysql.server status止まっていれば成功です。
私の場合Mysql自動起動を設定していたので、stopできていませんでした。そういう方は、
$ brew services stop mysql@5.6のコマンドで自動起動を止めておきます。
Mysqlにパスワードなしで接続する
$ mysqld_safe --skip-grant-tables &このコマンドでパスワードなしで起動できます。
パスワードなしで接続
mysql -u rootパスワードを再設定する
Mysqlにログイン後にコマンドを打ち込んでいきます。
mysql> use mysqlパスワードを変更するコマンドです。
mysql> UPDATE user SET authentication_string=password('新規パスワード') WHERE user='root';Mysqlに反映させる。
mysql> flush privileges;ログアウトします。
mysql> quit ByeMysqlにパスワード有りで接続する
起動します。
$ mysql.server startパスワード有りで接続します。
$ mysql -u root -pパスワードを入力してログインできれば成功です。
おわりに
私はこのエラーでかなり時間使ったので記載しました、、、。
参考記事 https://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980
間違いなどがありましたらご指摘いただければ幸いです。
最後までご覧いただきありがとうございました。
- 投稿日:2020-05-14T20:48:10+09:00
[Mysql5.7]接続できない状態でrootパスワードを変更する方法
【開発環境】
macOS CatalinaMysql5.7で接続できない状態でrootパスワードを変更する方法
ローカルでmysqlにパスワード付きで接続しようとした時
$ mysql -u root -pERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
というエラーが出たので、その対処法を記載します。パスワードが間違っているorそもそもパスワードを設定していない場合に出るエラーみたいですね。
$ mysql -u rootこれで接続できればパスワードを設定していないかがわかります。
これで接続できない場合パスワードが間違っている可能性が高いです。
私がやった方法を記載していきます。
Mysqlをストップする
いろいろする前にとりあえずMysqlを止めます。
$ mysql.server stop状態を見ます。
$ mysql.server status止まっていれば成功です。
私の場合Mysql自動起動を設定していたので、stopできていませんでした。そういう方は、
$ brew services stop mysql@5.6のコマンドで自動起動を止めておきます。
Mysqlにパスワードなしで接続する
$ mysqld_safe --skip-grant-tables &このコマンドでパスワードなしで起動できます。
パスワードなしで接続
mysql -u rootパスワードを再設定する
Mysqlにログイン後にコマンドを打ち込んでいきます。
mysql> use mysqlパスワードを変更するコマンドです。
mysql> UPDATE user SET authentication_string=password('新規パスワード') WHERE user='root';Mysqlに反映させる。
mysql> flush privileges;ログアウトします。
mysql> quit ByeMysqlにパスワード有りで接続する
起動します。
$ mysql.server startパスワード有りで接続します。
$ mysql -u root -pパスワードを入力してログインできれば成功です。
おわりに
私はこのエラーでかなり時間使ったので記載しました、、、。
参考記事 https://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980
間違いなどがありましたらご指摘いただければ幸いです。
最後までご覧いただきありがとうございました。
- 投稿日:2020-05-14T20:10:29+09:00
Mysql2::Error: Table 'posts' already exists: CREATE TABLE `posts`の解決(むりやり)
[マイグレーションファイルのエラー解決についてやったこと・調べたこと]
今実装しているところ
postテーブルのモデル、テーブル作成
(チーム開発で言うところのitemsテーブルのマイグレーション=データベース設計図の反映)生じている問題
rails db:migrateしようとすると「すでにそのテーブルは存在しています」というエラーが出る。
結局どう解決したか
postテーブルとpostモデルを綺麗サッパリ完全に削除してから作り直した。
[postテーブルのマイグレーション記録を削除する方法]
rm (-rf) db/migrate/20200514053205(記録番号)_Create_posts.rb
これでマイグレーション履歴一覧から消せる[postモデルを削除する方法]
rails destroy model post(item)
これでpostモデルとそれに関連するテーブルを削除できる(昨日やった)[mysqlに残ったpostテーブルの削除方法]
これがmysql文を使った正攻法ではどう頑張っても解決できなかったので、ムカついてSequel Proで強制削除した。ちなみに、mysql文で普通に消そうとすると、「外部キーが設定してあるから消せません」と出てきた。外部キーの設定自体は消せたつもりだったが、実際は消せてなかったようで、どうしてもmysqlのpostテーブルを削除できなかった。今回わかったこと
・rails db:migrate statusで出てくるテーブルが全てではない。rails destroy model post(モデルを削除するコマンド)をやったら一覧にはないテーブルを消したことになっているし、mysqlには履歴では消えているテーブルも残っていた。
・一度作ったマイグレーションファイルを編集(追加・修正)する方法はカリキュラム通りロールバックしてマイグレーションされてない状態に戻してからrails db:migrateする方法と、修正・追加用の新たなマイグレーションファイルを作る方法の2通りがあり、チーム開発には後者の方がいいっぽい(根拠は本とQiita)。ちなみに、ロールバックは1回やっただけではバージョンを1つ戻したことにしかならないので、複数前のバージョンに戻るには、db:rollback STEP=2とやったり、db:migrate VERSION=20180608051058と指定する必要がある。
・チーム開発ではマイグレーションによる混乱が生じやすい。勝手にマイグレーションのバージョンを変えたりすると、バージョンが合わなくなってしまう。
- 投稿日:2020-05-14T15:41:31+09:00
Djangoの各種データベース用の設定をまとめてみた(MySQL、PostgreSQL)
Djangoで使用するデータベースをコロコロ変える羽目になったときにやりやすいようにまとめました
SQLite3
デフォルトの設定のままで使えるので割愛
MySQL
settings.pyDATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DATABASE', # Database名 'USER': 'USER', # ユーザID 'PASSWORD': 'password', # ユーザIDのパスワード 'HOST': 'localhost', # ホスト名 'PORT': '3306', } }必要なライブラリ:mysqlclient
PyMySQLも使えますが推奨されているのはmysqlclientです。POSTGRESQL
settings.pyDATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'DATABASE', # Database名 'USER': 'USER', # ユーザID 'PASSWORD': 'password', # ユーザIDのパスワード 'HOST': 'localhost', # ホスト名 'PORT': 5432, } }必要なライブラリ:psycopg2
- 投稿日:2020-05-14T10:54:52+09:00
【brew】bundle installでmysql2エラーが出てしまった時の解決策
homebrewを使ってrailsをAPIモードで使用する、 bundle install で以下のエラーが出てしまいました。
console.user-no-MacBook-Pro:app user$ bundle install An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling.解決策
そういえば、brewでmysqlを使うのが初めてだったので、まずbrewでmysqlをインストールが必要でした。
console.user-no-MacBook-Pro:app user$ brew install mysql ... To have launchd start mysql now and restart at login: brew services start mysql Or, if you don't want/need a background service you can just run: mysql.server startmysql.server.startが出力されたらmysqlインストールに成功しています。
console.user-no-MacBook-Pro:app user$ brew info mysql mysql: stable 8.0.19 (bottled)ここで、bundle install 再実行
console.user-no-MacBook-Pro:app user$ bundle install Installing mysql2 0.5.3 with native extensions Using puma 4.3.3 Fetching rack-cors 1.1.1 Installing rack-cors 1.1.1 Using thor 1.0.1 Using railties 6.0.3 Using sprockets 4.0.0 Using sprockets-rails 3.2.1 Using rails 6.0.3 Using spring 2.1.0 Using spring-watcher-listen 2.0.1 Bundle complete! 10 Gemfile dependencies, 55 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed.先ほどまで、installing mysql2 で引っかかっていたのが、今度はスムーズにいけました。
railsをAPIモードで使うことを前提としているので、コレで作業が進みそうです。おまけ
Ruby on Rails+ReactでCRUDを実装してみた
https://qiita.com/yoshimo123/items/9aa8dae1d40d523d7e5d#%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%A7%8B%E6%88%90こちらを進めているのですが、
console.user-no-MacBook-Pro:app user$ rake db:create Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) Couldn't create 'app_development' database. Please check your configuration. rake aborted! Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と出てしまいました。
rake aborted!
cant connect to local MySQL serverとあるため、mysql側にエラーがあるようです。今回の場合、mysqlサーバーが動いていないよ!ということだったので、
console.user-no-MacBook-Pro:app user$ mysql.server start Starting MySQL .. SUCCESS! user-no-MacBook-Pro:app user$ rake db:create Created database 'app_development' Created database 'app_test'mysqlを起動することで、無事に解決しました。
今後もエラーログを見て、何がエラーになっているのかを理解してスキルを高めていきたいですね。参考
【Rails/MySQL】RailsにMySQLを導入する方法【プログラミング学習149日目】
https://qiita.com/fuku_tech/items/a380ebb1fd156c14c25b