質問編集履歴

3 誤字修正

hiro..

hiro.. score 32

2021/05/05 17:12  投稿

macプリインストールのapacheでlaravelをブラウザ表示するとSQLSTATE[HY000] [1045] Access denied for user ''@'localhost'
お世話になっております。
macOS catalina :バージョン10.15.7
MacにプリインストールされているApache(2.4.41)
brewでインストールしたphp7.2
brewでインストールしたmysql5.7
にてLaravelのプロジェクトをブラウザで確認したいです。
昨日初めてプリインストールされているapacheに触り、設定につまずきこちらで質問させていただきました。
https://teratail.com/questions/336560
無事ブラウザでlaravelプロジェクトが読み込めているようなのですが、表題のようにmysqlのエラーが出てしまい、解決できずにおります。
エラーの全文は以下のとおりです
```ここに言語を入力
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) (SQL: select `template_id` from `template` where `date_display` <> 0000-00-00 00:00:00 and `date_display` <= 2021-05-05 11:49:28 order by `date_display` desc limit 1)
```
laravelの.envではこのように設定しています
```ここに言語を入力
DB_CONNECTION=mysql
DB_DATABASE=DBの名前
DB_HOST=127.0.0.1
DB_USERNAME=root
DB_PASSWORD=
```
ターミナルからはDBにログインして操作ができ、php artisanコマンドも通ります。
ブラウザ表示だけがダメなのでapacheの設定かと思い、
[CakePHP ver 2.x の環境構築を行った際のメモ](https://qiita.com/TakagiToru/items/747c731a28d5d4a440f8#mysql%E3%81%A8php%E3%82%92%E3%81%A4%E3%81%AA%E3%81%92%E3%82%8B)
こちらのmysqlとphpをつなげる項を参考にphp.iniを作成し、
```ここに言語を入力
pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
```
を追加しました。
その際、mysql.default_socket = が私の環境では無かったため、参考サイトに合わせて追加いたしました。
そのあと、PDOを利用するためにコメントアウトをはずすはずなのですが、
php.iniに
```ここに言語を入力
;extension=php_mysql.dll
;extension=php_pdo_mysql.dll
```
はどちらもなく、php_mysql.dllの単語で検索しても出てこず、、どこを変更すればいいのかがわからない状態です。
現状Apacheを再起動しても、ブラウザでは同じエラーが出たままになっております。
Laravel側のログ
```ここに言語を入力
[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) at /Users/hiro/Works/test/ec/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:31)
```
Apache側のアクセスログ
```ここに言語を入力
1609942904&theme=auto HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:11 +0900] "GET / HTTP/1.1" 500 713756
127.0.0.1 - - [05/May/2021:12:11:12 +0900] "GET /_debugbar/assets/stylesheets?v=1609942904&theme=auto HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:12 +0900] "GET /_debugbar/assets/javascript?v=1609942904 HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:15 +0900] "GET /info.php HTTP/1.1" 200 109222
```
どなたか、お知恵をお借りできますでしょうか。
何卒よろしくお願いいたします。
======================
追記1
コメントいただいたファイルのパス・mysqlのユーザー権限を調べてみました。
mysql.sockへののパス
```
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.34, for osx10.15 (x86_64) using EditLine wrapper
Current user:       root@localhost
Server version:       5.7.34 Homebrew
Connection:       Localhost via UNIX socket
UNIX socket:       /tmp/mysql.sock
```
ユーザー一覧
```ここに言語を入力
mysql> SELECT user, host FROM user;
+---------------+-----------+
| user         | host     |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root         | localhost |
+---------------+-----------+
```
rootユーザーの権限
```ここに言語を入力
mysql> SHOW GRANTS for 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                          |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION       |
+---------------------------------------------------------------------+
```
上記を確認しまして、
・/tmp/mysql.sockのパスは合っている
・rootユーザーの権限は問題ない
のかなと思いました。
ただ改めてエラー文を読むと、Access denied for user ''@'localhost' となっており、
@の前のrootが抜けていることに気がつきました。正しく接続されていれば、'root'@'localhost'となるはずですよね。。?
そもそもrootで接続していないのでしょうか。。
======================
追記2
コメントいただき更に検証いたしました。
```
laravel .env を修正
#DB_HOST=127.0.0.1
DB_HOST=localhost
```
```ここに言語を入力
php artisan config:clear
php artisan cache:clear
```
ここまででエラーは変わらず
mysqlで新しくユーザーを追加して、 laravelの.envを変更してみました。
```ここに言語を入力
mysql> SELECT user, host FROM user;
+---------------+-----------+
| user         | host     |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root         | localhost |
| shoku        | localhost |
+---------------+-----------+
↑↑ 新しい shoku というユーザーを追加
```
権限を付与
```ここに言語を入力
mysql> SHOW GRANTS FOR shoku@localhost \G
*************************** 1. row ***************************
Grants for shoku@localhost: GRANT ALL PRIVILEGES ON *.* TO 'shoku'@'localhost'
```
新しいユーザー情報を .envに反映
```ここに言語を入力
DB_CONNECTION=mysql
DB_DATABASE=umai_mon_utf8
DB_DATABASE=test_DB
DB_HOST=localhost
DB_USERNAME=shoku
DB_PASSWORD=secret
```
再びキャッシュ削除
```ここに言語を入力
php artisan config:clear
php artisan cache:clear
```
念のため sudo apachectl restart でapache再起動
ここでブラウザ確認をしても、やはり
```ここに言語を入力
Access denied for user ''@'localhost' (using password: NO)
```
となって、laravelの.envが反映されていないようです。。
my.cnfは昨日 mysql5.7をインストールした際に変更しており、以下のようになっております。
```ここに言語を入力
hiro@Hiro apache2 % cat /usr/local/etc/my.cnf
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
default-time-zone = 'Asia/Tokyo'
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
```
  • MySQL

    12086 questions

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

  • Apache

    3189 questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • MacOS(OSX)

    4482 questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • Laravel

    5354 questions

    LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

2 いただいたコメントを元に情報追記いたしました

hiro..

hiro.. score 32

2021/05/05 17:00  投稿

macプリインストールのapacheでlaravelをブラウザ表示するとSQLSTATE[HY000] [1045] Access denied for user ''@'localhost'
お世話になっております。
macOS catalina :バージョン10.15.7
MacにプリインストールされているApache(2.4.41)
brewでインストールしたphp7.2
brewでインストールしたmysql5.7
にてLaravelのプロジェクトをブラウザで確認したいです。
昨日初めてプリインストールされているapacheに触り、設定につまずきこちらで質問させていただきました。
https://teratail.com/questions/336560
無事ブラウザでlaravelプロジェクトが読み込めているようなのですが、表題のようにmysqlのエラーが出てしまい、解決できずにおります。
エラーの全文は以下のとおりです
```ここに言語を入力
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) (SQL: select `template_id` from `template` where `date_display` <> 0000-00-00 00:00:00 and `date_display` <= 2021-05-05 11:49:28 order by `date_display` desc limit 1)
```
laravelの.envではこのように設定しています
```ここに言語を入力
DB_CONNECTION=mysql
DB_DATABASE=DBの名前
DB_HOST=127.0.0.1
DB_USERNAME=root
DB_PASSWORD=
```
ターミナルからはDBにログインして操作ができ、php artisanコマンドも通ります。
ブラウザ表示だけがダメなのでapacheの設定かと思い、
[CakePHP ver 2.x の環境構築を行った際のメモ](https://qiita.com/TakagiToru/items/747c731a28d5d4a440f8#mysql%E3%81%A8php%E3%82%92%E3%81%A4%E3%81%AA%E3%81%92%E3%82%8B)
こちらのmysqlとphpをつなげる項を参考にphp.iniを作成し、
```ここに言語を入力
pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
```
を追加しました。
その際、mysql.default_socket = が私の環境では無かったため、参考サイトに合わせて追加いたしました。
そのあと、PDOを利用するためにコメントアウトをはずすはずなのですが、
php.iniに
```ここに言語を入力
;extension=php_mysql.dll
;extension=php_pdo_mysql.dll
```
はどちらもなく、php_mysql.dllの単語で検索しても出てこず、、どこを変更すればいいのかがわからない状態です。
現状Apacheを再起動しても、ブラウザでは同じエラーが出たままになっております。
Laravel側のログ
```ここに言語を入力
[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) at /Users/hiro/Works/test/ec/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:31)
```
Apache側のアクセスログ
```ここに言語を入力
1609942904&theme=auto HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:11 +0900] "GET / HTTP/1.1" 500 713756
127.0.0.1 - - [05/May/2021:12:11:12 +0900] "GET /_debugbar/assets/stylesheets?v=1609942904&theme=auto HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:12 +0900] "GET /_debugbar/assets/javascript?v=1609942904 HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:15 +0900] "GET /info.php HTTP/1.1" 200 109222
```
どなたか、お知恵をお借りできますでしょうか。
何卒よろしくお願いいたします。
======================
追記
追記
コメントいただいたファイルのパス・mysqlのユーザー権限を調べてみました。
mysql.sockへののパス
```
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.34, for osx10.15 (x86_64) using EditLine wrapper
Current user:       root@localhost
Server version:       5.7.34 Homebrew
Connection:       Localhost via UNIX socket
UNIX socket:       /tmp/mysql.sock
```
ユーザー一覧
```ここに言語を入力
mysql> SELECT user, host FROM user;
+---------------+-----------+
| user         | host     |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root         | localhost |
+---------------+-----------+
```
rootユーザーの権限
```ここに言語を入力
mysql> SHOW GRANTS for 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                          |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION       |
+---------------------------------------------------------------------+
```
上記を確認しまして、
・/tmp/mysql.sockのパスは合っている
・rootユーザーの権限は問題ない
のかなと思いました。
ただ改めてエラー文を読むと、Access denied for user ''@'localhost' となっており、
@の前のrootが抜けていることに気がつきました。正しく接続されていれば、'root'@'localhost'となるはずですよね。。?
そもそもrootで接続していないのでしょうか。。
そもそもrootで接続していないのでしょうか。。
======================
追記2
コメントいただき更に検証いたしました。
```
laravel .env を修正
#DB_HOST=127.0.0.1
DB_HOST=localhost
```
```ここに言語を入力
php artisan config:clear
php artisan cache:clear
```
ここまででエラーは変わらず
mysqlで新しくユーザーを追加して、 laravelの.envを変更してみました。
```ここに言語を入力
mysql> SELECT user, host FROM user;
+---------------+-----------+
| user         | host     |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root         | localhost |
| shoku        | localhost |
+---------------+-----------+
↑↑ 新しい shoku というユーザーを追加
```
権限を付与
```ここに言語を入力
mysql> SHOW GRANTS FOR shoku@localhost \G
*************************** 1. row ***************************
Grants for shoku@localhost: GRANT ALL PRIVILEGES ON *.* TO 'shoku'@'localhost'
```
新しいユーザー情報を .envに反映
```ここに言語を入力
DB_CONNECTION=mysql
DB_DATABASE=umai_mon_utf8
DB_HOST=localhost
DB_USERNAME=shoku
DB_PASSWORD=secret
```
再びキャッシュ削除
```ここに言語を入力
php artisan config:clear
php artisan cache:clear
```
念のため sudo apachectl restart でapache再起動
ここでブラウザ確認をしても、やはり
```ここに言語を入力
Access denied for user ''@'localhost' (using password: NO)
```
となって、laravelの.envが反映されていないようです。。
my.cnfは昨日 mysql5.7をインストールした際に変更しており、以下のようになっております。
```ここに言語を入力
hiro@Hiro apache2 % cat /usr/local/etc/my.cnf
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
default-time-zone = 'Asia/Tokyo'
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
```
  • MySQL

    12086 questions

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

  • Apache

    3189 questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • MacOS(OSX)

    4482 questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • Laravel

    5354 questions

    LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

1 コメントいただいた情報を追記しました

hiro..

hiro.. score 32

2021/05/05 13:33  投稿

macプリインストールのapacheでlaravelをブラウザ表示するとSQLSTATE[HY000] [1045] Access denied for user ''@'localhost'
お世話になっております。
macOS catalina :バージョン10.15.7
MacにプリインストールされているApache(2.4.41)
brewでインストールしたphp7.2
brewでインストールしたmysql5.7
にてLaravelのプロジェクトをブラウザで確認したいです。
昨日初めてプリインストールされているapacheに触り、設定につまずきこちらで質問させていただきました。
https://teratail.com/questions/336560
無事ブラウザでlaravelプロジェクトが読み込めているようなのですが、表題のようにmysqlのエラーが出てしまい、解決できずにおります。
エラーの全文は以下のとおりです
```ここに言語を入力
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) (SQL: select `template_id` from `template` where `date_display` <> 0000-00-00 00:00:00 and `date_display` <= 2021-05-05 11:49:28 order by `date_display` desc limit 1)
```
laravelの.envではこのように設定しています
```ここに言語を入力
DB_CONNECTION=mysql
DB_DATABASE=DBの名前
DB_HOST=127.0.0.1
DB_USERNAME=root
DB_PASSWORD=
```
ターミナルからはDBにログインして操作ができ、php artisanコマンドも通ります。
ブラウザ表示だけがダメなのでapacheの設定かと思い、
[CakePHP ver 2.x の環境構築を行った際のメモ](https://qiita.com/TakagiToru/items/747c731a28d5d4a440f8#mysql%E3%81%A8php%E3%82%92%E3%81%A4%E3%81%AA%E3%81%92%E3%82%8B)
こちらのmysqlとphpをつなげる項を参考にphp.iniを作成し、
```ここに言語を入力
pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
```
を追加しました。
その際、mysql.default_socket = が私の環境では無かったため、参考サイトに合わせて追加いたしました。
そのあと、PDOを利用するためにコメントアウトをはずすはずなのですが、
php.iniに
```ここに言語を入力
;extension=php_mysql.dll
;extension=php_pdo_mysql.dll
```
はどちらもなく、php_mysql.dllの単語で検索しても出てこず、、どこを変更すればいいのかがわからない状態です。
現状Apacheを再起動しても、ブラウザでは同じエラーが出たままになっております。
Laravel側のログ
```ここに言語を入力
[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDOException(code: 1045): SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) at /Users/hiro/Works/test/ec/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:31)
```
Apache側のアクセスログ
```ここに言語を入力
1609942904&theme=auto HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:11 +0900] "GET / HTTP/1.1" 500 713756
127.0.0.1 - - [05/May/2021:12:11:12 +0900] "GET /_debugbar/assets/stylesheets?v=1609942904&theme=auto HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:12 +0900] "GET /_debugbar/assets/javascript?v=1609942904 HTTP/1.1" 404 196
127.0.0.1 - - [05/May/2021:12:11:15 +0900] "GET /info.php HTTP/1.1" 200 109222
```
どなたか、お知恵をお借りできますでしょうか。
何卒よろしくお願いいたします。
何卒よろしくお願いいたします。
======================
追記
コメントいただいたファイルのパス・mysqlのユーザー権限を調べてみました。
mysql.sockへののパス
```
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.34, for osx10.15 (x86_64) using EditLine wrapper
Current user:       root@localhost
Server version:       5.7.34 Homebrew
Connection:       Localhost via UNIX socket
UNIX socket:       /tmp/mysql.sock
```
ユーザー一覧
```ここに言語を入力
mysql> SELECT user, host FROM user;
+---------------+-----------+
| user         | host     |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys    | localhost |
| root         | localhost |
+---------------+-----------+
```
rootユーザーの権限
```ここに言語を入力
mysql> SHOW GRANTS for 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                          |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION       |
+---------------------------------------------------------------------+
```
上記を確認しまして、
・/tmp/mysql.sockのパスは合っている
・rootユーザーの権限は問題ない
のかなと思いました。
ただ改めてエラー文を読むと、Access denied for user ''@'localhost' となっており、
@の前のrootが抜けていることに気がつきました。正しく接続されていれば、'root'@'localhost'となるはずですよね。。?
そもそもrootで接続していないのでしょうか。。
  • MySQL

    12086 questions

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

  • Apache

    3189 questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • MacOS(OSX)

    4482 questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • Laravel

    5354 questions

    LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る