1

错误:(发生在产品环境中)

request.CRITICAL: PDOException: SQLSTATE[28000] [1045] 在 /srv/inta/current/vendor/doctrine-dbal/lib/ 处拒绝用户 'root'@'localhost' 的访问(使用密码:YES)(未捕获的异常) 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

如您所见,它非常标准,仅更改了数据库的名称、用户和密码。

在我位于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 文件中输入不同的凭据,学说仍然会吐出“root@localhost”错误。

想法?

4

2 回答 2

2

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

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

得到教训:

  • 始终尝试以 root 身份运行(作为最后的手段)
  • 使用正确配置的 Web 服务器来避免所有权问题
于 2012-07-15T12:31:52.960 回答
1

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

于 2015-11-05T20:56:09.937 回答