设置、更改和重置MySQL和MariaDB root密码
本教程介绍如何设置、更改和重置(如果忘记了密码)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