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

pro*_*mar 10 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
Run Code Online (Sandbox Code Playgroud)

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

然后我重新启动了mysql

/etc/init.d/mysql stop
/etc/init.d/mysql start
Run Code Online (Sandbox Code Playgroud)

现在,当我使用新密码登录时

mysql -u root -p new_pass
Run Code Online (Sandbox Code Playgroud)

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

有什么东西我错过了吗?

小智 17

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

sudo dpkg-reconfigure mysql-server-5.5
Run Code Online (Sandbox Code Playgroud)

这将更改root密码.


小智 13

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

第一步:停止mysql服务

/etc/init.d/mysql stop
Run Code Online (Sandbox Code Playgroud)

输出:

Stopping MySQL database server: mysqld.
Run Code Online (Sandbox Code Playgroud)

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

mysqld_safe --skip-grant-tables &
Run Code Online (Sandbox Code Playgroud)

输出:

[1] 5988

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

mysqld_safe[6025]: started
Run Code Online (Sandbox Code Playgroud)

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

mysql -u root
Run Code Online (Sandbox Code Playgroud)

输出:

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>
Run Code Online (Sandbox Code Playgroud)

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

mysql> use mysql;

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

mysql> flush privileges;

mysql> quit
Run Code Online (Sandbox Code Playgroud)

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

/etc/init.d/mysql stop
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

步骤#6:启动MySQL服务器并测试它

/etc/init.d/mysql start

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

  • 在第3步中,我收到“错误1698(28000):对用户'root'@'localhost'`的访问被拒绝,这是我首先遇到的问题 (2认同)

tk_*_*tk_ 6

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

停止MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop
Run Code Online (Sandbox Code Playgroud)

以安全模式启动它:

$ sudo mysqld_safe --skip-grant-tables
Run Code Online (Sandbox Code Playgroud)

(上面的行是整个命令)

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

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
Run Code Online (Sandbox Code Playgroud)

启动MySQL

sudo /usr/local/mysql/support-files/mysql.server start
Run Code Online (Sandbox Code Playgroud)

您的新密码是"密码".


pro*_*mar 0

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

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

谢谢。