我试图在我的服务器上部署web应用程序,我得到了这个mysql数据库异常 Access denied for user 'root'@'localhost' (using password: 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)
14条答案
按热度按时间hujrc8aj1#
在mysql数据库中更新用户表。在空白处设置一些密码,我使用的是root用户,所以我为root用户设置了密码。
然后再次尝试从atgcim提供密码,它工作得很好。
http://i.stack.imgur.com/3lchp.png
9rbhqvlz2#
检查密码是否有空格。
v8wbuo2f3#
更新mysql的mysql.user表中的空密码
vvppvyoh4#
如果在安装时没有设置密码,则会发生此错误,在本例中是使用unix套接字插件的mysql。
但如果从settings(表mysql.user)中删除插件链接,则会出现其他问题。这并不能解决问题,还会产生另一个问题。要修复已删除的链接并设置密码(“pwd”),请执行以下操作:
1) 运行--skip grant表,如上所述。
如果不起作用,那么在/etc/mysql/mysql.conf.d/mysqld.cnf的[mysqld]部分添加字符串skip grant表。然后重新启动sudo服务mysql。
2) 运行mysql-u root-p,然后(更改“pwd”):
在重新启动之前,如果在mysqld.cnf文件中设置了该字符串,请将其删除。
@bl79是这个答案的作者,我刚刚转载了它,因为它确实有帮助!
doinxwow5#
在将mysql服务器从5.1.73升级到5.5.45之后,我也遇到了同样的错误,还有另一种方法可以修复这个错误。
在我的例子中,我可以使用root密码连接到mysql,但是mysql主动拒绝向任何用户授予特权;
以根用户身份连接到mysql
然后输入mysql root密码;
选择数据库;
很可能只有一个根目录记录
mysql.user
只允许从连接的表localhost
(在我的例子中是这样的)但是默认情况下,root应该有两个记录,一个是localhost
再来一个给你127.0.0.1
;为根用户创建附加记录
Host='127.0.0.1'
如果它不在那里;除此之外,您还可以执行
mysql_upgrade -u -p
看看是否一切正常。zphenhs46#
您需要从localhost授予对root的访问权。查看此ubuntu帮助
46scxncf7#
在msyql中添加用户选项。
这个链接会很有用。
ibrsph3r8#
我在谷歌上搜索了很多,但没有找到我的问题的确切答案。我使用keypass生成了一个强密码,可以在mysql工作台上成功地使用它进行连接,但不能从命令行使用。所以我把psw改成了一个简单的命令行。我已经设法创建了一个强大的密码,能够从终端连接。所以我的建议是,在尝试所有的事情之前,先尝试一个简单的密码。
wztqucjr9#
我今天在安装sugarcrm(一个免费的crm)时遇到了这个问题。
系统无法使用根用户连接到数据库。我可以从控制台以root身份登录。。。那么问题出在哪里?
我发现在我的情况下,我得到了完全相同的错误,但那是因为密码是直接从
$_POST
换句话说,数据<
我的密码中的字符作为<
也就是说密码错了。其他一切都毫无帮助。mysql中的用户列表是正确的,包括匿名用户(出现在根条目之后)
v6ylcynt10#
我正在运行uts,开始收到错误消息。我不确定是什么问题。但是当我把intellij中的编码风格改为utf8时,它又开始工作了。
拒绝访问用户“root”@“localhost”(使用密码“是”)hibernate
这是我的url db.url=jdbc:mysql://localhost:3306/somedb?useunicode=true&connectioncollation=utf8_general_ci&charactersetresults=utf8&characterencoding=utf8
e37o9pze11#
我通过删除mysql创建的空用户来解决这个问题。我只有根用户和我自己的用户。我把剩下的删掉了。
wbrvyc0a12#
从我的回答来看,我认为这可能有用:
我尝试了许多步骤来纠正这个问题。对于这个问题,有太多可能的解决办法,很难从这些无稽之谈中剔除其意义。我终于在这里找到了一个好办法:
步骤1:识别数据库版本
在mysql中,您将看到如下输出:
或输出如下:
记下正在运行的数据库和版本,以便以后使用。接下来,您需要停止数据库,以便手动访问它。
步骤2:停止数据库服务器
要更改根密码,必须事先关闭数据库服务器。
对于mysql,您可以使用:
对于mariadb来说:
步骤3:在没有权限检查的情况下重新启动数据库服务器
如果您运行mysql和mariadb而不加载有关用户权限的信息,它将允许您使用root权限访问数据库命令行,而不提供密码。这将允许您在不知情的情况下访问数据库。
为此,需要停止数据库加载grant表,这些表存储用户权限信息。因为这有点安全风险,所以您也应该跳过网络,以防止其他客户端连接。
在不加载授权表或启用网络的情况下启动数据库:
此命令末尾的符号将使此进程在后台运行,以便您可以继续使用终端。
现在您可以以root用户身份连接到数据库,而root用户不应要求输入密码。
您将立即看到一个数据库shell提示符。
mysql提示
mariadb提示
现在您有了根访问权限,可以更改根密码了。
第4步:更改根密码
现在我们可以更改根密码了。
对于MySQL5.7.6和更新版本以及Mariadb10.1.20和更新版本,请使用以下命令:
对于mysql 5.7.5及更高版本以及mariadb 10.1.20及更高版本,请使用:
一定要更换
new_password
使用您选择的新密码。注:如果
ALTER USER
命令不起作用,它通常意味着一个更大的问题。不过,你可以试试UPDATE ... SET
重置根密码。[重要提示]这是解决我的特定问题的具体路线:
记住在此之后重新加载grant表。
无论哪种情况,您都应该看到命令已成功执行的确认。
密码已更改,因此现在可以停止数据库服务器的手动示例,并像以前一样重新启动它。
第五步:正常重启数据库服务器
本教程进一步介绍了重新启动数据库的步骤,但我使用的唯一一个步骤是:
对于mysql,使用:$sudo systemctl start mysql
对于mariadb,使用:
现在,您可以通过运行以下命令来确认新密码已正确应用:
命令现在应该提示输入新分配的密码。输入它,您应该可以按预期访问数据库提示符。
结论
现在您可以对mysql或mariadb服务器进行管理访问。确保您选择的新根密码是强大和安全的,并将其保存在安全的地方。
vwoqyblh13#
我的应用程序使用的是mura-cms,我面临这个问题。但是,解决方案是mysql本地服务器和配置文件中的密码不匹配。我一同步就成功了。
dffbzjpn14#
尝试使用
root
就像。。然后,您可以在使用登录后检查不同的用户和主机