设置、更改和重置MySQL和MariaDB root密码

时间:2019-04-29 03:17:15  来源:igfitidea点击:

本教程介绍如何设置、更改和重置(如果忘记了密码)MySQL或MariaDBroot密码。

mysql报错:mysqladmin:connect to server at'localhost'失败错误:“拒绝用户'root'@'localhost'(使用密码:YES')的访问。”。
mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)'

如果我们在寻找如何重置MySQLroot密码的快速修复方法,我们可以在本教程中找到它。本教程兼容所有主要的Linux发行版,包括CentOS、Debian、Fedora和Ubuntu。

使用mysqladmin命令更改root密码

第一次设置root密码

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

mysqladmin -u root password newpass

如果要将root密码更改(或更新)为新密码“ newpass”,则需要使用以下命令:

mysqladmin -u root -p password newpass

Enter password:

如果提示:

mysqladmin: connect to server at 'localhost' failed

error: 'Access denied for user 'root'@'localhost' (using password: YES)'

然后按照下面关于如何恢复MySQL密码的说明进行操作。

上面例子中的单词“ password是命令的一部分,不要用密码替换它。单词'[newpass]'是新密码。

第一次设置MySQL或MariaDBroot密码时使用mysqladmin命令的另一种方法是使用mysql_secure_installation命令。这个命令不仅会询问新旧MySQL root密码,还将执行其他一些安全设置,例如禁用测试数据库。

下面是如何使用该命令:

mysql_secure_installation

回答如下问题:

Change the root password? [Y/n] <-- y

New password: <--  输入mysql root用户的新密码

Re-enter new password: <--  再次输入同一密码

Remove anonymous users? [Y/n] <-- y

Disallow root login remotely? [Y/n] <-- y

Remove test database and access to it? [Y/n] <-- y

Reload privilege tables now? [Y/n] <-- y 

以上答案为建议,我们可以自由选择其他设置,例如,当我们希望保留测试数据库或需要远程访问root用户时。注意:远程使用PHPMyAdmin不需要远程访问。

为其他用户更改MySQL密码

要更改普通用户密码,我们需要键入:

mysqladmin -u user-name -p password newpass

本例中的变量:

user-name:要更改其密码的用户的用户名。

newpass:新密码

“password”不是变量,因此不要替换它。命令将询问旧密码。

更新或更改密码

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

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

mysql -u root -p

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

mysql> use mysql;

3) 更改用户密码:

MySQL5.7.5及更低版本

mysql> update user set password=PASSWORD("newpass") where User='用户名';

MySQL5.7.6及更新版本

mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");

4) 重新加载权限:

mysql> flush privileges;

mysql> quit

恢复丢失的MySQL root密码

Mysql root密码忘记了,需要重置,
可以用以下五个简单的方法恢复MySQL数据库服务器的密码步骤:

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

  • 步骤 2:使用--skip grant tables选项启动MySQL(mysqld)服务器/守护进程,这样它就不会提示输入密码。

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

  • 步骤 4:设置新的root密码。

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

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

1:停止MySQL服务:

service mysql stop

2:启动MySQL服务器,不带密码:

mysqld_safe --skip-grant-tables &

3:使用MySQL客户端连接到MySQL服务器:

mysql -u root

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

MySQL5.7.5及更低版本

mysql> use mysql;

mysql> update user set password=PASSWORD("新的root密码") where User='root';

mysql> flush privileges;

mysql> quit

MySQL5.7.6及更新版本

mysql> use mysql;

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("新的root密码");

mysql> flush privileges;

mysql> quit

5:停止MySQL服务器:

service mysql stop

或者,如果上面的命令无法停止MySQL,可以使用这个命令停止它(哪个命令有效取决于MySQL版本):

killall mysqld

输出可能因Linux发行版而异。别担心,除非它报告错误。启动MySQL服务器并进行测试:

service mysql start

mysql -u root -p