<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ayesha</title>
    <description>The latest articles on DEV Community by Ayesha (@ayesha_921).</description>
    <link>https://dev.to/ayesha_921</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4180638%2F20681e69-52a2-45f2-8759-55b49e311ed8.jpg</url>
      <title>DEV Community: Ayesha</title>
      <link>https://dev.to/ayesha_921</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ayesha_921"/>
    <language>en</language>
    <item>
      <title>How to Fix SQLSTATE[HY000] [2002] Connection Refused in Laravel</title>
      <dc:creator>Ayesha</dc:creator>
      <pubDate>Wed, 14 Oct 2026 05:51:14 +0000</pubDate>
      <link>https://dev.to/ayesha_921/how-to-fix-sqlstatehy000-2002-connection-refused-in-laravel-2epb</link>
      <guid>https://dev.to/ayesha_921/how-to-fix-sqlstatehy000-2002-connection-refused-in-laravel-2epb</guid>
      <description>&lt;h1&gt;
  
  
  How to Fix SQLSTATE[HY000] [2002] Connection Refused in Laravel
&lt;/h1&gt;

&lt;p&gt;You run &lt;code&gt;php artisan migrate&lt;/code&gt;, hit refresh in the browser, or deploy to staging — and instead of your app you get the dreaded wall of red:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from information_schema.tables ...)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SQLSTATE[HY000] [2002] connection refused in Laravel means one thing and one thing only: PHP tried to open a network connection to your database server, and nothing answered at that host and port. Your SQL is fine. Your migrations are fine. The database simply is not reachable from where Laravel is running. This guide walks through every real-world cause I have seen in production and local development, in the order you should check them, with the exact fix for each.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "SQLSTATE[HY000] [2002] Connection Refused" Actually Means
&lt;/h2&gt;

&lt;p&gt;Break the error down piece by piece: &lt;code&gt;SQLSTATE[HY000]&lt;/code&gt; is a generic PDO driver error code — "general error". &lt;code&gt;[2002]&lt;/code&gt; is the MySQL client error code for "can't connect to server". "Connection refused" is the operating system telling you the TCP connection was actively rejected — or that nothing was listening on that address and port. The key insight: &lt;strong&gt;this error is thrown by the MySQL client library before a single byte of SQL is sent&lt;/strong&gt;. So don't waste time reviewing your queries. The problem is always in the connection path: the host, the port, the transport (socket vs TCP), the credentials handshake, or the server simply being down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 0: Reproduce It Outside Laravel
&lt;/h2&gt;

&lt;p&gt;Before touching your &lt;code&gt;.env&lt;/code&gt; file, confirm where the failure actually is. Run this from the server or machine running your app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Is anything listening on the MySQL port?&lt;/span&gt;
nc &lt;span class="nt"&gt;-zv&lt;/span&gt; 127.0.0.1 3306

&lt;span class="c"&gt;# 2. Can the MySQL client connect with the same credentials Laravel uses?&lt;/span&gt;
mysql &lt;span class="nt"&gt;-h&lt;/span&gt; 127.0.0.1 &lt;span class="nt"&gt;-P&lt;/span&gt; 3306 &lt;span class="nt"&gt;-u&lt;/span&gt; your_db_user &lt;span class="nt"&gt;-p&lt;/span&gt; your_database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;nc&lt;/code&gt; says the connection was refused, your database server is down or listening elsewhere — that is a server problem, not a Laravel problem. If &lt;code&gt;nc&lt;/code&gt; succeeds but the &lt;code&gt;mysql&lt;/code&gt; client fails with access denied, the server is up and your credentials or user host permissions are wrong. Either way, you have just narrowed the search dramatically before editing a single line of application code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 1: The Database Server Is Not Running
&lt;/h2&gt;

&lt;p&gt;The most common cause, and the most embarrassing. After a server reboot, a Docker restart, or a fresh Homestead/Vagrant provision, MySQL/MariaDB may simply not be started — or started but not enabled to start on boot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check the status&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status mysql    &lt;span class="c"&gt;# Ubuntu/Debian&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status mariadb  &lt;span class="c"&gt;# if you run MariaDB&lt;/span&gt;

&lt;span class="c"&gt;# Start it now AND enable it for the next reboot&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;enable&lt;/code&gt; flag is the part everyone misses: &lt;code&gt;start&lt;/code&gt; fixes it right now, &lt;code&gt;enable&lt;/code&gt; fixes it after the next reboot too. If you are on macOS with a tool like DBngin or MAMP, open the app and confirm the server indicator is green — those tools don't always restart servers after a system update. Then confirm Laravel sees it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan migrate:status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Fix 2: localhost vs 127.0.0.1 — The Socket Trap
&lt;/h2&gt;

