我试图在我的服务器上部署Web应用程序,我得到这个MySQL数据库exception“访问拒绝用户'根'@'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)
您需要授予从本地主机的根权限。 检查这个 Ubuntu的帮助
尝试使用root
喜欢..
mysql -uroot
那么您可以通过使用登录后检查不同的用户和主机
select user,host,password from mysql.user;
检查你是在密码的空白处。
在将MySQL服务器从5.1.73升级到5.5.45之后,我遇到了同样的错误还有另一种方法来修复这个错误。
在我的情况下,我能够使用root密码连接到MySQL,但MySQL主动拒绝授予任何用户的特权;
以root身份连接到MySQL
mysql -u root -p
然后输入你的MySQL root密码;
选择数据库;
use mysql;
最有可能只有一个记录在mysql.user
表中只允许从localhost
连接(这是我的情况),但默认情况下,应该有两个记录的根,一个localhost
和另一个为127.0.0.1
;
如果Host='127.0.0.1'
不存在,则为Host='127.0.0.1'
root用户创建额外的记录;
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;
除此之外,你可以执行mysql_upgrade -u -p
来查看是否一切正常。
我的应用程序使用Mura CMS,我遇到了这个问题。 但是解决方案是我的mysql本地服务器和配置文件中的密码之间的密码不匹配。 只要我同步他们的工作。
我通过删除由MySQL创建的空用户来解决这个问题。 我只有root用户和我自己的用户。 我删除了其余的。
更新mysql数据库中的用户表。 并设置一些密码,它是空白的,我使用root用户,所以我设置root用户的密码。
update mysql.user set password = PASSWORD('123456') where password = ''; flush privileges;
然后再次尝试从ATG CIM通过提供密码,它工作正常。
我在安装SugarCRM(一个免费的CRM)的时候遇到了这个问题。
系统无法使用root用户连接到数据库。 我可以确定地从控制台以root登录…那么问题是什么?
我发现在我的情况下,我得到了完全相同的错误,但那是因为密码是直接从$_POST
数据发送到mysql的,换句话说,我的密码中的<
字符被发送到mysql作为<
这意味着密码错误。
其他一切都没有帮助一点。 mysql中的用户列表是正确的,包括匿名用户(出现在root项之后)。
我GOOGLE了很多,但没有找到一个明确的答案我的问题。 我使用KeyPass生成一个强大的密码,并可以在mysql工作台上成功使用它,但不能从命令行连接。 所以我把psw改成了一个简单的命令行。 我设法创建了一个强大的密码,可以从终端连接。 所以我的建议是,先尝试一个简单的密码,然后再尝试所有的事情。
我正在运行UT,并开始收到错误消息。 我不知道是什么问题。 但是当我把INTELLIJ中的编码风格改为UTF8时,它又开始工作了。
访问被拒绝用户'root'@'localhost'(使用密码是)hibernate
这是我的网址db.url = jdbc:mysql:// localhost:3306 / somedb?useUnicode = true&connectionCollation = utf8_general_ci&characterSetResults = utf8&characterEncoding = utf8
更新mysql的表mysql.user中的空密码
use mysql; select host,user,password from mysql.user; update mysql.user set password = PASSWORD('123456') where password = ''; flush privileges;