设置,更改和重置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