質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

577閲覧

MySQLのデータベースに接続ができない

akiha

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

1クリップ

投稿2020/09/26 05:43

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
ドットインストールでログインのシステムを動画を見ながら学習をしています。
ドットインストール上ではすでに質問の受付を終了していたのでこちらで質問をさせていただきたく思います。
発生した問題点はphpからmysqlのデータベースへ接続をしようとした際に以下のようなエラーメッセージが発生しました。
※php、mysqlどちらもdockerのコンテナに存在します。

発生している問題・エラーメッセージ

SQLSTATE[HY000] [2002] No such file or directory

該当のソースコード

signup.php

php

1<?php 2 3require_once(__DIR__ . '/../config/config.php'); 4 5$app = new MyApp\Controller\Signup(); 6 7$app -> run(); 8 9?> 10 11<!DOCTYPE html> 12<html> 13 <head> 14 <meta charset="utf-8"> 15 <title>Sign Up</title> 16 <link rel="stylesheet" href="styles.css"> 17 </head> 18 <body> 19 <div id="container"> 20 <form action="" method="post" id="signup"> 21 <p> 22 <input type="text" name="email" placeholder="email" value="<?= isset($app->getvalues()->email) ? h($app->getValues()->email) : '' ?>"> 23 </p> 24 <p class="err"><?= h($app->getError('email')); ?></p> 25 <p> 26 <input type="password" name="password" placeholder="password"> 27 </p> 28 <p class="err"><?= h($app->getError('password')); ?></p> 29 <div class="btn" onclick="document.getElementById('signup').submit();">Sign Up</div> 30 <p class="fs12"><a href="login.php">Log In<a></p> 31 <input type="hidden" name="token" value="<?= $_SESSION['token'] ?>"> 32 </form> 33 </div> 34 </body> 35</html> 36

Model.php

php

1<?php 2 3namespace MyApp; 4 5class Model{ 6 protected $db; 7 8 public function __construct(){ 9 try{ 10 $this ->db = new \PDO(DSN,DB_USERNAME,DB_PASSWORD); 11 }catch(\PDOException $e){ 12 echo $e->getMessage(); 13 exit; 14 } 15 } 16} 17

config.php

php

1<?php 2 3ini_set('display_errors',1); 4 5define('DSN','mysql:host=localhost;dbname=php_login'); 6define('DB_USERNAME','dbuser'); 7define('DB_PASSWORD','aaa'); 8 9define('SITE_URL','http://' . $_SERVER['HTTP_HOST']); 10 11 12 13require_once(__DIR__ . '/../lib/functions.php'); 14require_once(__DIR__ . '/autoload.php'); 15 16session_start(); 17 18 19

init.sql

sql

1create database php_login; 2 3grant all on php_login.* dbuser@local identified by 'aaa'; 4 5use php_login 6 7create table users( 8 id int not null auto_increment primary key, 9 email varchar(255) unique, 10 password varchar(255), 11 create datetime, 12 modified datetime 13); 14 15desc users; 16

docker-compose.yml

yml

1version: '3' 2services: 3 nginx: 4 image: nginx:latest 5 ports: 6 - 8080:80 7 volumes: 8 - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf 9 - ./www/html:/var/www/html 10 - ./www:/var/www 11 depends_on: 12 - php 13 14 php: 15 build: ./php 16 volumes: 17 - ./www/html:/var/www/html 18 - ./www:/var/www 19 depends_on: 20 - db 21 22 db: 23 image: mysql:5.7 24 ports: 25 - 13306:3306 26 volumes: 27 - ./mysql/data:/var/lib/mysql 28 environment: 29 MYSQL_ROOT_PASSWORD: secret 30 31 phpmyadmin: 32 image: phpmyadmin/phpmyadmin:latest 33 ports: 34 - 8888:80 35 depends_on: 36 - db
mba:php_login matsumotokazuma$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6560f6e61e00 nginx:latest "/docker-entrypoint.…" 2 hours ago Exited (0) 36 seconds ago php_login_pra_nginx_1 e61787c7e4dd php_login_pra_php "docker-php-entrypoi…" 2 hours ago Exited (0) 36 seconds ago php_login_pra_php_1 9c35994e1298 phpmyadmin/phpmyadmin:latest "/docker-entrypoint.…" 27 hours ago Exited (0) 35 seconds ago php_login_pra_phpmyadmin_1 f82cc7f849fd mysql:5.7 "docker-entrypoint.s…" 27 hours ago Exited (0) 33 seconds ago php_login_pra_db_1

実行方法

localhost:8080/signup.phpにて実行

・試したこと
config.phpのhost=localhost を host=dbに変更をした

補足情報(FW/ツールのバージョンなど)

学習環境:
php:7.2-fpm
mysql:5.7
nginx:latest

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

もともとの参考サイトの記述がわからないのため、断片的なアドバイスしかできないのですが、

SQLSTATE[HY000] [2002] No such file or directory

MySQL に接続したいときにこのメッセージが出たということは、mysql.sock が見えていません。原因としては MySQL が起動していないか、あるいは、何かしら設定ファイルが適切ではない可能性があります。

書かれている「docker ps -a」のログからは、mysql用のコンテナが停止していることがわかります。

82cc7f849fd mysql:5.7 "docker-entrypoint.s…" 27 hours ago Exited (0) 33 seconds ago php_login_pra_db_1

少なくとも、MySQL のコンテナが起動していませんの。そのため、まず MySQL の起動方法を確認の上(たいていの例であれば、docker-compose up でしょうか)、そのうえでエラーが出ているかどうかを確認されることをおすすめいたします。

投稿2021/04/10 07:20

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問