Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel SQLSTATE[HY000][2002]连接被拒绝_Php_Laravel - Fatal编程技术网

Php Laravel SQLSTATE[HY000][2002]连接被拒绝

Php Laravel SQLSTATE[HY000][2002]连接被拒绝,php,laravel,Php,Laravel,因此,我想将现有的laravel项目部署到我的digitalocean vps中 我成功地上传了我的网站 我的环境文件也是 APP_ENV=local APP_KEY=my app key APP_DEBUG=true APP_LOG_LEVEL=debug APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=my ip DB_PORT=3306 DB_DATABASE=form DB_USERNAME=root DB_PASSWORD=m

因此,我想将现有的laravel项目部署到我的digitalocean vps中 我成功地上传了我的网站

我的环境文件也是

APP_ENV=local
APP_KEY=my app key
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=my ip
DB_PORT=3306
DB_DATABASE=form
DB_USERNAME=root
DB_PASSWORD=my pass
但问题是

我使用mysql创建并运行了
php artisan migrate
并且得到了这些错误 有什么问题

[照亮\数据库\查询异常] SQLSTATE[HY000][2002]连接被拒绝(SQL:从信息中选择* chema.tables,其中table_schema=form,table_name=migrations)

[例外情况] SQLSTATE[HY000][2002]连接被拒绝


.env
文件中,将
DB_HOST
127.0.0.1
更改为
localhost

出现此错误的原因有几种

  • 数据库服务器未启动,请检查您是否仍然可以使用phpmyadmin。如果您仍然可以使用它,那么您的数据库服务器没有问题
  • 配置错误;检查.env文件和config/database.php中的用户名、密码和服务器设置
  • 没有对具有给定凭据的服务器和/或数据库的权限 看看你已经采取的步骤,我想这是最后一步了
检查此用户是否可以从远程位置访问数据库。默认情况下,根用户可以本地访问服务器(localhost、127.0.0.1和::1)

因此,检查用户是否可以从远程ip或任何地方访问


当您使用digitalocean时,我建议您检查他们是否有连接到mysql数据库的特定配置。

SELinux可能是原因

设置此规则并重试:

sudo setsebool -P httpd_can_network_connect_db=1
放置字符串:

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
在DB_密码之后=


它适用于MAMP。将路径设置为mysql.sock

我的composer是全局安装的,我运行php artisan Service时没有启动xampp&出现此错误。运行完我的xampp服务器后,我的服务器工作正常。

为了给那些在前面提到的答案中没有找到成功答案的人提供解决方案,我将分享我的解决方案

来自Windows 10,我知道root用户的密码始终为空,因此我的.env文件如下所示:

DB_USERNAME=root
DB_PASSWORD=
在Mac上,密码也默认为“root”。将my.env文件更改为如下所示,修复了我的问题:

DB_USERNAME=root
DB_PASSWORD=root

在.env文件中,将DB_HOST从127.0.0.1更改为localhost

然后

  • php artisan缓存:清除
  • php artisan路由:清除
  • php artisan配置:清除
  • php artisan视图:清除

    这对我有用


  • 经过长时间的工作,这对我来说很有效:

    更改php My Admin中的端口以前为8889

    APP_NAME=laravel
    APP_ENV=local
    APP_KEY= YOUR KEY
    APP_DEBUG=true
    APP_URL=127.0.0.1
    
    LOG_CHANNEL=stack
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
    
    然后

    php artisan cache:clear
    php artisan route:clear
    php artisan config:clear
    php artisan view:clear
    
    在.env文件中

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=ur_db_name
    DB_USERNAME=ur_db_username
    DB_PASSWORD=ur_dbuser_password
    

    在按照上述说明进行更改之前

  • 检查数据库服务器是否正在运行。如果您使用的是
    命令提示符
    ,则运行
    mysql.server
    状态或
    mysqld
    状态将显示数据库状态
  • 如果数据库正在运行,请检查
    dbuser
    是否允许从
    '%'
    'localhost'
    '127.0.0.1'
    进行连接。如果没有,只需从
    '%'授予用户访问权限
  • 如果已经执行了1和2,但仍然无法连接,请查看是否允许db用户访问该架构。如果不是,则授予对架构的访问权限
  • 如果您到达此处时仍然遇到相同的错误,请尝试重新启动web服务器

  • 您是否在
    .env
    文件中定义了您的数据库凭据?请看这里@Froxz,它已经没有帮助了,他的问题是homestead@SaumyaRastogi是的,我附上了it@MohammadReza检查您的数据库/用户名/密码检查mysql是否正在运行
    连接被拒绝
    无法连接的错误,可能您的用户没有足够的访问权限等等。它不在我附加的.env旁边的本地主机中file@Arsalan,是否使用远程服务器存储数据库?然后尝试域名而不是IP。这解决了我的问题。但是我无法理解:
    127.0.0.1
    localhost
    之间有什么区别吗?@GhulamAkbar没有区别,除非数据库只接受来自
    localhost
    的连接。例如,为了接受来自两者的连接,您必须创建2个用户,
    admin@localhost
    admin@127.0.0.1
    我看到有人提到相反的情况,这对我不起作用。迁移可以工作,但在尝试获取数据时不起作用。