Symfony簡単なチュートリアル②データベーススキーマとエンティティ

【メモ】

mysql Ver 8.1.0 for macos12.6 on arm64 (Homebrew)をすでにインストール済みです。
root以外のユーザーを設定しておきます。

MySQLで新しいユーザーとパスワードを設定するには、以下の手順を実行します。

  1. まず、MySQLのコマンドラインインターフェースにログインします。以下のコマンドを使用します。mysql -u root -p
  2. 次に、新しいユーザーを作成します。以下のコマンドを使用します(newuserpasswordはそれぞれ新しいユーザー名とパスワードに置き換えてください)。CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
  3. この新しいユーザーに特定のデータベースへの全ての権限を付与します。以下のコマンドを使用します(databaseは対象のデータベース名に置き換えてください)。GRANT ALL PRIVILEGES ON database.* TO 'newuser'@'localhost';
  4. 最後に、権限設定をリロードします。以下のコマンドを使用します。FLUSH PRIVILEGES;

これで、新しいユーザーが作成され、指定したデータベースに対する全ての権限が付与されました。新しいユーザーでログインして操作を行うことができます。ただし、セキュリティ上の理由から、必要な権限だけを付与すること、全ての権限を付与するとデータベースが不正アクセスに対して脆弱になる可能性があることを注意します。

ではブログ用のデータベーススキマーを作成していきます。

Symfony フレームワークは、アプリケーションとデータベース間の対話としてDoctrine ORMを使用しています。

以下のコマンドをたたいてエンティティから作成していきます。

php bin/console make:entity

これにより、エンティティクラスに名前をつけ、プロパティを追加していきます。
この過程で、src/Entity, src/Repositoryの配下にそれぞれファイルが生成されます。

次に、実際のデータベーススキーマを作成します。

mysql -u {USER} -p{PASSWORD}
create database blog;
exit;

私が実際にとった手順は、rootユーザでデータベースを作成→新しく権限を持ったユーザを作成→そのユーザに作成したデータベースに対しての権限貸与、でした。

一応、新しく作ったユーザでMySQLにログインし、コマンドshow databases;をたたいて、rootで作ったデータベースが表示されるか確認しました。

ここまできたら、次は.envファイルを開いて、データベースの環境設定をします。

DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=8&charset=utf8mb4"

保存したら、 ターミナルで以下のコマンドをたたいてスキーマを設定します。

php bin/console doctrine:schema:create
// 結果
[OK] Database schema created successfully!       

この記事を書いた人