&lt;p&gt;This is the number one cause of a Laravel MySQL "connection refused" error on local machines, and it confuses everyone at least once. When you set &lt;code&gt;DB_HOST=localhost&lt;/code&gt;, the MySQL client doesn't use TCP. It tries to connect through a &lt;strong&gt;Unix socket file&lt;/strong&gt; (like &lt;code&gt;/var/run/mysqld/mysqld.sock&lt;/code&gt;). When you set &lt;code&gt;DB_HOST=127.0.0.1&lt;/code&gt;, it uses TCP over the loopback interface. If the socket file path the client expects doesn't match where the server actually created it, you get connection refused — even though the server is running perfectly.&lt;/p&gt;

&lt;p&gt;The fix: in your &lt;code&gt;.env&lt;/code&gt;, use the IP address to force TCP, which removes the socket path from the equation entirely:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_db_user
DB_PASSWORD=your_password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After editing &lt;code&gt;.env&lt;/code&gt;, clear the config cache (more on that in Fix 5) and retry. If you specifically want socket connections, set &lt;code&gt;DB_SOCKET&lt;/code&gt; to the real socket path — find it with &lt;code&gt;mysqladmin variables | grep socket&lt;/code&gt; — but for 95% of apps, TCP on &lt;code&gt;127.0.0.1&lt;/code&gt; is simpler and more predictable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 3: The Port Does Not Match
&lt;/h2&gt;

&lt;p&gt;MAMP defaults to port &lt;strong&gt;8889&lt;/strong&gt;, not 3306. Docker Compose mappings can publish MySQL on any host port. Laravel Sail uses 3306 on the container but your host might map something else. If your database tool connects fine on a custom port but Laravel refuses, your &lt;code&gt;DB_PORT&lt;/code&gt; is almost certainly wrong.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DB_PORT=8889  # MAMP default — adjust to whatever your server actually uses
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find the real port: check your DBngin/MAMP/Docker settings, or ask the server directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;ss &lt;span class="nt"&gt;-tlnp&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s1"&gt;'mysql|maria'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That shows you exactly which port the server is listening on. Match &lt;code&gt;DB_PORT&lt;/code&gt; to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 4: Docker and Sail Hostnames
&lt;/h2&gt;

&lt;p&gt;Inside Docker, &lt;code&gt;127.0.0.1&lt;/code&gt; means "this container", not your laptop and not the MySQL container. This is the classic Laravel database "connection refused" scenario in Docker Compose and Laravel Sail setups. The rule is simple: from &lt;strong&gt;inside&lt;/strong&gt; a container (your app container, queue workers, &lt;code&gt;sail artisan&lt;/code&gt;) use the service name as the host, e.g. &lt;code&gt;DB_HOST=mysql&lt;/code&gt;. From your &lt;strong&gt;host&lt;/strong&gt; machine (running &lt;code&gt;php artisan&lt;/code&gt; locally, or a GUI client) use &lt;code&gt;127.0.0.1&lt;/code&gt; with the published port.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# .env for the app running INSIDE docker (Sail default)
DB_HOST=mysql
DB_PORT=3306

# .env for the app running on your HOST talking to a dockerized database
DB_HOST=127.0.0.1
DB_PORT=3306  # the published/host port from docker-compose.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also give the database container a moment to be ready. Containers start in parallel, and Laravel can boot before MySQL finishes initializing. In CI pipelines, add a health check or a wait step; locally, just retry after 10–20 seconds. If your queue workers run in a separate long-lived container, restart them after fixing &lt;code&gt;.env&lt;/code&gt; — they cache the old config in memory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 5: Your Config Is Cached (The Silent Killer)
&lt;/h2&gt;

&lt;p&gt;You fixed &lt;code&gt;.env&lt;/code&gt;, restarted everything, triple-checked the port — and the error persists. Nine times out of ten, Laravel is not reading your &lt;code&gt;.env&lt;/code&gt; at all because the configuration is cached. &lt;code&gt;php artisan config:cache&lt;/code&gt; bakes every value into &lt;code&gt;bootstrap/cache/config.php&lt;/code&gt;, and after that, &lt;code&gt;.env&lt;/code&gt; edits are silently ignored.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan config:clear
php artisan cache:clear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then verify what Laravel actually sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan tinker &lt;span class="nt"&gt;--execute&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"print_r(config('database.connections.mysql'));"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the output doesn't match your current &lt;code&gt;.env&lt;/code&gt;, the cache was the problem. Two rules to live by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Never run &lt;code&gt;config:cache&lt;/code&gt; in local development.&lt;/strong&gt; It exists for production performance.&lt;/li&gt;
&lt;li&gt;In production, your deploy script should run &lt;code&gt;config:clear&lt;/code&gt; then &lt;code&gt;config:cache&lt;/code&gt; (in that order) on every deploy, and restart queue workers with &lt;code&gt;php artisan queue:restart&lt;/code&gt; so they pick up the fresh config.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This one cause alone accounts for a huge share of "but I already fixed the .env!" support threads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 6: Remote Databases — Bind Address, Users, and Firewalls
&lt;/h2&gt;

