20200514のMySQLに関する記事は5件です。

Mysql5.7で接続できない状態でrootパスワードを変更する方法

【開発環境】
macOS Catalina

Mysql5.7で接続できない状態でrootパスワードを変更する方法

ローカルでmysqlにパスワード付きで接続しようとした時

$ mysql -u root -p

ERROR 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
Bye

Mysqlにパスワード有りで接続する

起動します。

$ mysql.server start

パスワード有りで接続します。

$ mysql -u root -p

パスワードを入力してログインできれば成功です。

おわりに

私はこのエラーでかなり時間使ったので記載しました、、、。

参考記事 https://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980

間違いなどがありましたらご指摘いただければ幸いです。
最後までご覧いただきありがとうございました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Mysql5.7]接続できない状態でrootパスワードを変更する方法

【開発環境】
macOS Catalina

Mysql5.7で接続できない状態でrootパスワードを変更する方法

ローカルでmysqlにパスワード付きで接続しようとした時

$ mysql -u root -p

ERROR 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
Bye

Mysqlにパスワード有りで接続する

起動します。

$ mysql.server start

パスワード有りで接続します。

$ mysql -u root -p

パスワードを入力してログインできれば成功です。

おわりに

私はこのエラーでかなり時間使ったので記載しました、、、。

参考記事 https://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980

間違いなどがありましたらご指摘いただければ幸いです。
最後までご覧いただきありがとうございました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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と指定する必要がある。

・チーム開発ではマイグレーションによる混乱が生じやすい。勝手にマイグレーションのバージョンを変えたりすると、バージョンが合わなくなってしまう。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Djangoの各種データベース用の設定をまとめてみた(MySQL、PostgreSQL)

Djangoで使用するデータベースをコロコロ変える羽目になったときにやりやすいようにまとめました

SQLite3

デフォルトの設定のままで使えるので割愛

MySQL

settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE',  # Database名
        'USER': 'USER',  # ユーザID
        'PASSWORD': 'password',  # ユーザIDのパスワード
        'HOST': 'localhost',  # ホスト名
        'PORT': '3306',
    }
}

必要なライブラリ:mysqlclient
PyMySQLも使えますが推奨されているのはmysqlclientです。

POSTGRESQL

settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'DATABASE',  # Database名
        'USER': 'USER',  # ユーザID
        'PASSWORD': 'password',  # ユーザIDのパスワード
        'HOST': 'localhost',  # ホスト名
        'PORT': 5432,
    }
}

必要なライブラリ:psycopg2

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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 start

mysql.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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む