【发布时间】:2020-07-17 23:05:39
【问题描述】:
背景:我使用 brew 安装了 php7.2,然后使用 brew 安装了 mysql。
mysql Ver 8.0.19 for osx10.14 on x86_64 (Homebrew)。然后使用作曲家创建了我的流明项目
composer create-project --prefer-dist laravel/lumen blog
我正在尝试将数据插入到我的表中,它会在邮递员中引发错误
SQLSTATE[HY000] [1045] Access denied for user 'username'@'localhost'
这是我的 .env 文件
APP_NAME=Lumen
APP_ENV=local
APP_KEY= 9887765535434424354566gfr547633
APP_DEBUG=true
APP_URL=http://localhost
APP_TIMEZONE=UTC
LOG_CHANNEL=stack
LOG_SLACK_WEBHOOK_URL=
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=pqueue
DB_PASSWORD=password
DB_STRICT_MODE=false
DB_SOCKET=/tmp/mysql.sock
CACHE_DRIVER=array
QUEUE_DRIVER=database
在我的配置中>database.php 我有默认设置
返回 [
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => env('DB_PREFIX', ''),
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', 3306),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => env('DB_PREFIX', ''),
'strict' => env('DB_STRICT_MODE', true),
'engine' => env('DB_ENGINE', null),
'timezone' => env('DB_TIMEZONE', '+00:00'),
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', 5432),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => env('DB_PREFIX', ''),
'schema' => env('DB_SCHEMA', 'public'),
'sslmode' => env('DB_SSL_MODE', 'prefer'),
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 1433),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'prefix' => env('DB_PREFIX', ''),
],
],
/*
|--------------------------------------------------------------------------
| 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' => 'migrations',
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer set of commands than a typical key-value systems
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => 'predis',
'cluster' => env('REDIS_CLUSTER', false),
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
],
]; `
我不确定可能是什么问题。
当我运行 php artisan migrate:refresh 或 php artisan migrate --env=production
In Connection.php line 664:
SQLSTATE[HY000] [1045] Access denied for user 'pqueue'@'localhost' (using password: YES) (SQL: select * from information_schema.ta
bles where table_schema = test and table_name = migrations and table_type = 'BASE TABLE')
In Connector.php line 70:
SQLSTATE[HY000] [1045] Access denied for user 'pqueue'@'localhost' (using password: YES)
但是我已经授予对测试数据库中所有表的访问权限
GRANT ALL on test.* to pqueue@localhost;
我能够使用 pqueue 凭据通过 mysql 控制台创建表并在测试数据库中插入数据。所以我知道用户有足够的权限。
谁能帮我调试一下?
【问题讨论】:
-
拒绝访问意味着用户名或密码不正确。
-
@'localhost'暗示数据库是在你家里自己的系统上运行的?如果这在提供者的基础设施上运行,则“localhost”不起作用。您必须指定提供商给您的实际主机(域)。而且你的database.php没有指定你上面说的用户/密码。 -
@Nic3500 是的,数据库也在我的本地机器上运行。在 database.php 中,它使用来自 env 文件的凭据,除非未指定,否则它将使用 database.php 中指定的值.和错误状态一样,它从 env 文件中获取用户名 pqueue
-
@Shadow,使用这些相同的凭据我能够登录到 mysql,创建一个表以及插入该表。所以我认为凭证没有任何问题。由于某种原因,框架代码无法正确验证用户。