SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES) 是Symfony2中的错误提示,意思是用户'root'@'localhost'被拒绝访问,无法使用密码登录。

13

我尝试使用以下命令在Symfony2中创建我的数据库:

php app/console doctrine:create:database

结果是:

无法为名为jobeet的连接创建数据库 SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

我的app/config/parameters.yml文件的内容如下:

parameters:
   database_driver:   pdo_mysql
   database_host:     127.0.0.1
   database_port:     ~
   database_name:     jobeet
   database_user:     root
   database_password: 0000

   mailer_transport:  smtp
   mailer_host:       127.0.0.1
   mailer_user:       ~
   mailer_password:   ~

   locale:            fr
   secret:            ThisTokenIsNotSoSecretChangeIt

我的操作系统是Ubuntu。

我不知道该怎么做才能解决这个问题。


6
“Access denied for user 'root'@'localhost' (using password: YES)” 是 MySQL 连接错误,通常意味着用户名或密码无效。有时需要使用 localhost 而不是 127.0.0.1 才能正常工作。请注意,此处仅为翻译,不提供任何解释或其他内容。 - Ryan
1
密码是否在引号中? - Emii Khaos
8个回答

12

尝试使用以下命令通过终端登录:

mysql -u root -p

接下来它会提示您输入密码。如果失败,则用户名或密码肯定不正确。如果成功,则需要将数据库的密码用引号括起来:

database_password: "0000"

2
我可以通过终端登录到我的MySQL服务器。我不认为问题出在用户名和密码上。我尝试了2个小时创建我的数据库,但没有结果。 - mentaga
在这种情况下,请尝试设置:database_port: '3306'。 - Pier-Luc Gendreau
3
我添加了端口号3306,但仍然存在相同的问题。 - mentaga
显然,在您的根Laravel文件夹中,还要检查您的.env文件的数据库配置变量。 - Elliot Robert

6

我不知道确切原因是什么,但我通过运行以下命令解决了这个问题:

   app/console cache:clear --env=prod

4

在你的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 的值应该用双引号或单引号括起来,例如:"your_password"'your_password'

我发现大多数用户遇到此错误是因为他们使用带前导零或数字值的密码。


1
确实,@Nadun Liyanage是正确的,密码数据库应该像这样放在""中,例如"0000",因为它是一个字符串。 - french_dev
他确实是正确的。哇,谢谢!奇怪的是Symfony 3的内置服务器接受没有引号的内容。但是在使用nginx时,我真的需要这些引号,否则它不起作用-->访问被拒绝的用户问题。 - Melroy van den Berg

2

好的,这可能不能解决您的问题,但肯定能帮到我。

所以,您已经创建了您的Mysql用户了吧?在PhpMyAdmin上进入用户权限,点击编辑操作并找到您用于Symfony的用户。向下滚动到接近底部的位置,在它显示您想要使用的主机的位置上,请确保选择了 LocalHost 而不是 % Any。

然后在您的配置文件中将 127.0.0.1 替换为 localhost。希望这对您有用。因为我也曾遇到相同的问题,所以这刚好解决了我的问题。


2

您需要将root@localhost的密码设置为空。有两种方法:

  • The MySQL SET PASSWORD command:

    SET PASSWORD FOR root@localhost=PASSWORD('');
    
  • Using the command-line mysqladmin tool:

    mysqladmin -u root -pCURRENTPASSWORD password ''
    

0

我曾经遇到过类似的问题,无法连接到OpenSUSE 13.1 MySQL数据库,使用LibreOffice。更新LibreOffice到最新的稳定版本“Still”,然后确保可以使用诸如phpMyAdmin之类的工具访问数据库。确保您的用户链接到本地主机而不是“%”(任何)。这对我有用,我能够通过LibreOffice添加数据。

顺便说一句 - LibreOffice Base在第一次尝试时不会提供MySQL的“本地连接”,您需要使用返回按钮,然后再次尝试以查看选项。

希望这可以帮助到您。


0

可能是因为用户名和密码不是你所认为的。如果你的域名提供商在购买时向你发送了凭证邮件,那么其中的用户名和密码就是正确的。不是你通过cPanel或PHPmyAdmin/SQL等设置的那些。这将是该域名的cPanel密码。


0

我曾经遇到同样的问题,通过将127.0.0.1更改为localhost来解决它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接