重置 mariadb 的 root 密码不起作用

2022-01-15 00:00:00 mariadb mysql

我正在尝试重置 mariadb 数据库的 root 密码,遵循了迄今为止我发现的每个教程变体,并且每次尝试使用新密码登录时,它都不接受它.

I am trying to reset the root password for a mariadb database, followed every variation of tutorial to do so I've found so far, and every time I try to log in with the new password, it does not accept it.

主要是我一直在做的:

mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root -e 'use mysql; update user SET PASSWORD=PASSWORD("jkjkjkjjk"); flush privileges;'

我还尝试在 udpate 命令之前添加一个额外的 flush 权限;,也将其从末尾删除,重置密码的不同变体,例如 为 'root'@'localhost' 设置密码 = PASSWORD('new_password');

I also tried adding an additional flush privileges; before the udpate command, removing it from the end as well, different variations for reset password, such as SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

如果相关,我正在使用 mariadb 和 galera,在 kubernetes statefulset 上运行.mariadb 的版本是 mysqld 10.3.21-MariaDB-1:10.3.21+maria~bionic

I am using mariadb with galera, running on kubernetes statefulset, if relevant. version of mariadb is mysqld 10.3.21-MariaDB-1:10.3.21+maria~bionic

我对此感到非常沮丧.

推荐答案

你要做的是:

用类似的东西停止mysql服务:

stop the mysql service with something like:

sudo systemctl stop mariadb

然后重启

sudo mysqld_safe --skip-grant-tables &

无密码登录

mysql -u root

更新密码

use mysql;
 update user SET PASSWORD=PASSWORD("password") WHERE USER='root';
 flush privileges;
 exit

正常重启数据库

sudo systemctl start mariadb

这假设您使用的是 linux 机器并且您可以访问 shell.请注意,在您的更新查询中,您还缺少 where 子句,以便您使用相同的密码更新所有用户!

This assuming you are using a linux machine and you have access to the shell. Note that in your update query you are also missing the where clause so that you are updating ALL your users with the same password!

相关文章