title: Connect to staging database from a local environment - Laravel 5
body: <h1>Goal</h1>
  
  <p>Locally on my <strong>Mac OS</strong>, I'm trying to connect to my <strong>staging database</strong> that are running and hosted on my Ubuntu VM. </p>
  
  <hr>
  
  <h1>Steps</h1>
  
  <p>In my <code>config/database.php</code></p>
  
  <pre><code>'connections' =&gt; [
  
      'mysql'       =&gt; [
      'driver'      =&gt; 'mysql',
      'host'        =&gt; env('DB_HOST'),
      'database'    =&gt; env('DB_DATABASE'),
      'username'    =&gt; env('DB_USERNAME'),
      'password'    =&gt; env('DB_PASSWORD'),
      'unix_socket' =&gt; env('UNIX_SOCKET'), &lt;---- Need it here 
      'charset'     =&gt; 'utf8',
      'collation'   =&gt; 'utf8_unicode_ci',
      'prefix'      =&gt; '',
      'strict'      =&gt; false,
      ]
  
  ],
  </code></pre>
  
  <p>In my .env I have </p>
  
  <pre><code>DB_HOST=45.55.88.88
  DB_DATABASE=staging
  DB_USERNAME=john
  DB_PASSWORD=***
  UNIX_SOCKET=/var/run/mysqld/mysqld.sock  &lt;---- I'm not sure what to put here 
  </code></pre>
  
  <p>I am not sure what to PUT as my UNIX_SOCKET since database.php need it.</p>
  
  <p>I kept getting </p>
  
  <pre><code>SQLSTATE[HY000] [2002] No such file or directory
  </code></pre>
  
  <p>I believe that because my path to the UNIX_SOCKET is wrong. </p>
  
  <p>How could I configure something like this?</p>
  
  <h1>Update</h1>
  
  <p>Base on @dparoli's answer. I update my database configuration not using <strong>UNIX_SOCKET</strong> any more. </p>
  
  <pre><code>'connections' =&gt; [
  
      'mysql'       =&gt; [
  
          'driver'      =&gt; 'mysql',
          'host'        =&gt; env('DB_HOST'),
          'database'    =&gt; env('DB_DATABASE'),
          'username'    =&gt; env('DB_USERNAME'),
          'password'    =&gt; env('DB_PASSWORD'),
          'port'        =&gt; env('DB_PORT', '3306'),
          'charset'     =&gt; 'utf8',
          'collation'   =&gt; 'utf8_unicode_ci',
          'prefix'      =&gt; '',
          'strict'      =&gt; false,
      ]
  
  ],
  </code></pre>
  
  <p>now I got </p>
  
  <blockquote>
    <p>PDOException in Connector.php line 49:
    SQLSTATE[HY000] [2002] Operation timed out</p>
  </blockquote>
  
  <hr>
  
  <p>I've tried looking more into the settings of my <code>staging</code> VM</p>
  
  <h1>sshd_config</h1>
  
  <p>Will <code>/etc/ssh/sshd_config</code> play any roles in this at all ? 
  Is it because I disabled password log-in and only allow log-in via public key ? </p>
  
  <p>I've tried both </p>
  
  <p><strong>PasswordAuthentication no</strong></p>
  
  <p>and </p>
  
  <p><strong>PasswordAuthentication yes</strong></p>
  
  <hr>
  
  <h1>netstat</h1>
  
  <p>I ran <code>netstat -ln</code>, I got </p>
  
  <pre><code>Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address           Foreign Address         State      
  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
  tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN     
  tcp        0      0 127.0.0.1:17123         0.0.0.0:*               LISTEN     
  tcp        0      0 0.0.0.0:11300           0.0.0.0:*               LISTEN     
  tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
  ...
  </code></pre>
  
  <p>I saw <strong>0 0.0.0.0:3306</strong> there. </p>
  
  <hr>
  
  <h1>php.ini</h1>
  
  <pre><code>max_execution_time = 60
  
  and 
  
  memory_limit = 1000M
  </code></pre>
  
  <hr>
  
  <h1>/etc/mysql/my.cnf</h1>
  
  <pre><code># - "~/.my.cnf" to set user-specific options.
  # 
  # One can use all long options that the program supports.
  # Run program with --help to get a list of available options and with
  # --print-defaults to see which it would actually understand and use.
  #
  # For explanations see
  # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
  
  # This will be passed to all mysql clients
  # It has been reported that passwords should be enclosed with ticks/quotes
  # escpecially if they contain "#" chars...
  # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
  [client]
  port            = 3306
  socket          = /var/run/mysqld/mysqld.sock
  
  # Here is entries for some specific programs
  # The following values assume you have at least 32M ram
  
  # This was formally known as [safe_mysqld]. Both versions are currently parsed.
  [mysqld_safe]
  socket          = /var/run/mysqld/mysqld.sock
  nice            = 0
  
  [mysqld]
  #
  # * Basic Settings
  #
  user            = mysql
  pid-file        = /var/run/mysqld/mysqld.pid
  socket          = /var/run/mysqld/mysqld.sock
  port            = 3306
  basedir         = /usr
  datadir         = /var/lib/mysql
  tmpdir          = /tmp
  lc-messages-dir = /usr/share/mysql
  skip-external-locking
  #
  # Instead of skip-networking the default is now to listen only on
  # localhost which is more compatible and is not less secure.
  bind-address = *
  #
  # * Fine Tuning
  #
  key_buffer              = 16M
  max_allowed_packet      = 16M
  thread_stack            = 192K
  thread_cache_size       = 8
  # This replaces the startup script and checks MyISAM tables if needed
  # the first time they are touched
  myisam-recover         = BACKUP
  #max_connections        = 100
  #table_cache            = 64
  #thread_concurrency     = 10
  #
  # * Query Cache Configuration
  #
  query_cache_limit       = 1M
  query_cache_size        = 16M
  #
  # * Logging and Replication
  #
  # Both location gets rotated by the cronjob.
  # Be aware that this log type is a performance killer.
  # As of 5.1 you can enable the log at runtime!
  #general_log_file        = /var/log/mysql/mysql.log
  #general_log             = 1
  #
  # Error log - should be very few entries.
  #
  log_error = /var/log/mysql/error.log
  #
  # Here you can see queries with especially long duration
  #log_slow_queries       = /var/log/mysql/mysql-slow.log
  #long_query_time = 2
  #log-queries-not-using-indexes
  #
  # The following can be used as easy to replay backup logs or for replication.
  # note: if you are setting up a replication slave, see README.Debian about
  #       other settings you may need to change.
  #server-id              = 1
  #log_bin                        = /var/log/mysql/mysql-bin.log
  expire_logs_days        = 10
  max_binlog_size         = 100M
  #binlog_do_db           = include_database_name
  #binlog_ignore_db       = include_database_name
  #
  # * InnoDB
  #
  # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
  # Read the manual for more InnoDB related options. There are many!
  #
  # * Security Features
  #
  # Read the manual, too, if you want chroot!
  # chroot = /var/lib/mysql/
  #
  # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
  #
  # ssl-ca=/etc/mysql/cacert.pem
  # ssl-cert=/etc/mysql/server-cert.pem
  # ssl-key=/etc/mysql/server-key.pem
  
  
  
  [mysqldump]
  quick
  quote-names
  max_allowed_packet      = 16M
  
  [mysql]
  #no-auto-rehash # faster start of mysql but no tab completition
  
  [isamchk]
  key_buffer              = 16M
  
  #
  # * IMPORTANT: Additional settings that can override those from this file!
  #   The files must end with '.cnf', otherwise they'll be ignored.
  #
  !includedir /etc/mysql/conf.d/
  
  ____
  </code></pre>
  
  <h1>Result</h1>
  
  <blockquote>
    <p>PDOException in Connector.php line 49:
    SQLSTATE[HY000] [2002] Operation timed out</p>
  </blockquote>
  
  <p>How can I stop that ? </p>
  
  <p>What else can I check or try ? </p>