お世話になっております。
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の設定かと思い、
こちらの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=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
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。