访问被拒绝用户'root'@'localhost'(使用密码:YES)(Mysql :: Error)

问题描述:

我试图在我的服务器上部署web应用程序,我得到这个mysql数据库异常 “Access denied for user' root'@'localhost'(使用密码:YES)(Mysql :: Error)“访问被拒绝用户'root'@'localhost'(使用密码:YES)(Mysql :: Error)

我试图从命令提示符使用mysql -u root -p访问数据库我能够执行所有数据库操作。

什么是错误

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771) 
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3649) 
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1176) 
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558) 
    at com.mysql.jdbc.Connection.<init>(Connection.java:1485) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) 
    at java.sql.DriverManager.getConnection(DriverManager.java:620) 
    at java.sql.DriverManager.getConnection(DriverManager.java:200) 
    at com.mpigeon.DbConnection.DbConn(DbConnection.java:26) 
    at com.mpigeon.CheckLoginHome.doGet(CheckLoginHome.java:39) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
+1

假设您使用的是JDBC,是否可以提供完整的错误消息(SQLException.getMessage())和堆栈跟踪? – Daniel 2011-05-21 11:18:28

+1

连接字符串的密码错误 尝试mysql -u root -h localhost -p – 2011-05-21 11:27:51

+0

@Daniel:我发布了错误信息请亲切看看,并且善意帮助我 – 2011-05-21 12:18:28

您需要授予从本地主机访问到根。检查this Ubuntu的帮助

+0

我有同样的问题,这个问题。但我已授予访问我的用户,我继续相同的问题:( – jjmartinez 2014-01-04 23:03:31

+6

Yakshemash!如果它发生在Windows 7,64位如何做到这一点? – 2014-04-24 18:18:44

+0

如何mac os x? – www139 2015-01-27 04:56:28

检查你是在密码的空白处。

我的应用程序使用Mura CMS,我遇到了这个问题。但解决方案是我的mysql本地服务器和配置文件中的密码之间的密码不匹配。只要我将它们同步,它就可以工作。

尝试使用root如..

mysql -uroot 

,那么你可以检查不同的用户和主机,你登录使用

select user,host,password from mysql.user; 

后,我通过删除空的用户通过MySQL中创建解决了这个问题。我只有root用户和我自己的用户。我删除了其余的。

更新在MySQL

use mysql; 
select host,user,password from mysql.user; 
update mysql.user set password = PASSWORD('123456') where password = ''; 
flush privileges; 
+0

对我没有帮助 – CodyBugstein 2014-06-09 22:40:14

+1

请注意,您在此显示的WHERE条款将重置所有没有用户的用户的密码,而不仅仅是root用户(即'WHERE User ='root''也许?) – 2014-08-09 04:14:11

+0

登录只是为了说这是唯一适合我的解决方案! – 2016-07-09 22:40:15

更新用户MySQL的 DB的表mysql.user空密码。并设置一些密码,它是空白的,我使用root用户,所以我设置root用户的密码。

update mysql.user set password = PASSWORD('123456') where password = ''; 
flush privileges; 

然后再次尝试从ATG CIM通过提供密码,它工作正常。

After update

http://i.stack.imgur.com/3Lchp.png

+1

请注意,您在此显示的WHERE条款将重置所有用户的密码没有一个,不只是root用户(即'WHERE User ='root''也许?) – 2014-08-09 04:13:21

而安装的SugarCRM(免费CRM)今天我这个问题。

系统无法使用root用户连接到数据库。我可以从控制台以root身份明确登录......那么问题是什么?

我发现在我的情况下,我得到了完全相同的错误,但那是因为密码直接从$_POST数据发送到mysql,换句话说,我的密码中的<字符被发送到mysql因为&lt;这意味着密码错误。

其他一切都没有帮助。 mysql中的用户列表是正确的,包括匿名用户(出现在root项后面)。

将MySQL服务器从5.1.73升级到5.5后,我遇到了同样的错误。45 还有另一种方法来解决这个错误。

在我的情况下,我能够使用root密码连接到MySQL,但MySQL主动拒绝将GRANT PRIVILEGES授予任何用户;

  1. 连接到MySQL作为根

    mysql -u root -p 
    

    然后输入您的MySQL root密码;

  2. 选择数据库;

    use mysql; 
    
  3. 最有可能是在mysql.user表允许只从localhost连接根只有一条记录(这是在我的情况),但是默认的应该有两个记录的根,一个为localhost和另一一个用于127.0.0.1;

  4. 为根用户创建更多记录,如果Host='127.0.0.1'不存在,

    SET @s = CONCAT('INSERT INTO mysql.user SELECT ', 
          REPLACE((SELECT GROUP_CONCAT(COLUMN_NAME) 
            FROM INFORMATION_SCHEMA.COLUMNS 
            WHERE TABLE_NAME = 'user' AND TABLE_SCHEMA = 'mysql') 
          ,"Host","'127.0.0.1'"), 
          ' FROM mysql.user WHERE User="root"'); 
    
        PREPARE stmt FROM @s; 
        EXECUTE stmt; 
    
  5. 此外到可以执行mysql_upgrade -u -p ,看看是否一切正常。

我GOOGLE了很多,但没有找到一个明确的答案我的问题。我使用KeyPass生成一个强大的密码,并且可以在mysql工作台上成功使用它来连接,但不能从命令行连接。所以我将psw改成了一个简单的命令行,并在命令行上运行。我设法创建了一个能够从终端连接的强密码。所以我的建议是,在尝试所有类型的事情之前先尝试一个简单的密码。

我正在运行UT并开始接收错误消息。我不确定是什么问题。但是当我将INTELLIJ中的编码风格更改为UTF8时,它再次开始工作。

拒绝访问用户 '根' @ 'localhost' 的(使用密码是) 冬眠

这是我的网址 = db.url配置参数的jdbc:mysql的://本地主机:3306/somedb ?了useUnicode =真& connectionCollat​​ion = utf8_general_ci & characterSetResults = UTF8 &的characterEncoding = UTF8