SQLのインデックス確認方法 / インデックス対象のカラム

SQLのパフォーマンスを向上させたい場合に、重要な変数であるインデックス。インデックスを作成してパフォーマンス向上していく場合もあるかと思います。

それらを確認する方法を解説します。

show index from テーブル名;

非常にシンプルです。

Q デフォルトで存在するインデックス

出力されたデータを確認頂けると注目して頂きたいのは、Key_nameです。

まず、必ずインデックスがついているのが、PRIMARY KEYです。
デフォルトだと、Tableのidに該当します。

また、PRIMARY KEYでなくても、インデックスが存在している場合があります。
それは、他のTableのPRIMARY KEYに紐付いている外部キー カラムです。

下記2カラムは、
インデックスを作成しなくても、デフォルトでインデックスとなっています。

  • PRIMARY KEY
  • PRIMARY KEYに紐付いている外部キー カラム

DockerでMysqlへログイン ERROR 1045 (28000): Access denied for user

Dockerの環境構築に手こずっておりました。
今回の記事は、先日の記事の続きです。

mysqlの中に入ったあとに、

docker exec -it db-host bash

mysqlにrootユーザーとしてログインしようとしたら、次のようなエラーメッセージが表示されました。

root@5c001e56e8bc:/# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Laravelの.envの確認をして、password設定したいましたが、うまくいきません。

結論:docker-compose.yml の MYSQL_ROOT_PASSWORDを確認

mysqlへのroot権限での情報は、docker-compose.yml > environment: > MYSQL_ROOT_PASSWORD: で設定していたのです….

理解せずに、進めると躓きますね。

ということで、ここで設定したpasswordを反映すると、下記のように入れます。

Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 3
 Server version: 5.7.31 MySQL Community Server (GPL)
 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.

Laravelでphp artisan migrateをするとエラー:「 [1044]Access denied for user」を解決した

MySQLとの接続において、Access deniedされたのを解決した方法です。
自分の場合は、普通に何度もphp artisan migrate(MySQLとの接続)を実行していて急に接続出来なくなったシチュエーションです。

調べていくと、下記のサイトが有力情報としてあがってきました。

https://qiita.com/terry_6518/items/13f5fbf4e5f58577d6d9

.env ファイルで、MySQLとの接続情報を所持しており、そこの情報が違うのではないか??という情報がチラホラ。

.envファイルを確認しても、
接続出来ていた状態と何も変わらない….

ということは、MySQL側で何か変化が起きている可能性がありそう。
ということで確認してみると。

接続可能なユーザー情報を確認しようと、MySQLの特権にアクセスすると、エラーが…..

全く同じエラーで困っている人の情報を参考に、このエラーを解決しました。

https://tt-computing.com/mariadb-error-176

すると、もともと接続するために作っていた
DB_USERNAMEが消えているではないですか。

特権から、ユーザアカウントを追加する、で新しく追加しました。

.envの

DB_DATABASE=XXXX
DB_USERNAME=XXXX 
DB_PASSWORD=XXXX

にセットすることで解決できました…!