title: SQLSTATE[HY000] [1698]-Laravel-6.5.1
body: <p>I created a new laravel project, changed the application key, and the database data in .env and database.php files.</p>
  
  <p>Here is the .env:</p>
  
  <pre><code>APP_NAME=NewSite
  APP_ENV=local
  APP_KEY=base64:Sh8WFAEfaUTDadmmpFiTDE8gbgUAOm7zgIywx8ZKRUo=
  APP_DEBUG=true
  APP_URL=http://localhost
  
  LOG_CHANNEL=stack
  
  DB_CONNECTION=mysql
  DB_HOST=127.0.0.1
  DB_PORT=3306
  DB_DATABASE=NewSite
  DB_USERNAME=NewSite
  DB_PASSWORD=NewSite
  
  BROADCAST_DRIVER=log
  CACHE_DRIVER=file
  QUEUE_CONNECTION=sync
  SESSION_DRIVER=file
  SESSION_LIFETIME=120
  
  REDIS_HOST=127.0.0.1
  REDIS_PASSWORD=null
  REDIS_PORT=6379
  
  MAIL_DRIVER=smtp
  MAIL_HOST=smtp.mailtrap.io
  MAIL_PORT=2525
  MAIL_USERNAME=null
  MAIL_PASSWORD=null
  MAIL_ENCRYPTION=null
  
  AWS_ACCESS_KEY_ID=
  AWS_SECRET_ACCESS_KEY=
  AWS_DEFAULT_REGION=us-east-1
  AWS_BUCKET=
  
  PUSHER_APP_ID=
  PUSHER_APP_KEY=
  PUSHER_APP_SECRET=
  PUSHER_APP_CLUSTER=mt1
  
  MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
  MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
  </code></pre>
  
  <p>And this is database.php file:</p>
  
  <pre><code>&lt;?php
  
  use Illuminate\Support\Str;
  
  return [
  
      /*
      |--------------------------------------------------------------------------
      | Default Database Connection Name
      |--------------------------------------------------------------------------
      |
      | Here you may specify which of the database connections below you wish
      | to use as your default connection for all database work. Of course
      | you may use many connections at once using the Database library.
      |
      */
  
      'default' =&gt; env('DB_CONNECTION', 'mysql'),
  
      /*
      |--------------------------------------------------------------------------
      | Database Connections
      |--------------------------------------------------------------------------
      |
      | Here are each of the database connections setup for your application.
      | Of course, examples of configuring each database platform that is
      | supported by Laravel is shown below to make development simple.
      |
      |
      | All database work in Laravel is done through the PHP PDO facilities
      | so make sure you have the driver for your particular database of
      | choice installed on your machine before you begin development.
      |
      */
  
      'connections' =&gt; [
  
          'sqlite' =&gt; [
              'driver' =&gt; 'sqlite',
              'url' =&gt; env('DATABASE_URL'),
              'database' =&gt; env('DB_DATABASE', database_path('database.sqlite')),
              'prefix' =&gt; '',
              'foreign_key_constraints' =&gt; env('DB_FOREIGN_KEYS', true),
          ],
  
          'mysql' =&gt; [
              'driver' =&gt; 'mysql',
              'url' =&gt; env('DATABASE_URL'),
              'host' =&gt; env('DB_HOST', '127.0.0.1'),
              'port' =&gt; env('DB_PORT', '3306'),
              'database' =&gt; env('DB_DATABASE', 'NewSite'),
              'username' =&gt; env('DB_USERNAME', 'NewSite'),
              'password' =&gt; env('DB_PASSWORD', 'NewSite'),
              'unix_socket' =&gt; env('DB_SOCKET', ''),
              'charset' =&gt; 'utf8mb4',
              'collation' =&gt; 'utf8mb4_unicode_ci',
              'prefix' =&gt; '',
              'prefix_indexes' =&gt; true,
              'strict' =&gt; true,
              'engine' =&gt; null,
              'options' =&gt; extension_loaded('pdo_mysql') ? array_filter([
                  PDO::MYSQL_ATTR_SSL_CA =&gt; env('MYSQL_ATTR_SSL_CA'),
              ]) : [],
          ],
  
          'pgsql' =&gt; [
              'driver' =&gt; 'pgsql',
              'url' =&gt; env('DATABASE_URL'),
              'host' =&gt; env('DB_HOST', '127.0.0.1'),
              'port' =&gt; env('DB_PORT', '5432'),
              'database' =&gt; env('DB_DATABASE', 'forge'),
              'username' =&gt; env('DB_USERNAME', 'forge'),
              'password' =&gt; env('DB_PASSWORD', ''),
              'charset' =&gt; 'utf8',
              'prefix' =&gt; '',
              'prefix_indexes' =&gt; true,
              'schema' =&gt; 'public',
              'sslmode' =&gt; 'prefer',
          ],
  
          'sqlsrv' =&gt; [
              'driver' =&gt; 'sqlsrv',
              'url' =&gt; env('DATABASE_URL'),
              'host' =&gt; env('DB_HOST', 'localhost'),
              'port' =&gt; env('DB_PORT', '1433'),
              'database' =&gt; env('DB_DATABASE', 'forge'),
              'username' =&gt; env('DB_USERNAME', 'forge'),
              'password' =&gt; env('DB_PASSWORD', ''),
              'charset' =&gt; 'utf8',
              'prefix' =&gt; '',
              'prefix_indexes' =&gt; true,
          ],
  
      ],
  
      /*
      |--------------------------------------------------------------------------
      | Migration Repository Table
      |--------------------------------------------------------------------------
      |
      | This table keeps track of all the migrations that have already run for
      | your application. Using this information, we can determine which of
      | the migrations on disk haven't actually been run in the database.
      |
      */
  
      'migrations' =&gt; 'migrations',
  
      /*
      |--------------------------------------------------------------------------
      | Redis Databases
      |--------------------------------------------------------------------------
      |
      | Redis is an open source, fast, and advanced key-value store that also
      | provides a richer body of commands than a typical key-value system
      | such as APC or Memcached. Laravel makes it easy to dig right in.
      |
      */
  
      'redis' =&gt; [
  
          'client' =&gt; env('REDIS_CLIENT', 'phpredis'),
  
          'options' =&gt; [
              'cluster' =&gt; env('REDIS_CLUSTER', 'redis'),
              'prefix' =&gt; env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
          ],
  
          'default' =&gt; [
              'url' =&gt; env('REDIS_URL'),
              'host' =&gt; env('REDIS_HOST', '127.0.0.1'),
              'password' =&gt; env('REDIS_PASSWORD', null),
              'port' =&gt; env('REDIS_PORT', 6379),
              'database' =&gt; env('REDIS_DB', 0),
          ],
  
          'cache' =&gt; [
              'url' =&gt; env('REDIS_URL'),
              'host' =&gt; env('REDIS_HOST', '127.0.0.1'),
              'password' =&gt; env('REDIS_PASSWORD', null),
              'port' =&gt; env('REDIS_PORT', 6379),
              'database' =&gt; env('REDIS_CACHE_DB', 1),
          ],
  
      ],
  
  ];
  </code></pre>
  
  <p><strong>PS: I created a real database user on localhost with name NewSite having password NewSite and a new database with name NewSite as an example... Of-course with grant options</strong></p>
  
  <p>However I am still getting the error after <code>php artisan migrate</code>:</p>
  
  <pre><code> Illuminate\Database\QueryException  : SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost' (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')
  
    at .../vendor/laravel/framework/src/Illuminate/Database/Connection.php:665
      661|         // If an exception occurs when attempting to run a query, we'll format the error
      662|         // message to include the bindings with SQL, which will make this exception a
      663|         // lot more helpful to the developer instead of just the database's errors.
      664|         catch (Exception $e) {
    &gt; 665|             throw new QueryException(
      666|                 $query, $this-&gt;prepareBindings($bindings), $e
      667|             );
      668|         }
      669| 
  
    Exception trace:
  
    1   PDOException::("SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'")
        .../vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
  
    2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel", "root", "", [])
        .../vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
  </code></pre>
  
  <p><strong>Also I tried <code>php artisan migrate</code> when all the variables in database were in default laravel format such as <code>env('DB_DATABASE', 'forge')</code> but I still got the same error</strong></p>
  
  <p><strong>I tried: <code>php artisan cache:clear</code>, <code>php artisan view:cache</code>, <code>php artisan view:clear</code> but that didn't fix the problem it is still getting laravel as database, root as database-user and '' as password in connector.php</strong></p>
  
  <p>Any help please</p>