设置,更改和重置MySQL根密码

设置,更改和重置MySQL根密码 本教程解释如何设置,更改和重置(如果你有 忘记密码)...

设置,更改和重置MySQL根密码

本教程介绍如何设置,更改和重置(如果您忘记密码)MySQL根密码。 一次又一次看到像mysqladmin这样的问题:连接到'localhost'的服务器失败的错误:'拒绝用户'root'@'localhost'(使用密码:YES)'访问。 所以我以为是时候提醒你如何解决MySQL相关的密码问题。 如果您只是想快速修复如何重置MySQL根密码,您可以在本教程的底部找到。

更改root密码的mysqladmin命令

方法1 - 首次设置root密码

如果您从未设置过MySQL的根密码,则服务器根本不需要密码才能以root身份连接。 要首次设置root密码,请在shell提示符下使用mysqladmin命令,如下所示:

$ mysqladmin -u root password newpass

如果要更改(或更新)根密码,则需要使用以下命令:

$ mysqladmin -u root -p oldpassword newpass

Enter password:

如果你得到...

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

然后按照以下说明如何恢复您的MySQL密码。

更改其他用户的MySQL密码

要更改正常的用户密码,您需要键入:

$ mysqladmin -u user-name -p oldpassword newpass

方法2 - 更新或更改密码

MySQL将用户名和密码存储在MySQL数据库的用户表中。 您可以使用以下方法直接更新密码来更新或更改密码:

1)登录到MySQL服务器,在shell提示符下键入以下命令:

$ mysql -u root -p

2)使用mysql数据库(在mysql>提示符下键入命令):

mysql> use mysql;

3)更改用户的密码:

mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

4)重新加载权限:

mysql> flush privileges;
mysql> quit

这种使用PHP或Perl脚本时需要使用的方法。

恢复MySQL root密码

您可以通过以下五个简单的步骤恢复MySQL数据库服务器密码:

第1步:停止MySQL服务器进程。

第2步:使用--skip-grant-tables选项启动MySQL(mysqld)服务器/守护程序进程,以使其不会提示输入密码。

第3步:以root用户身份连接到MySQL服务器。

第4步:设置新的root密码。

第5步:退出并重新启动MySQL服务器。

以下是每个步骤需要键入的命令(以root用户身份登录):

第1步:停止MySQL服务:

# /etc/init.d/mysql stop

输出:

Stopping MySQL database server: mysqld.

第2步:启动MySQL服务器w / o密码:

# 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

启动MySQL服务器并进行测试:

# /etc/init.d/mysql start
# mysql -u root -p