无法在Debian上为MariaDB重置root密码

时间:2020-08-25 15:29:49

标签: mysql linux security mariadb debian

OS-在Pi上 说明:Raspbian GNU / Linux 10(破坏者) 发布:10

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

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

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 vs套接字的评论,但是我不确定该如何解决这个问题。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

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

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

因此,简单的sudo mysql -uroot应该可以以root用户身份进行连接。