【问题标题】:SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)SQLSTATE [28000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:否)
【发布时间】:2012-10-03 07:41:42
【问题描述】:

我正在使用 symfony 2.1.2、FOSuserBundle、SonataAdminBundle、SonataUserBundle 和 SonataMediaBundle。问题是我无法访问我的数据库并收到此错误。

这是我的参数.yml

parameters:
    database_driver: pdo_mysql
    database_host: localhost
    database_port: null
    database_name: superlinea
    database_user: root
    database_password: !Admin1234
    mailer_transport: smtp
    mailer_host: localhost
    mailer_user: null
    mailer_password: null
    locale: en
    secret: f4c89326a7c2d2fb848e84dc8b39ea92
    database_path: null

这是我的 config.yml [ 教义部分:]

doctrine:
    dbal:
        default_connection:   default
        connections:
            default:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        # auto_mapping: true
        # entity_managers:
        #     default:
        #         mappings:
        #             ApplicationSonataMediaBundle: ~
        entity_managers:
            default:
                mappings:
                    ApplicationSonataMediaBundle: ~
                    ApplicationSonataUserBundle: ~
                    SonataUserBundle: ~
                    FOSUserBundle: ~
    dbal:
        types:
            json: Sonata\Doctrine\Types\JsonType

我检查了使用parameters.yml 上的凭据从我的终端连接到mysql,它连接正确。 我清除了缓存,但仍然没有使用指定的密码。

有什么帮助吗?

【问题讨论】:

  • 尝试在 parameters.yml 中引用您的密码:database_password: "!Admin1234"
  • 谢谢,我试过了,但仍然是同样的错误。好像没有读取 config.yml 什么的
  • 它似乎可以识别您的 database_user (root),所以我猜它读取了配置,只是误解了其中一个值。您是否尝试过通过 DI-Container 获取doctrine.dbal,然后读取配置并查看它是否与 parameters.yml 中的设置匹配?错误消息表明缺少密码,但可能是其他原因?
  • 我结帐到另一个可以工作的分支。当我更改 config.yml 并添加“default_connection:default”和默认设置时,问题就开始了,正如您在 parameters.yml 中看到的那样

标签: symfony symfony-2.1


【解决方案1】:

问题出在你的 config.yml 中,

dbal:
  types:
    json: Sonata\Doctrine\Types\JsonType

应该进入教义dbal。像这样:

doctrine:
    dbal:
        default_connection:   default
        connections:
            default:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
        types:
            json: Sonata\Doctrine\Types\JsonType

希望对你有帮助

【讨论】:

  • 对于任何有我问题的人:使用 symfony2.8.9 我得到了相同的错误页面。由于某种原因,在 config.yml 文件中,组件 doctrine > dbal > connections > default > driver 被默认设置为 pdo_mysql。将其切换回 "%database_driver%" 即可解决。
【解决方案2】:

在你的 app/config/parameters.yml 中

# This file is auto-generated during the composer install
parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: 3306
    database_name: symfony
    database_user: root
    database_password: "your_password"
    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: null
    mailer_password: null
    locale: en
    secret: ThisTokenIsNotSoSecretChangeIt

database_password 应该在双引号 (") 或单引号 (') 内。

我看到大多数用户发生这种情况是因为他们使用前导零或数字的密码(在我的情况下就是这样)


我也尝试过使用 localhost 和双引号密码,但它不起作用。

所以在这种情况下使用

database_host: 127.0.0.1

而不是

database_host: localhost

【讨论】:

    【解决方案3】:

    对于所有遇到此问题的人,只需尝试清除缓存:

    php bin/console cache:clear
    

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 2013-04-25
      • 1970-01-01
      • 2013-11-28
      • 2018-10-08
      • 2016-12-16
      • 2019-12-12
      • 1970-01-01
      相关资源
      最近更新 更多