Laravel Artisan访问仅在控制台上被root @ localhost拒绝

时间:2017-10-11 05:56:26

标签: php mysql database laravel

我对Laravel有疑问。我的网站访问和执行数据库操作没有问题,但是当我尝试运行时

php artisan migrate

在终端上我收到错误:

  

[照亮\数据库\ QueryException]
  SQLSTATE [HY000] [1045]拒绝访问用户' root' @' localhost'   (使用pas剑:NO)(SQL:select * from   information_schema.tables where table_schema = test和   table_name =迁移)

     

[PDOException]
  SQLSTATE [HY000] [1045]拒绝访问用户' root' @' localhost'   (使用pas剑:否)

我已经阅读了互联网上关于我能找到的这个错误的每一个帖子,但没有人回答我的问题。总是因为人们没有正确输入他们的数据库信息...但是这不是我的情况,因为一切都在浏览器中正常工作,我只是无法通过控制台执行数据库相关的操作,如通过{{1}迁移或创建新的数据库条目}。

这是我的config / database.php文件:

artisan tinker

我的.env配置:

'connections' => [
    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'test'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],
]

我一直在努力解决这个问题,所以我非常感谢你的帮助。我在本地计算机上运行XAMPP,在macOS 10.1上运行。

7 个答案:

答案 0 :(得分:1)

Root是linux和Mac base Os系统管理员的用户名。 “php artisan”命令未设置为在“root”用户下运行。尝试在非管理员(非root用户)

下运行

答案 1 :(得分:1)

就我而言,我刚刚设置了DB_PASSWORD,它就起作用了!

赞:

SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
           ${KERNELORG_MIRROR}/software/scm/git/git-manpages-${PV}.tar.gz;name=manpages"

答案 2 :(得分:0)

对于仍然遇到此问题的人。

Laravel命令行依赖于全局可访问的命令mysql。我不是,我使用绝对路径链接到它,因为我正在使用XAMPP。

我通过全局使用mysql命令更正了此问题。在Mac中安装XAMPP后,只需在终端中运行此命令:

export PATH=/opt/local/bin:/opt/local/sbin:/Applications/xampp/xamppfiles/bin:$PATH

这应该使mysql全局可用并修复您的迁移问题。

答案 3 :(得分:0)

原来,我在执行此命令时在终端上使用root用户。我以管理员身份注销,php artisan migration正常运行!

答案 4 :(得分:0)

我遵循了以下步骤,并且能够解决此问题-

  1. 在MySQL中以root身份创建了另一个用户。

  2. 将所有内容授予到'newuser'@'localhost'

  3. 更改了.env文件中的用户

  4. 在Windows的PATH系统变量中将mysql exe文件位置作为一个值

  5. 重新启动系统

  6. 重新启动wamp开发服务器

  7. php artisan cache:clear

  8. php artisan config:cache

  9. 接下来要检查的是mysql端口

  10. 通过终端输入mysql:

mysql -u根-p 然后在mysql提示符下键入以下内容: mysql>显示类似于“ PORT”的全局变量;

  1. 这表明我的Windows 10计算机中的端口为3308,而不是3306

  2. 更改了.env文件中的端口

  3. 再次使用php artisan clear:cache

  4. php artisan config:cache

  5. 现在给了命令-php artisan migration:fresh --seed

  6. 最后成功了。

答案 5 :(得分:0)

没有其他答案对我有用。我只需在最初为空的DB_PASSWORD=中的.env中添加一个密码即可解决此问题。

答案 6 :(得分:0)

我的问题是密码包含特殊字符,因此必须在 .env 文件中引用:

DB_USERNAME={user}
DB_PASSWORD="{password}"