- 投稿日:2019-06-22T22:17:07+09:00
【MySQL】JOIN句
INNER JOIN
複数のテーブルを結合し、指定したカラムで一致するデータのみ取得する
SELECT * FROM ginkou.user A INNER JOIN ginkou.member b ON A.status = B.status;LEFT OUTER JOIN
左のテーブルの全データを取得し、右のテーブルのデータを結合する
右のテーブルにマッチするデータがない場合≪NULL≫となるSELECT * FROM ginkou.user A LEFT OUTER JOIN ginkou.member b ON A.status = B.status;RIGHT OUTER JOIN
右のテーブルの全データを取得し、左のテーブルのデータを結合する
左のテーブルにマッチするデータがない場合≪NULL≫となるSELECT * FROM ginkou.user A RIGHT OUTER JOIN ginkou.member b ON A.status = B.status;
- 投稿日:2019-06-22T22:02:11+09:00
【Mac、mysql5.7】ローカルでmysqlのパスワードを変更する方法
はじめに
本番環境でmysqlのパスワードを変更しようとしたらいつの間にかローカルのパスワードも変わってしまった!ということがあったので備忘録として。
ローカルではパスワードを設定したくないので、今回は空で設定しています。①ターミナルでmysqlの起動を停止させる
ホームディレクトリで構いません。
$ mysql.server stop Shutting down MySQL . SUCCESS!②mysqlをセーフモードで起動
$ sudo mysqld_safe --skip-grant-tables --skip-networking③起動したターミナルをそのままにし、⌘+tなどでもう一つターミナルのタブを開く
④③で新しく開いたタブにてmysqlにログイン
$ mysql -u rootセーフモードで立ち上げているため、本来であれば上記のコマンドでパスワードが必要なく入れるはずなのですがなぜか自分のPCでは入れませんでした・・。
できない人は下のコマンドにてパスワードを入力してログインしましょう。$ mysql -u root -p⑤パスワードの変更
mysql> update user set authentication_string=password("パスワード") where user='root'; mysql> FLUSH PRIVILEGES; mysql> exit自分の場合、今回はパスワードは設定したくなかったため、新しいパスワードというところは下記のようにしました。
authentication_string=password("")
⑥mysqlの再起動
$ mysql.server restart
以上でパスワードが変わっているはずです。
【参考記事】
・MySQLのrootユーザーのパスワードを変更
http://ktykwsk.com/mysql%E3%81%AEroot%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E5%A4%89%E6%9B%B4/・MySQL 5.7.6でroot用パスワードが変わらなくて困った話
https://qiita.com/gatchan0807/items/7323a5d2dd365308cb94
- 投稿日:2019-06-22T22:02:11+09:00
【Mac、msyql5.7】ローカルでmysqlのパスワードを変更する方法
はじめに
本番環境でmysqlのパスワードを変更しようとしたらいつの間にかローカルのパスワードも変わってしまった!ということがあったので備忘録として。
ローカルではパスワードを設定したくないので、今回は空で設定しています。①ターミナルでmysqlの起動を停止させる
ホームディレクトリで構いません。
$ mysql.server stop Shutting down MySQL . SUCCESS!②mysqlをセーフモードで起動
$ sudo mysqld_safe --skip-grant-tables --skip-networking③起動したターミナルをそのままにし、⌘+tなどでもう一つターミナルのタブを開く
④③で新しく開いたタブにてmysqlにログイン
$ mysql -u rootセーフモードで立ち上げているため、本来であれば上記のコマンドでパスワードが必要なく入れるはずなのですがなぜか自分のPCでは入れませんでした・・。
できない人は下のコマンドにてパスワードを入力してログインしましょう。$ mysql -u root -p⑤パスワードの変更
mysql> update user set authentication_string=password("パスワード") where user='root'; mysql> FLUSH PRIVILEGES; mysql> exit自分の場合、今回はパスワードは設定したくなかったため、新しいパスワードというところは下記のようにしました。
authentication_string=password("")
⑥mysqlの再起動
$ mysql.server restart
以上でパスワードが変わっているはずです。
【参考記事】
・MySQLのrootユーザーのパスワードを変更
http://ktykwsk.com/mysql%E3%81%AEroot%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E5%A4%89%E6%9B%B4/・MySQL 5.7.6でroot用パスワードが変わらなくて困った話
https://qiita.com/gatchan0807/items/7323a5d2dd365308cb94
- 投稿日:2019-06-22T17:06:47+09:00
ローカルでインストールしたのMySQLにGUIツールに接続してみよう!
対象読者
MySQLをローカル環境を整えた人
GUIを使って管理したい人
繋げ方がわからない人やること
MySQL WorkbenchもしくはSequel Proのどちらかを使ってGUIで管理していきます。
GUIって?
グラフィカルユーザインターフェース(Graphical User Interface)の略語です。
ディスプレイとマウスを使って、操作するのがGUIです。前提
- こちらを読んでMySQLのインストールが終わっている方。
- Sequel ProもしくはMySQL Workbenchをインストールしている方
WindowsユーザはMySQL Workbenchをインストールしてください。
Macユーザはどちらでもいいです。Sequel Proを使う(Macのみ)
開くと下記の画面が表示されます。
- 名前
- 適当に自分の好きな名前をつけてください。
- ホスト名
- 127.0.0.1(もしくはlocalhost)
- ユーザ名
- root
- パスワード
- パスワードを設定していたら、入れてください。設定していなかったら、空白でもOKです。
各情報を入れて、接続のボタンを押すと接続できます!
MySQL Workbenchを使う(Windows,Mac)
開くと下記の画面が表示されます。
(dockerは気にしないでください。通常は何もないです。)MySQL Connections の横に+マークがあるので、そこをクリックすると、下記の画面が表示されます。
表示されている画面で、下記必要な項目を入力していきましょう!
- Connection Name
- 適当に好き名前をつけてください。(ここではlocalhostにします。)
- Hostname
- 127.0.0.1(もしくはlocalhost)
- Username
- Username
- Password
- Store in Keychain...をクリック
- パスワードを入力してOKをクリック
OKを押すと、下記にdocker以外にもlocalhostの名前が追加されました。
実際に接続してみましょう!
下記のGifのように操作してください!
最後に
以上でMySQLの接続は完了致しました。
エラー文が出たり、操作がわからなくなったら、コメントしてくれると
追記いたします!
- 投稿日:2019-06-22T17:06:47+09:00
ローカルでインストールしたMySQLにGUIツールを使って接続してみよう!
対象読者
MySQLをローカル環境を整えた人
GUIを使って管理したい人
繋げ方がわからない人やること
MySQL WorkbenchもしくはSequel Proのどちらかを使ってGUIで管理していきます。
GUIって?
グラフィカルユーザインターフェース(Graphical User Interface)の略語です。
ディスプレイとマウスを使って、操作するのがGUIです。前提
- こちらを読んでMySQLのインストールが終わっている方。
- Sequel ProもしくはMySQL Workbenchをインストールしている方
WindowsユーザはMySQL Workbenchをインストールしてください。
Macユーザはどちらでもいいです。Sequel Proを使う(Macのみ)
開くと下記の画面が表示されます。
- 名前
- 適当に自分の好きな名前をつけてください。
- ホスト名
- 127.0.0.1(もしくはlocalhost)
- ユーザ名
- root
- パスワード
- パスワードを設定していたら、入れてください。設定していなかったら、空白でもOKです。
各情報を入れて、接続のボタンを押すと接続できます!
MySQL Workbenchを使う(Windows,Mac)
開くと下記の画面が表示されます。
(dockerは気にしないでください。通常は何もないです。)MySQL Connections の横に+マークがあるので、そこをクリックすると、下記の画面が表示されます。
表示されている画面で、下記必要な項目を入力していきましょう!
- Connection Name
- 適当に好き名前をつけてください。(ここではlocalhostにします。)
- Hostname
- 127.0.0.1(もしくはlocalhost)
- Username
- Username
- Password
- Store in Keychain...をクリック
- パスワードを入力してOKをクリック
OKを押すと、下記にdocker以外にもlocalhostの名前が追加されました。
実際に接続してみましょう!
下記のGifのように操作してください!
最後に
以上でMySQLの接続は完了致しました。
エラー文が出たり、操作がわからなくなったら、コメントしてくれると
追記いたします!
- 投稿日:2019-06-22T16:48:28+09:00
(Laravel)Homestead環境のDBをSequel Proで接続する(初心者用)
わざわざ
vagarnt ssh
で入るのが面倒なので、Homestead環境のDBをSequel Proで見れるように接続するまずはHomesteadからMySQLを確認
下記の記事を参考にHomestead環境を作って下さい。
Laravel(Homestead)とVue.jsの環境構築(自分用)
(Vue.js構築はシカトして途中のHomestead環境構築まで)Homestead.yamlの中身で下記の用になっていると思います。
Homestead.yamldatabases: - homestead上記の記述がDB名になるのでお好きなように変更して下さい。
この状態で
vagrant up
するとHomestead環境にDBが勝手に構築されるので確認。僕の環境では初期のユーザーは
homestead
パスワードはsecret
でした
多分.envファイルに書いてあるのでそこを参考にして下さい。vagrant ssh mysql -u homestead -p Enter password:
MySQLに入れたので、テーブルがあるか確認。
mysql> show datatabases; +---------------------+ | Database | +---------------------+ | information_schema | | homestead | | #mysql50#lost+found | | mysql | | performance_schema | | sys | +---------------------+ 6 rows in set (0.01 sec)しっかり
homestead
というDBが作られていることを確認しました。やっと本題のSequel Proに接続する
僕の環境だと下記で入れました。
ホスト(IP): 192.168.10.20
ユーザ名: homestead
パスワード: secretこれで入れました。
繋がらない!!って人は↓
ipってなに??って人は
Homestead.yaml
のip設定をみて下さい。Homestead.yamlip: 192.168.10.20ユーザ名とパスワードはどこから??
先ほどターミナルからmysqlに入った時に使用した情報です。以上本題より前置きが長いクソ記事でした。
- 投稿日:2019-06-22T16:37:50+09:00
MySQL8.0でPDO接続できない(dockerコンテナ)
TL;DR
- MySQL8.0ではcaching_sha2_passwordという認証方式に変わったため、PDO接続するユーザの認証方式をmysql_native_passwordに変更する必要があった
- hostにはdockerのコンテナ名を記入する
- ユーザを新しく作成して、権限付与し、認証方式を変更する
はじまりのコード
public function connect() { try { $dbh = new PDO('mysql:dbname={db名};host=127.0.0.1', 'root', 'root'); echo "接続成功\n"; return $dbh; } catch (PDOException $e) { echo "接続失敗: " . $e->getMessage() . "\n"; exit(); } }{DB名}の部分は自分のデータベース名を入れていました
で、以下エラー文
接続失敗: SQLSTATE[HY000] [2002] Connection refused
理由
hostにはdockerのコンテナ名を入力する必要がある
参考 : Docker Composerではコンテナ間通信はコンテナ名を指定するhostを変更
$dbh = new PDO('mysql:dbname={db名};host={コンテナ名}', 'root', 'root');以下エラー(同じ)
接続失敗: SQLSTATE[HY000] [2002] Connection refused
理由
rootの認証方式がchaching_cha2_passwordなので、mysql_native_passwordに設定する必要がある
# mysql接続(mac、もしくはdockerのdbコンテナ上で以下を実行) ❯ mysql -u root -p -h 127.0.0.1 # mysqlのユーザを表示 mysql> SELECT user, host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | root | % | caching_sha2_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+解決策は以下。2. がおすすめ。
1. rootのpluginを変更する
2. 新しくユーザを作って、権限を変更しつつ、pluginを変更する解決策1「rootのpluginを変更する」
# rootの認証方式をmysql_native_passwordに変更する mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; Query OK, 0 rows affected (0.01 sec) mysql> SELECT user, host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | root | % | mysql_native_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+これで接続成功した。
解決策2「新しくユーザを作って、権限を変更しつつ、pluginを変更する」
# user名がpoeでpasswordがpoeのユーザを作る。 # hostを%にすることで、外部(dockerコンテナ)から接続できるユーザになる mysql> CREATE USER 'poe'@'%' IDENTIFIED BY 'poe'; Query OK, 0 rows affected (0.02 sec) # 確認すると、poeができている mysql> SELECT user, host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | poe | % | caching_sha2_password | | root | % | mysql_native_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+ 7 rows in set (0.00 sec) # poeのpluginを変更する mysql> ALTER USER 'poe'@'%' IDENTIFIED WITH mysql_native_password BY 'poe'; Query OK, 0 rows affected (0.01 sec) mysql> SELECT user, host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | poe | % | mysql_native_password | | root | % | mysql_native_password | | test | % | mysql_native_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+ 7 rows in set (0.00 sec)これで接続してみると...エラーになってしまった...
$dbh = new PDO('mysql:dbname={db名};host={コンテナ名}', 'poe', 'poe');
接続失敗: SQLSTATE[HY000] [1044] Access denied for user 'poe'@'%' to database '{db名}'
エラーになった理由
ユーザの権限がないからエラー。このサイト(MySQL8.0ではGRANT構文でユーザを作成できない)を参考にしつつ、以下実行
# 権限確認 mysql> SHOW GRANTS for 'poe'@'%'; +---------------------------------+ | Grants for poe@% | +---------------------------------+ | GRANT USAGE ON *.* TO `poe`@`%` | +---------------------------------+ 1 row in set (0.00 sec) # 権限変更 mysql> grant all on *.* to 'poe'@'%' with grant option; Query OK, 0 rows affected (0.03 sec) # 権限反映 mysql> flush privileges; Query OK, 0 rows affected (0.02 sec) # 権限めっちゃ増えたわ mysql> SHOW GRANTS for 'poe'@'%'; +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for poe@% | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `poe`@`%` WITH GRANT OPTION | | GRANT APPLICATION_PASSWORD_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `poe`@`%` WITH GRANT OPTION | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)すると、接続成功しました。
補足 : 新しく作ったユーザの認証方式を全部mysql_native_passwordにさせる
[mysqld] default_authentication_plugin=mysql_native_passwordこれをmy.cnfに追加すると、
新規ユーザ作成時、認証方式が自動的にmysql_native_passwordとなるらしいです
そのほかにも出たエラー
接続失敗: sqlstate[hy000] [2002] no such file or directory
多分hostをlocalhostにしているから。dockerだとhostはコンテナ名
SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'localhost' (10061).
mysqlに入ってuserのhostを見て欲しい。localhostになってるでしょ。ここが%じゃないと外部サーバーからの接続はできないんだと思う
- 投稿日:2019-06-22T15:45:45+09:00
【Mac】MySQL5.7をインストールする。(おまけにセキュリティーの設定もする)
対象読者
- MySQLが入っていない人
- HoMtSQLを入れてみたい人
- エラーでなかなか入らない人
前提
- MacはMojaveのOSで動作確認
- MySQLの言葉を知っていてる人
- Homebrewはインストール済み
自分のメモ書きのため、随時更新
手順
MySQL5.7をインストールする。
MySQL5.7をインストールします。
$ brew install mysql@5.7 Updating Homebrew... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/core). ==> Updated Formulae glooctl h3 k3d postgrest terragrunt youtube-dl ==> Downloading https://homebrew.bintray.com/bottles/mysql@5.7-5.7.26.mojave.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/81/815ae8aa8c765f57e806ff9197eaa5783b138c493d68333c553b25f441b6af3e?__gda__=exp=1561175800~hmac=ef410ed9bef72a578728ab88bc0290406ed1f72a09853aef7128c272a2041775&response-content-disposition= ######################################################################## 100.0% ==> Pouring mysql@5.7-5.7.26.mojave.bottle.tar.gz ==> Caveats We've installed your MySQL database without a root password. To secure it run: mysql_secure_installation MySQL is configured to only allow connections from localhost by default To connect run: mysql -uroot mysql@5.7 is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula. If you need to have mysql@5.7 first in your PATH run: echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile For compilers to find mysql@5.7 you may need to set: export LDFLAGS="-L/usr/local/opt/mysql@5.7/lib" export CPPFLAGS="-I/usr/local/opt/mysql@5.7/include" For pkg-config to find mysql@5.7 you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/mysql@5.7/lib/pkgconfig" To have launchd start mysql@5.7 now and restart at login: brew services start mysql@5.7 Or, if you don't want/need a background service you can just run: /usr/local/opt/mysql@5.7/bin/mysql.server start ==> Summaryたくさんのログが書かれていますが、ここではインストールの説明です。
実はここの説明文が重要で、
例えば下記のバージョンを確認するコマンドを打ったとき、$ mysql --version bash: command not found: mysqlと出たらインストールはされているが、mysqlのコマンドが見つからないと出てきます。
ここでインストールの時に出ていた、下記のメッセージに従います。
If you need to have mysql@5.7 first in your PATH run:
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profileと書いているように、実際に
.bash_profile
のファイルの中に
'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"'
を記載して反映します。
下記が手順です。$ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile $ source ~/.bash_profileその後バージョンを確認して、インストールを行いましょう。
$ mysql --version mysql Ver 14.14 Distrib 5.7.26, for osx10.14 (x86_64) using EditLine wrapperバージョンを確認することができました。
ここで次にMySQLを実際に使えるかインストールのメッセージにもあったTo connect run: mysql -uroot
ここの
mysql -uroot
を打って確認しましょう。
下記の表示になったら、$ mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.25 Homebrew Copyright (c) 2000, 2019, 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>(おまけ)セキュリティーの設定について
インストールのメッセージにもあった
We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installationこのコマンドを打ってセキュリティーの設定に進みましょう。
最初に「VALIDATE PASSWORDプラグインを設定しますか?」と推奨されます。
y
を打って進めてください。$ mysql_secure_installation Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No: yその後進めると次の表示が出るかと思います。
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0セキュリティの強度を
LOW
、MEDIUM
、STRONG
の3段階でパスワードを選ぶことができます。
今回はLOW
で進めますので、0を選択します。Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 50 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : yここでは、パスワードを入力していきます。同じパスワードを二回入力しましょう。最後に
パスワードの強度が100段階中で表示されます。
指定したパスワードでよければy
を押して進めてください。By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success.MySQLはデフォルトで匿名ユーザの情報が入っています。
いらないので消しましょう。Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success.rootユーザでリモートのログイン許可の可否について聞かれています。
基本的にlocalhostでしか使用しないので、必要ありません。
y
を押しましょう。By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success.デフォルトで
test
のDBが作成されています。
必要ないので削除しましょう。
y
を押して進めます。Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
DBに更新があった場合、即時リロードして反映するかという説明です。
y
を押して有効にしましょう。以上でセキュリティーの設定は終わりです。
最後にmysqlにログインしてp確認しましょう。
先ほどは
mysql -uroot
でもログインはできたのですが、
今回はPWを設定したので
mysql -root -p
と入力する必要があります。
そして、MySQLのセキュリティー設定で決めたPWを入力したら、無事ログインすることができます。$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.25 Homebrew Copyright (c) 2000, 2019, 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>以上でセキュリティーの設定が終わりました。
おまけの部分が長くなりましたが以上です!
- 投稿日:2019-06-22T15:14:11+09:00
SQL EXISTSとJOIN
EXISTS
SELECT * FROM users WHERE EXISTS ( SELECT id FROM orders WHERE users.id = user_id AND orders.created >= '2019-06');
- usersテーブルはメインテーブル、ordersテーブルはサブテーブル
- このメインテーブルのidをサブクエリで参照する事を相関サブクエリと呼ぶ
- メインテーブル×サブテーブルのレコード数を比較対象とする
- 条件に一致するレコードが見つかった場合その時点で処理は終了する
- 見つからなかった場合、メインテーブル×サブテーブルのレコード数を比較しに行く
- レコード数が増えればその分比較対象となるレコード数も増える
INNER JOIN
SELECT * FROM users INNER JOIN ( SELECT DISTINCT user_id FROM orders WHERE orders.created >= '2019-06') AS sub ON sub.user_id = users.id;
- 実行順序によりINNER JOIN句のサブクエリから実行される
- サブクエリの実行でSELECTに指定したカラムの重複削除とWHERE句の条件によって絞り込みが行われる
- その結果をINNER JOINでメインテーブルに結合する
実行速度
EXISTS
- 45~50ms
INNER JOIN
- 15~20ms
参考
- 投稿日:2019-06-22T00:54:03+09:00
Railsの起動エラーとMySQLのエラー解除方法(個人メモ)
Railsの起動エラーと、MySQLのエラー解除方法を個人的にメモする。
【PC:MacBookPro2012(13-inch, Mid 2012)、MacOS Mojave 10.14.4】
【ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]】
【Rails 5.2.3】
【mysql Ver 8.0.15 for osx10.14 on x86_64 (Homebrew)】MySQLのエラーについて。
まずはmysqlの場所を確認。
$ which mysql /usr/local/bin/mysqlMySQLサーバーを起動させる。
$ mysql.server start Starting MySQL ...... ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.local.pid).PIDファイルを確認する。
$ ls -la /usr/local/var/mysql/*****.local.pid ls: /usr/local/var/mysql/*****.local.pid: No such file or directoryMySQLサーバーをストップしてみる。
$ mysql.server stop ERROR! MySQL server PID file could not be found!sudoを入れて起動してみる。
$ sudo mysql.server start Password: Starting MySQL . ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.local.pid).安全にMySQLを起動してみる。
$ mysqld_safe 2019-04-24T03:34:24.6NZ mysqld_safe Logging to '/usr/local/var/mysql/*****.local.err'. 2019-04-24T03:34:24.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql 2019-04-24T03:34:29.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/*****.local.pid endedとりあえずアンインストールしてみる。
$ brew uninstall mysql Uninstalling /usr/local/Cellar/mysql/8.0.15... (267 files, 234.6MB)ちゃんと削除できたか確認。
$ which mysql (何も出てこない)再度インストールしてみる。
$ brew install mysqlこれでmysql.server startしてもエラーだったので、上の操作を繰り返してみたけどダメ。
「PIDファイルが見つからない」ので、ファイルの生成をしてみる。
$ /usr/local/var/mysql/mysql > touch /usr/local/var/mysql/*****.local.pid -bash: /usr/local/var/mysql/mysql: is a directory奇跡的に起動しないか願いを込めて。
$ mysql.server start Starting MySQL ...... ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.local.pid).どこかで見つけたこのコマンドを入力してみる。
$ /usr/local/var/mysql/mysql > sudo mysql.server restart -bash: /usr/local/var/mysql/mysql: is a directory同じかい!!(ノ_<)
$ sudo chown -R _mysql:_mysql /usr/local/var/mysql /tmp/mysql.sock Password:何やらパスワードを求められた。。。いけるのか?
sudoで起動させてみよう。
$ sudo mysql.server start Starting MySQL ..... ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.local.pid).あかんのかい!(T . T)
sudoなしで起動できるようにするらしいコマンド。
$ sudo chown -R `whoami`:admin /usr/local/var/mysql /tmp/mysql.sock起動させてみる。
$ mysql.server start Starting MySQL .. SUCCESS!キターーーーーーーーー!!!!!!♪───O(≧∇≦)O────♪
よーし!早速Railsをローカル環境で表示させてみよう。Railsのシステムを起動。
$ rails sブラウザでlocalhost:3000を入力。(成功なら画面にRailsの初期画面が表示される)
なんとエラー!!恐怖の赤い画面!!
ActiveRecord::NoDatabaseError (Unknown database 'hello_sample7_development'):
え、データベースがない・・・?∑(゚Д゚)ということでデータベースを作成。
$ rails db:create Created database 'ファイル名_development' Created database 'ファイル名_test'再度Railsのシステム起動。
$ rails sRailsの初期画面が出た!!!☆:.。. o(≧▽≦)o .。.:☆