无法为设置密码root@localhost在mysql中

无法为设置密码root@localhost在mysql中,mysql,Mysql,我尝试了从Google获得的各种选项,但无法为根目录设置密码。我可以不使用任何密码登录,但是Java驱动程序需要密码,所以我必须设置密码 在上一次尝试中,我在MySQL控制台中尝试了以下命令: SET PASSWORD FOR root@localhost=PASSWORD('abc123'); 但我犯了以下错误: ERROR 1133 <42000>: Can't find any matching row in the user table 错误1133:在用户表中找不到任何

我尝试了从Google获得的各种选项,但无法为
根目录设置密码。我可以不使用任何密码登录,但是Java驱动程序需要密码,所以我必须设置密码

在上一次尝试中,我在MySQL控制台中尝试了以下命令:

SET PASSWORD FOR root@localhost=PASSWORD('abc123');
但我犯了以下错误:

ERROR 1133 <42000>: Can't find any matching row in the user table
错误1133:在用户表中找不到任何匹配行

可能是
localhost
的用户
root
不存在。可通过以下方式添加此帐户:

CREATE USER 'root'@'localhost' IDENTIFIED BY 'abc123';

在MySQL中,每个用户都由用户名和主机唯一标识,这意味着
root@localhost
root@127.0.0.1
root@%
(例如)。可能是您没有
root@localhost
您试图为其设置密码的用户

仔细检查
mysql中实际有哪些用户。user
表:

SELECT * FROM mysql.user WHERE user = 'root';
如果要创建缺少的用户,请使用以下语句:

CREATE USER root@localhost IDENTIFIED BY 'abc123';
GRANT ALL PRIVILEGES ON *.* TO root@localhost;

在终端中输入以下行

停止MySQL服务器

sudo/etc/init.d/mysql stop

启动mysqld配置。(在安全模式下)

以root用户身份登录MySQL

mysql -u root mysql
用新密码替换新密码

UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root'; 
FLUSH PRIVILEGES; 
exit;
sudo/etc/init.d/mysql start

参考文献:


您以什么用户身份登录?root?是的,我以root身份登录,但没有密码。还有一件事我忘记了,我已经安装了wampthanks,但是这个命令导致了另一个错误:拒绝访问:您需要(至少一个)创建用户权限来执行此操作。谢谢!更新
mysql
user
表直接对我有效,而
SET PASSWORD for..
无法找到匹配的行。
UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root'; 
FLUSH PRIVILEGES; 
exit;