【问题标题】:Access denied for user ''@'localhost' (using password: NO) - Laravel用户''@'localhost'的访问被拒绝(使用密码:否) - Laravel
【发布时间】:2019-12-19 21:21:08
【问题描述】:

我是编码和 Laravel 的新手。我正在关注tutorial video,并在 22:31:00 我被告知编辑 .env 文件,然后使用“php artisan migrate”连接到数据库。

我在 Larevel 数据库文件夹“名为 database.wamp”中手动创建了一个文件(我使用 WAMP 连接到 mysql 数据库)并将 .env 信息设置为;

LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_DATABASE=database.wamp
DB_USERNAME=root
DB_PASSWORD=""

我的 mysql 数据库没有密码。

我查看了上述问题的许多在线答案,但没有一个有效。

我收到以下错误;

C:\wamp64\www\sites\demo1>php artisan migrate

Illuminate\Database\QueryException : SQLSTATE[HY000] [1045] 访问被拒绝
对于用户''@'localhost'(使用密码:NO)(SQL:select * from information_schema.tables 其中 table_schema = database.wamp 和 table_name = 迁移和 table_type = 'BASE TABLE')

我很想添加更多代码,但 stackoverflow 格式永远不起作用。单击 CTRL+K 只会打开一个新的 chrome 选项卡。对于超过 6 行代码,我什至不能在每行之前添加 4 个空格,否则空格键会变成返回按钮,而文本只会向下移动。很烦人。

【问题讨论】:

  • 我以前从未使用过 WAMP,但是,尝试使用 CLI 或 phpMyAdmin 创建数据库,然后将您的数据库名称放在这里 DB_DATABASE=yourdatabasename
  • 试过但没有解决问题

标签: mysql laravel


【解决方案1】:

我想添加更多信息并展示我的尝试,因为现在我收到了不同的错误消息。

如上所述,我正在观看一个教程视频,并被告知创建“database.wamp”文件名,然后在命令提示符下运行“php artisan migrate”。

但是,我不断收到“用户 ''@'localhost' 的访问被拒绝(使用密码:否)”

这是我的 .env 设置

LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_DATABASE=database.wamp
DB_USERNAME=root
DB_PASSWORD=""

和我在“配置>数据库”中找到的 mysql 设置

'mysql' => [
       'driver' => 'mysql',
       'url' => 'database.wamp',
       'host' => 'localhost',
       'port' => '3306',
       'database' => 'mysql',
       'username'  => 'root',
       'password' => "",
       'unix_socket' => env('DB_SOCKET', ''),
       'charset' => 'utf8mb4',
       'collation' => 'utf8mb4_unicode_ci',
       'prefix' => '',
       'prefix_indexes' => true,
       'strict' => true,
       'engine' => null,
       'options' => extension_loaded('pdo_mysql') ? array_filter([
           PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
       ]) : [],

我检查了端口是 3306,这是正确的 MySQL 端口(MariaDB 是 3307)

接下来,我在 MySQL 中创建了一个名为 database.wamp 的数据库,并在命令提示符下运行了“php artisan migrate”。这次我收到一条新的错误消息:

未知数据库'atabase_url'

我看到文本“数据库”缺少“d”,但我不确定在哪里可以找到它?我检查了 phpMyAdmin 数据库,它的拼写正确。我还检查了 Laravel 中我能想到的所有地方,但找不到拼写错误的单词?

【讨论】:

  • 已修复问题:我在整个数据库中搜索了“atabase_url”并更正了错字。我不知道这个错字是如何出现在这么多地方的,因为大约有 10 次拼写错误。
【解决方案2】:

请进入 config 文件夹,然后打开 database.php 文件。 这里在 mysql 部分添加您的数据库名称、主机和密码,它可能不会从 .env 文件中获取值。

如果它仍然不起作用,则说明您使用了错误的数据库密码。

【讨论】:

  • 试过但没有解决问题。在开始学习 Laravel 之前,我知道密码是正确的,因为它用于创建不同的数据库。
【解决方案3】:

您必须 ‍‍restart 您的网络服务器。

如果您的问题没有解决,请运行以下命令:

php artisan cache:clear
php artisan config:cache

【讨论】:

    【解决方案4】:

    您可能在WAMP 中使用了MariaDB,您必须将端口更改为3307

    DB_PORT=3307
    

    【讨论】:

    • 我检查了端口是 3306,这是正确的 MySQL 端口(MariaDB 是 3307)
    • @PHP75DJ 检查数据库看看它在哪里?在 MariaDB(3307) 或 Mysql(3306) 中
    【解决方案5】:

    你的主机和端口在哪里?

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=database.wamp
    DB_USERNAME=root
    DB_PASSWORD=
    

    然后使用命令php artisan config:cache 然后php artisan migrate

    【讨论】:

    • 是的,但我现在已经解决了这个问题。感谢您的帮助。
    猜你喜欢
    • 2015-10-07
    • 2018-02-22
    • 2016-12-27
    • 2012-06-17
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多