LoginSignup
3
1

More than 3 years have passed since last update.

MySQL インストールから接続(Symfony)までの流れ

Last updated at Posted at 2020-10-26

環境

  • mysql Ver 8.0.22 for osx10.15 on x86_64 (Homebrew)
  • プロジェクトディレクトリのターミナルと、MySQLにログイン状態のターミナル(MySQLインストール後)2つを並べて多くと効率的
  • SQLにはrootユーザーで接続の場合

プロジェクトの必要に応じて接続ユーザーは考慮してください。

MySQLインストール

brew install mysql

MySQL起動

mysql.server start

MySQLログイン

mysql -u root
ログインユーザーの root は初期導入後はパスワードが設定されていないため、パスワード無しでログインできる。

MySQL導入時に存在するDBを確認

SHOW DATABASES;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

導入時に既にいくつかDBの確認があるがけさないこと。

MySQL rootユーザーのパスワード設定

現在のログインユーザーのrootのパスワードを確認

mysql DBへ切り替える

use mysql;でユーザー 情報が保存しているDBに切り替える

userテーブルを表示

フィールドがたくさんあるので以下のフィールドを指定
※以前のバージョンはPasswordフィールドが合ったようだが8.0にはないので注意
SELECT Host, User FROM mysql.user;

+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+

パスワード設定

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';でユーザー 情報が保存しているDBに切り替える
※root-passwordに設定したいパスワードを記入

MySQL ログアウトしてログインしてみる(確認)

ログアウト
exit
ログイン
mysql -u root -p
先程パスワードを設定したので必ず「-p」をつける。パスワード入力できる状態になるので入力してログイン。

新規にDBを作成する (必要な場合)

Doctrine経由で作成するのだが、MySQL8.0で認証方法の設定を変更しておく必要があるので先に行う。

rootユーザーの認証方法を確認

  • SQLにログイン mysql -u root -p
  • mysql DBに切り替えるuse mysql
  • userテーブルのpluginフィールドを確認SELECT user, host, plugin FROM user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
  • caching_sha2_passwordをmysql_native_passwordに変更
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root-password';

  • 設定が変わっているか確認
    SELECT user, host, plugin FROM user;

+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

参考記事: https://blog.janjan.net/2018/11/01/mysql8-request-authentication-method-unknown-to-the-client/

Symfonyの設定ファイルを変更

.envファイルを変更。まだこのプロジェクト用のDBはないが次のステップで作成するので、(db_name)にはこれから作るDB名を入力しておく。

編集前

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7

編集後

DATABASE_URL=mysql://root:(最初の方で設定したrootのパスワード)@127.0.0.1:3306/(db_name)

Doctrine経由でDB作成

php bin/console doctrine:database:create;する。以下表示されればOK。確認したい人はSQL側でshow databases;で確認。

Created database `(db_name)` for connection named default

注意:以下エラーが出た場合は、SQL側で接続ユーザーの認証方法をmysql_native_passwordにしないとエラーが出るので2つ前の設定をしっかりすること。

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

Doctrine経由でテーブル作成

ざっくりメモ
- php bin/console make:entityEntityファイルを作成(プロパティを決めます)
- php bin/console make:migrationマイグレーションファイル作成(DBに反映する設定情報のファイルを作ります)
- php bin/console doctrine:migrations:migrateマイグレーション実行(DBに変更を反映します)
- テーブルが新規作成もしくは情報が更新される
- SQLにログインしているターミナルでshow tables;でちゃんとテーブルが作られているか確認

+------------+---------------+------+-----+---------+----------------+
| Field      | Type          | Null | Key | Default | Extra          |
+------------+---------------+------+-----+---------+----------------+
| id         | int           | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)  | NO   |     | NULL    |                |
| zip_code   | int           | NO   |     | NULL    |                |
| address    | varchar(255)  | NO   |     | NULL    |                |
| open_time  | int           | NO   |     | NULL    |                |
| close_time | int           | NO   |     | NULL    |                |
| map        | varchar(1000) | NO   |     | NULL    |                |
+------------+---------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
  • SQLにログインしているターミナルでDESCRIBE (テーブル名);でちゃんとフォールドが設定されているか確認
+------------+---------------+------+-----+---------+----------------+
| Field      | Type          | Null | Key | Default | Extra          |
+------------+---------------+------+-----+---------+----------------+
| id         | int           | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255)  | NO   |     | NULL    |                |
| zip_code   | int           | NO   |     | NULL    |                |
| address    | varchar(255)  | NO   |     | NULL    |                |
| open_time  | int           | NO   |     | NULL    |                |
| close_time | int           | NO   |     | NULL    |                |
| map        | varchar(1000) | NO   |     | NULL    |                |
+------------+---------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1