密码重置LINUX后,用户'root'@'localhost'访问被拒绝(使用密码:是)

时间:2013-10-23 05:26:30

标签: mysql linux configuration

我在我的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

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

然后我重新启动了mysql

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

现在我使用新密码登录

mysql -u root -p new_pass

它仍然给我错误 " ERROR 1045(28000):拒绝访问用户&root;' @' localhost' (使用密码:是)"

我有什么遗失的东西吗?

11 个答案:

答案 0 :(得分:17)

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

sudo dpkg-reconfigure mysql-server-5.5

这将更改root密码。

答案 1 :(得分:10)

您可以通过以下五个简单步骤恢复MySQL数据库服务器密码。 以下是您需要为每个步骤键入的命令(以root用户身份登录):

步骤1:停止mysql服务

/etc/init.d/mysql stop

<强>输出:

Stopping MySQL database server: mysqld.

步骤#2:启动没有密码的MySQL服务器:

mysqld_safe --skip-grant-tables &

<强>输出:

[1] 5988

Starting mysqld daemon with databases from /var/lib/mysql

mysqld_safe[6025]: started

步骤3:使用mysql客户端连接到mysql服务器:

mysql -u root

<强>输出:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

步骤#4:设置新的MySQL root用户密码

mysql> use mysql;

mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';

mysql> flush privileges;

mysql> quit

步骤#5:停止MySQL服务器:

/etc/init.d/mysql stop

<强>输出:

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

步骤#6:启动MySQL服务器并对其进行测试

/etc/init.d/mysql start

mysql -u root -p

答案 2 :(得分:6)

您必须重置密码! 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

您的新密码是&#39;密码&#39;。

答案 3 :(得分:3)

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

不是mysqlmysql -u root -p root_password

答案 4 :(得分:3)

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

我的问题不是 ssl_type ,而不是第一个字段:主机。我使用

更改了值

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

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

然后它运作良好。

答案 5 :(得分:3)

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

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

有关详细信息,请参阅this AskUbuntu question and answer

答案 6 :(得分:2)

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

停止MySQL

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

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

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

$ mysql -u root

的MySQL&GT; UPDATE mysql.user SET Password = PASSWORD(&#39; password&#39;)WHERE User =&#39; root&#39 ;; 启动MySQL

sudo /usr/local/mysql/support-files/mysql.server start 您的新密码是&#39;密码&#39;。

答案 7 :(得分:2)

就我而言:

  1. /etc/init.d/mysql stop
  2. mysqld_safe --skip-grant-tables&amp;
  3. (在新窗口中)

    1. mysql -u root
    2. MySQL的&GT;使用mysql;
    3. MySQL的&GT;更新用户集authentication_string = password('password')其中user ='root';
    4. mysql&gt; flush特权;
    5. MySQL的&GT;退出
    6. /etc/init.d/mysql restart

答案 8 :(得分:0)

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

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

感谢。

答案 9 :(得分:0)

也许当前用户不是root用户,请尝试sudo mysql -uroot -p,我刚刚成功。

答案 10 :(得分:-1)

您可以尝试此解决方案: -

要让mysql询问您的密码,您还需要指定-p-option :(尝试使用-p和密码之间的空格)

mysql -u root -p new_password

MySQLl access denied

Second link中有人评论了相同的问题。