

### やりたいこと

以下スクリプトを実行し、 `http://localhost:8889/PhpApiLesson/apiDb.php`
にアクセスすることでDBから情報をブラウザに表示したい。

スクリプト

[code]

    <?php
    header('Content-Type: application/json; charset=UTF-8');
    
    $dsn = "mysql:host=localhost;dbname=ApiLessonDatabase;charset=utf8";
    $user = 'root';
    $password = '*********';
    
    $dbh = new PDO($dsn, $user, $password);
    $dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $sql = 'select * from ApiLesson;';
    
    $stmt = $dbh -> prepare($sql);
    $stmt -> execute();
    
    while (true) {
        $rec = $stmt -> fetch(PDO::FETCH_ASSOC);
    
        if ($rec === false) {
            break;
        }
        $arr[] = $rec;
    }
    
    echo json_encode($arr, JSON_PRETTY_PRINT);
    ?>
    
[/code]

下記コマンドをターミナルで実行するとDBの内容を表示

[code]

    (base) *******@MacBook PhpApiLesson % mysql -u root -p
    
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 18
    Server version: 8.1.0 Homebrew
    
    Copyright (c) 2000, 2023, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> use ApiLessonDatabase
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> select * from ApiLesson;
    
[/code]

### 困っていること

`http://localhost:8889/PhpApiLesson/apiDb.php` にアクセスすると下記エラーが表示される。

[code]

    <br />
    <b>Fatal error</b>:  Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) in /Applications/MAMP/htdocs/PhpApiLesson/apiDb.php:8
    Stack trace:
    #0 /Applications/MAMP/htdocs/PhpApiLesson/apiDb.php(8): PDO-&gt;__construct('mysql:host=loca...', 'root', Object(SensitiveParameterValue))
    #1 {main}
      thrown in <b>/Applications/MAMP/htdocs/PhpApiLesson/apiDb.php</b> on line <b>8</b><br />
    
[/code]

### 試してみたこと

phpmyadminに入ってみたところ、DBの内容が表示されなかった。

[code]

    mysql> select user,host from mysql.user;
    
[/code]

とするとユーザー一覧は下記のように表示される。

[code]

    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    | your_user        | localhost |
    +------------------+-----------+
    6 rows in set (0.00 sec)
    
[/code]


CC BY-SA 4.0
2023-10-23T07:08:28.613
96552
2023-10-27T08:13:23.500
2023-10-27T08:13:23.500
3060
58556
question
php mysql
phpでDBからデータ取得するスクリプトを作成したものの、実行するとエラーとなる