&lt;p&gt;If your database lives on a different server (a managed database, a separate droplet, RDS), connection refused usually means the network path is blocked:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# On the DATABASE server, check what MySQL is bound to&lt;/span&gt;
&lt;span class="nb"&gt;sudo grep&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; &lt;span class="s2"&gt;"bind-address"&lt;/span&gt; /etc/mysql/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;bind-address = 127.0.0.1&lt;/code&gt;, the server only accepts local connections. For remote access it needs the server's private IP or &lt;code&gt;0.0.0.0&lt;/code&gt; (then restart MySQL). Next, check the MySQL user's allowed host:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;host&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;mysql&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A user created as &lt;code&gt;'app'@'localhost'&lt;/code&gt; can never connect from another machine — you need &lt;code&gt;'app'@'%'&lt;/code&gt; or &lt;code&gt;'app'@'your-app-server-ip'&lt;/code&gt;. Finally, check the firewall:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw status

&lt;span class="c"&gt;# allow MySQL from your app server only, never the whole internet&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow from 203.0.113.10 to any port 3306
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opening port 3306 to the world is a security incident waiting to happen. Restrict it to your app server's IP, or better, keep the database on a private network.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 2-Minute Diagnostic Sequence
&lt;/h2&gt;

&lt;p&gt;When this error appears and you don't know the cause yet, run these in order. Most cases resolve by step 3:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Step 1: what does Laravel THINK the connection settings are?&lt;/span&gt;
php artisan tinker &lt;span class="nt"&gt;--execute&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"print_r(config('database.connections.mysql'));"&lt;/span&gt;

&lt;span class="c"&gt;# Step 2: is anything listening where Laravel is pointing?&lt;/span&gt;
nc &lt;span class="nt"&gt;-zv&lt;/span&gt; 127.0.0.1 3306

&lt;span class="c"&gt;# Step 3: can the mysql client connect with those same settings?&lt;/span&gt;
mysql &lt;span class="nt"&gt;-h&lt;/span&gt; 127.0.0.1 &lt;span class="nt"&gt;-P&lt;/span&gt; 3306 &lt;span class="nt"&gt;-u&lt;/span&gt; your_db_user &lt;span class="nt"&gt;-p&lt;/span&gt; your_database &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"SELECT 1;"&lt;/span&gt;

&lt;span class="c"&gt;# Step 4: still failing? nuke the caches and restart long-lived processes&lt;/span&gt;
php artisan config:clear &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; php artisan cache:clear &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; php artisan queue:restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add this as a snippet to your team's runbook. It turns a 45-minute panic into a 2-minute routine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Pitfalls Checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Editing &lt;code&gt;.env&lt;/code&gt; on the wrong server.&lt;/strong&gt; In Forge/Vapor/CI setups, make sure you edited the environment of the machine actually running the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;DB_HOST&lt;/code&gt; set to a container name on the host, or &lt;code&gt;127.0.0.1&lt;/code&gt; inside a container.&lt;/strong&gt; Match the host value to where the code runs (Fix 4).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typos in &lt;code&gt;DB_DATABASE&lt;/code&gt;.&lt;/strong&gt; A database that doesn't exist gives a different error ("unknown database"), but a typo'd username gives access denied — read the message carefully instead of assuming connection refused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SELinux or AppArmor&lt;/strong&gt; blocking the web server's outbound connections on hardened servers — check &lt;code&gt;audit.log&lt;/code&gt; if everything else looks right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Running &lt;code&gt;php artisan serve&lt;/code&gt; in one terminal and editing &lt;code&gt;.env&lt;/code&gt; in another&lt;/strong&gt; — the dev server does pick up &lt;code&gt;.env&lt;/code&gt; changes per request, but queue workers and Octane do not. Restart them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assuming the fix worked without re-running the failing command.&lt;/strong&gt; Always re-run &lt;code&gt;php artisan migrate:status&lt;/code&gt; or reload the page to confirm.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prevent It From Coming Back
&lt;/h2&gt;

&lt;p&gt;Add database connectivity to your deployment and monitoring so you catch this before your users do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// routes/console.php — a scheduled health check&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="no"&gt;Illuminate\Support\Facades\DB&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Illuminate\Support\Facades\Schedule&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;Schedule&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="no"&gt;DB&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getPdo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// throws on connection failure&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;everyFiveMinutes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'db-health-check'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pair that with a deploy script that clears and rebuilds the config cache on every release, and this error becomes something you read about in other people's blog posts instead of debugging at 2 AM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Connection refused is Laravel telling you the truth: nothing answered at the address you gave it. Work the connection path — server, host, port, cache — and the fix is almost always one config line or one service start away. If your team is losing hours to Laravel database issues, deployment headaches, or an API that keeps falling over, I help founders and teams ship stable Laravel applications. See my work and get in touch at &lt;a href="https://webixyhub.com" rel="noopener noreferrer"&gt;WebixyHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://webixyhub.com/blog/fix-sqlstate-hy000-2002-connection-refused-laravel" rel="noopener noreferrer"&gt;https://webixyhub.com/blog/fix-sqlstate-hy000-2002-connection-refused-laravel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>mysql</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
