Doctrine(使用Symfony2)仅使用root @ localhost尝试连接到DB

时间:2012-07-15 12:14:46

标签: authentication symfony doctrine-orm localhost root

错误:(发生在prod env中)

request.CRITICAL:PDOException:SQLSTATE [28000] [1045]在/ srv / inta / current / vendor /中拒绝用户“root”@“localhost”(使用密码:YES)(未捕获的异常) doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php第36行[] []

到目前为止我尝试了什么

奇怪的是,我实际上可以使用root用户和提供的密码进行访问。通过控制台以root身份登录很有效。

我正在 app / config / 中使用以下 parameters.yml 文件

parameters:
    database_driver:   pdo_mysql
    database_host:     localhost
    database_port:     ~
    database_name:     int_apartments
    database_user:     root
    database_password: pw goes here

    mailer_transport:  smtp
    mailer_host:       localhost
    mailer_user:       ~
    mailer_password:   ~

    locale:            en
    secret:            ThisTokenIsNotSoSecretChangeIt

正如您所看到的,它非常标准,仅更改了db的名称,用户和密码。

位于 app / config 中的 config.yml (相关部分)

imports:
- { resource: security.yml }
- { resource: parameters.yml }

...

doctrine:
   dbal:
      driver:   %database_driver%
      host:     %database_host%
      port:     %database_port%
      dbname:   %database_name%
      user:     %database_user%
      password: %database_password%
      charset:  UTF8
      dbname:   int_apartments

  orm:
      auto_generate_proxy_classes: %kernel.debug%
      auto_mapping: true
      mappings:
          StofDoctrineExtensionsBundle: false

现在,我想从“步骤1”开始并验证parameters.yml文件实际上是否正在导入,因此我将主机更改为“localhos”或将用户更改为“tom”或其他任何位置并找到错误消息在 app / logs / prod.log 中保持原样 - 位置不会改变,用户也不会改变。

所以我查看了位于 app / config

中的 config_prod.yml
imports:
- { resource: config.yml }


#doctrine:
#    metadata_cache_driver: apc
#    result_cache_driver: apc
#    query_cache_driver: apc

monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: error
            handler:      nested
        nested:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug

......一切看起来都很标准!

发生了什么

所以这是快速版本。

  • root @ localhost
  • 存在身份验证错误
  • 通过控制台以该用户身份登录
  • 验证了我的身份验证信用
  • 想要检查是否正在加载parameters.yml文件
  • 更改了一些值 - 没有影响错误消息

(小)编辑: 我真正想要做的是作为一个完全不同的用户使用不同的密码连接到数据库。即使我在parameters.yml文件中输入不同的凭据,doctrine仍然会发出“root @ localhost”错误。

想法?

2 个答案:

答案 0 :(得分:2)

愚蠢的错误,似乎是由于服务器上的用户/组/所有者配置错误。

app / cache目录由“root”拥有,但是当我运行时     app / console cache:clear --env = prod --no-debug 我作为另一个用户(不是root)运行。因此,在清除缓存方面存在问题,并且学说似乎一直使用位于缓存文件中的非常旧的配置。

经验教训:

  • 始终尝试以root身份运行(作为最后的手段)
  • 使用正确配置的Web服务器以避免所有权问题

答案 1 :(得分:1)

我通过重命名上传到prod_old的prod文件夹解决了我的问题,因为系统由于某种原因无法删除该文件夹。