如何在Ubuntu 18.04/Ubuntu 16.04上重置MySQL根密码

时间:2020-02-23 14:32:14  来源:igfitidea点击:

由于某些原因,我们可能忘记了MySQL的root密码,需要重新设置。请按照本教程在Ubuntu 18.04或者16.04服务器上重置MySQL根密码。本教程适用于在任何Linux服务器上运行的MySQL的任何版本。

停止mysql服务

在重置密码之前,我们需要停止mysql服务并以安全模式启动守护程序:

$sudo systemctl stop mysql

对于CentOS 7服务器,将mysqld替换为mysqld作为服务名称:

$sudo systemctl stop mysqld

使用mysqld_safe启动MySQL服务

服务停止后,运行命令mysqld_safe,它添加了一些安全功能,例如在发生错误时重新启动服务器,以及将运行时信息记录到错误日志中。

$sudo mysqld_safe --skip-grant-tables &
[1] 32595
2016-06-26T07:14:43.206936Z mysqld_safe Logging to syslog.
2016-06-26T07:14:43.213306Z mysqld_safe Logging to '/var/log/mysql/error.log'.
180626 07:20:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

重设MySQL root密码

使用没有密码的root用户登录MySQL:

$mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.7-MariaDB-1:10.3.7+maria~bionic mariadb.org binary distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

切换到mysql数据库并重置root密码:

MySQL [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [mysql]> update user set password=PASSWORD("newpassword") where User='root';
Query OK, 3 rows affected (0.000 sec)
Rows matched: 3 Changed: 3 Warnings: 0

MySQL [mysql]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

MySQL [mysql]> quit
Bye

停止并启动MySQL服务

停止并启动mysql服务,以恢复正常的数据库操作。

sudo systemctl stop mysql
sudo systemctl start mysql

对于其他任何用户,请使用以下语法重置密码:

[mysql]> update user set password=PASSWORD("password") where User='username';

要获取系统中所有用户的列表,请使用:

SELECT User, Host, Password FROM mysql.user;

使用提供的用户名和密码连接到MySQL数据库。