无法在Debian上重置MariaDB的根密码



OS-在Pi上描述:Raspbian GNU/Linux 10(buster(版本:10

mysql(mariaDB(版本:mysql版本15.1 Distrib 10.3.22-MariaDB,用于debian-linux-gnueabihf(armv8l(,使用readline 5.2

通过这个问题的其他在线答案,我尝试了以下步骤:

sudo systemctl stop mysql.service
sudo ps aux | grep mysql
sudo mysqld_safe --skip-grant-tables --skip-networking &
sudo ps aux | grep mysql
mysql -u root
MariaDB [defaultDB]> use mysql;
MariaDB [mysql]> UPDATE user SET authentication_string = password("NEWPASSWORD") where User='root';

作为对这一关键变化的回应,我得到了以下结果:

查询正常,1行受影响(0.001秒(匹配的行:1已更改:1警告:0

然后我继续接下来的步骤:

MariaDB [mysql]> flush privileges;
MariaDB [mysql]> quit
sudo ps aux | grep mysql
mysqladmin shutdown
sudo ps aux | grep mysql
sudo systemctl start mysql.service
sudo ps aux | grep mysql

("sudo ps aux|grep mysql"命令当然是用来确认守护程序已经关闭,并且已经启动了正确的守护程序/状态(

然后我尝试使用我刚刚设置的密码登录mysql:

mysql -u root -p
Enter password:

我输入上面刚刚设置的密码,得到:

错误1044(42000(:拒绝用户'root'@'localhost'访问数据库"defaultDB">

我看到了一些关于TCP与套接字的评论,但如果这与问题有关,我不确定如何解决。我做错了什么?

首先,不要直接修改mysql.user表,而应该使用CREATEALTERDROP USER命令。在MariaDB的最新版本中,mysql.user是一个无法修改的视图。

在Debian上,套接字连接(localhost(的默认身份验证方法是通过unix_socket身份验证插件处理的:该插件允许它检索连接到套接字的进程的uid。然后它就可以获得与该uid相关联的用户名。一旦有了用户名,它就会将连接用户验证为具有相同用户名的MariaDB帐户。

因此一个简单的CCD_ 5应该作为根用户进行连接。

最新更新