如何在Ubuntu 18.04中重置MySQL root密码
在Ubuntu 18.04上安装MySQL时,我们将不会提示我们设置root用户密码,因此使用空密码创建的MySQL root用户。
但是根系系统用户可以在没有密码的情况下登录MySQL根控制台。
Ubuntu 18.04上的MySQL Server使用UNIX套接字插件默认验证MySQL root用户。
UNIX套接字也称为auth_socket身份验证插件使用OS凭据验证用户。
这意味着用户只能登录,如果操作系统用户名与客户端指定的MySQL用户名匹配。
如果我们已经登录了Ubuntu root用户帐户,则可以在没有密码的情况下登录MySQL root帐户。
这也意味着我们无法从常规Linux用户登录MySQL Root Console。
例如,Linux用户Hyman无法使用MySQL客户端登录MySQL root。
$whoami greg $mysql -u root ERROR 1698 (28000): Access denied for user 'root'@'localhost'
但是,如果用户Hyman有sudo权限,那么他可以使用sudo运行mysql命令并在没有密码的情况下登录Ubuntu MySQL root。
sudo mysql
因此,从安全性的角度来看,这是一个良好的实现,因为现在Ubuntu Linux系统的root帐户外部没有MySQL root访问权限。
但由于某种原因,如果要将密码设置为MySQL root,则从根系系统帐户登录MySQL控制台并运行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
注意:此处新密码是root密码,用强大的一个替换它。
从现在开始,我们需要输入密码以登录为MySQL Root和任何系统用户可以在知道密码时登录root帐户。
mysql -u root -p
请注意,本教程可能不适用于MariaDB服务器,对于MariaDB教程,请单击此链接。
如果忘记密码,请重置MySQL root密码
如果你的mysql root已经有密码,你会忘记它。
在这种情况下,我们必须重置MySQL root密码,有几种方法可以在Ubuntu 18.04上执行此操作。
最简单且最快的方法是将MySQL Server身份登录为Debian-sys-maint并更改root密码。
另一种方法是使用“--skip-grant-tables”方法。
Debian-sys-maint用户帐户是在Ubuntu上安装MySQL Server时自动创建的管理用户帐户,此用户可以完全访问所有数据库。
/etc/mysql/debian.cnf配置文件包含Ubuntu服务器上的Debian-sys-maint帐户的MySQL密码。
我们可以使用这些凭据登录Ubuntu MySQL Server。
要重置MySQL root密码,请先登录MySQL控制台作为Debian-sys-maint用户:
sudo mysql --defaults-file=/etc/mysql/debian.cnf
运行ALTER USER命令,如下所述更改MySQL root密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';
现在,我们应该能够使用新密码登录根控制台。
我们可以看到使用Debian-Sys-Maint用户重置MySQL root密码,非常简单和简单。
但是,如果它不适用于我们,请使用-skip-grant-tables另一种更改root密码。
使用--skip-grant-tables
在-skip-grant-table方法中,首先,我们停止MySQL Server并使用-skip-grant-tables选项启动服务器,允许我们在没有密码的情况下登录root console。
然后我们登录根控制台并更改密码。
所以这里如何完成。
停止MySQL Server:
sudo systemctl stop mysql.service
create/var /运行/mysqld /目录:
sudo mkdir -p /var/run/mysqld/ sudo chown mysql:mysql /var/run/mysqld/ sudo chmod 755 /var/run/mysqld/
仅使用mysqld命令使用mysqld命令--skip-grant-tables选项启动mysql server:
sudo mysqld --skip-grant-tables &
简单地发出mysql命令登录mysql控制台:
mysql
运行刷新权限以重新加载授权并使用ALTER USER命令重置root用户的密码:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass';
退出MySQL控制台,杀死MySQLD进程并使用SystemCtl命令启动MySQL:
sudo pkill mysqld sudo systemctl start mysql.service
现在,我们应该能够使用新密码连接到Ubuntu上的MySQL Root。
-skip-grant-tables启动MySQL Server而不为所有用户的密码,这就是我们能够在不提供密码的情况下登录的原因。