Laravel でDB接続エラー
自分では開発環境を作ったことないレベルのプログラマーです。
Laravelでローカル開発環境を始めて作っているところで データベース接続エラーが出てしまい、修正方法が分からず質問させてください。
開発環境
PHP : 8.1.17
Docker : 24.0.2
Laravel : 10.15.0
MYSQL : 8.0.33
PC : iMac
OS : Ventura 13.4.1
Visuai Studio Code : 1.81.0
DockerでLaravelをインストールし、phpMyAdminもローカル接続できる状態まで来ております。
Modelやmigrationファイルを作って、いざマイグレーションしようとしたところ
php artisan migrate
以下のエラーが発生しました。
SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')
at vendor/laravel/frameworkIlluminate/Database/Connection.php:795
791▕ // If an exception occurs when attempting to run a query, we'll format the error
792▕ // message to include the bindings with SQL, which will make this exception a
793▕ // lot more helpful to the developer instead of just the database's errors.
794▕ catch (Exception $e) {
➜ 795▕ throw new QueryException(
796▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
797▕ );
798▕ }
799▕ }
+38 vendor frames
39 artisan:35
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
データベース接続エラーだと思うのですが、どこを修正すればいいか分からず困っています。
自分なりに以下のファイルのどこかじゃないかと思う部分を記載します。
検討違いだったらすみません。
なにかヒントあれば教えて頂きたいです。よろしくお願い致します。
docker-compose.yml
mysql:
image: mysql:8.0.33
command: --max_allowed_packet=32505856
container_name: "mysql"
volumes:
- ./docker/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=mysql
ports:
- 3306:3306
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- mysql
environment:
- PMA_ARBITRARY=1
- PMA_HOSTS=mysql
- PMA_USER=root
- PMA_PASSWORD=root
ports:
- "3000:80"
volumes:
- ./docker/phpmyadmin/sessions:/sessions
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
database.php
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'root'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],