このブログは未経験からのエンジニア転職やプログラミングの勉強方法などを発信する、現役エンジニアによるエンジニアのためのトータル技術ブログです。ブログとご一緒にSNSのフォローもよろしくお願いします。

Twitterをフォローする

【MySQL】データベースへの接続・作成【基本】

MySQL
スポンサーリンク

こんにちは、あっきー(IwswAkht)です。

本日はデータベースについてです。
中でもシェアの高いMySQLについての記事を書いて行こうと思います。

近年はフレームワークでの開発が主流でプログラミングを始めたての方などでフレームワークしかさわってないなんてこともあるのではないでしょうか?

フレームワークは非常に便利でデータベース言語がわからなくてもWebアプリの開発をすることができます。

便利ではある反面、Webアプリは結局のところデータベースありきだと僕は思っています。フレームワークのように便利なメソッドでデータベースを操作できるのは素晴らしいですが、このメソッドをつかった時に裏側ではどんなSQLが実行されたからこの結果が取得できたということを理解しておくことは後々の理解に非常に役が立ちます。

今回は中でもデータベースへの接続やデータベースの作成など基本的な部分について解説していきます。

基本をおさえることが結局のところ良い学習効率につながります。それではやっていきましょう。

スポンサーリンク

MySQLへの接続

MySQLに接続するための基本的な方法を確認します。

  • MySQLに接続

    ターミナル

  • MySQLを終了

    ターミナル

MySQLに接続できない時の対処

新規でMySQLを導入した時に接続できないというケースのほとんどは単にMySQLが起動していないことがほとんどです。

ターミナルに以下のエラーが表示されているかと思います。

ターミナル

その場合は以下のコマンドでMySQLを起動してあげましょう。

ターミナル

逆にMySQLを終了する場合は以下のコマンドで停止できます。

ターミナル

パスワードを設定する

MySQLを初期インストールした状態では、rootユーザーにパスワードが設定されていません。このユーザーはMySQLのすべての操作が行うことができるので、パスワードが未設定だとセキュリティ的に危険です。

ローカルの開発環境だからパスワードなくてもいいでしょ!って意見もあるかと思いますが、万が一そのまま忘れてアプリケーションを公開なんてしてしまった日には完全に死亡フラグです。乗っ取られて深刻なセキュリティ障害が発生してしまうかもしれないです。

なので、MySQLを入れたらまずはパスワードを設定するということを意識するためにも最初の段階でやり方を理解して癖づけておきましょう。

MySQLでのパスワードの設定方法はバージョンによってはエラーになったりするので、まず初めにバージョンを確認してみましょう。

ターミナル

mysql Ver 5.6.7より低い場合は以下の方法で設定することができます。

ターミナル

mysql Ver 5.6.7以降ですと上記のコマンドを実行すると以下のようなエラー分が表示されます。

ターミナル

原因としてはmysql Ver 5.6.7以降ではpassword()関数が廃止されたことでそもそも文法が存在しないからです。

ですので、新しいバージョンでのMySQLでは以下の方法でパスワードを設定していきましょう。

ターミナル

これで設定が完了します。

試しにexitでいったんmysqlクライアントを終了して、再度パスワードなしのrootユーザでアクセスしてみてください。以下のような結果になることが確認できます。

ターミナル

接続ができないことが確認できますね。

ユーザの作成

ここまで管理者権限であるrootユーザで操作を行ってきました。ですが実際の開発や運用では常に管理者権限を利用することはセキュリティ的にあまりよろしいことではないです。

また、rootユーザはMySQLの全ての操作ができてしまうためユーザによって操作の制限などをかけたい場合もあるでしょう。

そこでここでは、作成した特定のデータベースへの操作をするためのユーザを作成する方法をみてみましょう。

こちらもパスワードを設定すると同様バージョンによってエラーが発生しますので2パターンでみていきましょう。

mysql Ver 5.6.7より低い場合は以下の方法で設定することができます。

ターミナル

mysql Ver 5.6.7以降ですと上記のコマンドを実行すると以下のようなエラー分が表示されます。

ターミナル

mysql Ver 5.6.7以降では以下の方法で設定しましょう。

ターミナル

試しにexitでいったんMySQLクライアントを終了して、操作の権限が付与されたか確認してみましょう。

ターミナル

MySQLの初期構成で解説しますが、mysqlは管理者であるrootユーザが操作できるデータベースです。新規で作成したユーザではAccess deniedと接続が拒否されたことで権限が設定されたことが確認できますね。

少し複雑なコマンドですので解説もしますね。

  1. all privileges

    ユーザの操作の権限レベルを設定しています。
    全権限・作成のみ・更新のみなどの操作レベルを設定できます(公式ページ)

  2. データベース名.*

    データベース名.テーブル名の構成で設定する
    ここでは.*なので指定したデータベース内の全テーブルですが、特定のテーブル名を指定することでより詳細に設定することもできます

  3. '任意のユーザ名'@'localhost'

    作成したユーザ名とURLのホスト名で構成します。
    開発環境ではlocalhostですが本番ではexample.comのように実際のホスト名を指定します。

  4. identified by '任意のパスワード'

    mysqlクライアントを起動するさいのパスワードをここで設定しています

データベースの作成・削除

MySQLに繋ぐ方法が理解できましたら実際にデータベースを作成して削除する流れを確認していきます。ここではsampleというデータベースを作成・削除してみます。

  • MySQLへの接続の手順でmysqlクライアントを起動します
  • データベースを作成する

    ターミナル

  • データベースを確認する

    ターミナル

    sampleが作成されていることが確認できます。

  • データベースを削除する

    ターミナル

  • データベースを確認する

    ターミナル

    sampleが削除されていることが確認できます。

createdropなど直感的に処理の内容がわかりやすいですよね。このようにSQLの構文はわかりやすいのが多いので、MySQLの使い方自体はすぐにできるようになります。

MySQLの初期構成

MySQLの準備ができましたら複数のデータベースを作成してアプリケーションを構築していきますが、初期状態ですでにいくつかのデータベースが存在しますので確認してみましょう。

初期状態のデータベースでは以下のような構成になってます。(laravelは違うのでそれ以外です。)

これらのデータベースにどんな役割があるのか確認していきましょう。

  • mysql

    ユーザ情報などMySQLが動作するための基本的な情報が管理されてます

  • infomation_schema

    MySQLの構成の情報を管理している検索用のデータベースです

  • performance_schema

    パフォーマンスをモニタリングするためのデータベースです

  • sys

    パフォーマンススキーマの情報を見るための機能が入っています

mysqlinfomation_schemaMySQLの動作には欠かせないデータベースですので間違っても削除などはしないように注意しましょう。

このデータベースにはレコードなども保存するべきではないので基本は触ってはいけないデータベースとして赤子を取り上げるように優しく扱ってあげてください。

さいごに

最後まで読んでいただきありがとうございます!

今回は基本的なMySQLでのmysqlクライアントへの接続とデータベースの作成をみてきました。

データベース系の記事は今後も更新していきますので、この記事をきっかけに今後の開発で高度なデータベースの操作を覚えていってもらえたら何よりです!

スポンサーリンク
あっきー

元キャバクラ店長から未経験でエンジニアに転職した異端児。

自分の経験を元に、エンジニア転職や未経験からでも挫折しないプログラミングの勉強方法の発信をしてます。

あっきーをフォローする
MySQL
\良い記事だったらシェアしてね!/
スポンサーリンク
駆け出しエンジニアのつぶやき