ローカル側での事象です。MAMPです。
#mysqlサーバー3306
ターミナル実行で以下を実行
$ mysql -uroot -proot mysql>
sequel proの標準で
127.0.0.1
root
root
3306
で実行。
ホスト 127.0.0.1 に接続できなかったか、リクエストがタイムアウトしました。 アドレスが正しく必要な権限のあることを確認するか、接続タイムアウトを増やして試してください(現在 10 秒)。 MySQL の応答: Can't connect to MySQL server on '127.0.0.1' (61)
しかし、ソケット経由だと接続できます。
#mysqlサーバー8889
portを8889に変えて実行してみる
ターミナル実行で以下を実行
$ mysql -uroot -proot mysql>
sequel proの標準で
127.0.0.1
root
root
8889
で実行。
接続が成功しました
portを8889に変更すれば問題接続できますが、デフォルトの3306を使いたいです。
#調査
$ sudo lsof -i:3306 $ sudo lsof -i:8889 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 34681 XXXXXXX 29u IPv6 0x5b3f8c7ad143662f 0t0 TCP *:ddi-tcp-2 (LISTEN)
あまり詳しくないのでこれぐらいしか分からないですが、port3306変更時と8889変更時の結果は同じでした。
どうすれば3306使えるようになるんだろう。。。
似たような質問があるみたいで
https://teratail.com/questions/112354
laravel使ってるのですが、php artisan migrate
でこけるんですね。
$ php artisan migrate Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations) at /Applications/MAMP/htdocs/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) { > 664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668| Exception trace: 1 PDOException::("SQLSTATE[HY000] [2002] Connection refused") /Applications/MAMP/htdocs/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel", "root", "root", []) /Applications/MAMP/htdocs/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68 Please use the argument -v to see more details.
3306でソケット経由だとクライアントソフトは繋がるけど、laravelで別エラーでこけます。
addressesゲットできんからソケット使うなって感じっぽいですね。
$ php artisan migrate Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations) at /Applications/MAMP/htdocs/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) { > 664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668| Exception trace: 1 PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known") /Applications/MAMP/htdocs/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68 2 PDO::__construct("mysql:host=mysql;port=3306;dbname=laravel", "root", "root", []) /Applications/MAMP/htdocs/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68 Please use the argument -v to see more details.
8889使えばクライアントソフトも繋がるし、laravelでもこけない。
$ php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table Migrating: 2018_08_31_002515_create_bookmarks_table Migrated: 2018_08_31_002515_create_bookmarks_table
けど普通に3306使いたいんですが、何が考えられるでしょうか。
別プロジェクトでdocker使ってるけど、コンテナ全て閉じてるし。
以下の意味って3306は使われていないからportの競合はないって認識してるんですけどまずそこはあってますかね。
$ sudo lsof -i:3306 $ sudo lsof -i:8889 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 34681 XXXXXXX 29u IPv6 0x5b3f8c7ad143662f 0t0 TCP *:ddi-tcp-2 (LISTEN)
競合してないのになんでこけるんだってところです。。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。