10

我在我的 linux 服务器上安装了一个 MySQL,我忘记了它的密码,所以我去使用我在网上找到的方法更改它。我所做的如下:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql --user root mysql
SELECT * FROM user; // I checked if I could access the user table or not
update user SET password = PASSWORD('new_pass') WHERE user = 'root';
flush privileges;
exit

更新查询确实更改了密码,因为它向我显示了受影响的行数和 Query OK 等。

然后我重新启动了mysql

/etc/init.d/mysql stop
/etc/init.d/mysql start

现在当我用新密码登录时

mysql -u root -p new_pass

它仍然给我错误 “错误1045(28000):用户'root'@'localhost'的访问被拒绝(使用密码:是)”

有什么我想念的吗?

4

10 回答 10

17

我能够通过执行这个语句来解决这个问题

sudo dpkg-reconfigure mysql-server-5.5

这将更改root密码。

于 2014-03-17T11:28:33.713 回答
7

你必须重设密码!mac osx(经过测试和工作)和 ubuntu 的步骤

停止 MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop

以安全模式启动它:

$ sudo mysqld_safe --skip-grant-tables

(上面是整个命令)

这将是一个持续的命令,直到进程完成,因此打开另一个 shell/终端窗口,无需密码登录:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

启动 MySQL

sudo /usr/local/mysql/support-files/mysql.server start

您的新密码是“密码”。

于 2014-11-12T01:56:02.587 回答
4

我有同样的问题。你必须写mysql -u root -p

不是mysqlmysql -u root -p root_password

于 2015-04-27T23:21:02.530 回答
3

我遇到了同样的问题,@ progrAmmar启发了我,“仔细查看了 mysql 数据库中的用户表”。

我的问题不是ssl_type,而是第一个字段:<strong>Host. 我通过使用更改了值

update user set Host='localhost' where User='root' and Host='%';

mysqld_safe --skip-grant-tables模型中。

然后它运作良好。

于 2015-07-13T11:42:45.047 回答
3

您可能需要清除plugin您的根帐户的列。在我的全新安装中,所有 root 用户帐户都已unix_socketplugin列中设置。这导致 root sql 帐户仅被锁定到 root unix 帐户,因为只有系统 root 可以通过套接字登录。

如果你update user set plugin='' where User='root';flush privileges;,你现在应该能够从任何 localhost unix 帐户(使用密码)登录到 root 帐户。

有关更多详细信息,请参阅此 AskUbuntu 问题和答案

于 2015-07-31T15:21:03.250 回答
3

在 mac os 上,请按照以下步骤操作:

停止 MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop 以安全模式启动它:

$ sudo mysqld_safe --skip-grant-tables (上面是整个命令)

这将是一个持续的命令,直到进程完成,因此打开另一个 shell/终端窗口,无需密码登录:

$ mysql -u 根

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root'; 启动 MySQL

sudo /usr/local/mysql/support-files/mysql.server start 你的新密码是'password'。

于 2016-01-27T07:12:32.227 回答
2

就我而言:

  1. /etc/init.d/mysql 停止
  2. mysqld_safe --skip-grant-tables &

(在新窗口中)

  1. mysql -u 根目录
  2. mysql>使用mysql;
  3. mysql> 更新用户集 authentication_string=password('password') where user='root';
  4. mysql>刷新权限;
  5. mysql>退出
  6. /etc/init.d/mysql 重启
于 2016-06-22T09:25:26.967 回答
0

实际上,我仔细查看了 mysql 数据库中的用户表,结果发现有人在我之前将用户 root 的 ssl_type 字段编辑为 SSL。

我编辑了那个字段并重新启动了 mysql,它就像一个魅力。

谢谢。

于 2013-10-24T05:35:50.183 回答
0

可能当前用户不是root,试试 sudo mysql -uroot -p ,我刚才成功了。

于 2020-08-14T04:03:23.317 回答
-1

你可以试试这个解决方案:-

要让 mysql 要求您输入密码,您还需要指定 -p 选项:(尝试在 -p 和密码之间使用空格)

mysql -u root -p new_password

MySQLl 访问被拒绝

第二个链接中,有人评论了同样的问题。

于 2013-10-23T05:59:45.433 回答