无法在 Debian 上为 MariaDB 重置 root 密码
Unable to reset root password for MariaDB on Debian
OS - 在 Pi 上
说明: Raspbian GNU/Linux 10 (克星)
发布:10
mysql (mariaDB) 版本:
mysql Ver 15.1 Distrib 10.3.22-MariaDB,用于 debian-linux-gnueabihf (armv8l) 使用 readline 5.2
通过对这个问题的其他在线回答,我尝试了以下步骤ps:
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
那我继续后面的steps:
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”命令当然在那里确认守护进程已经关闭并且正确的 ones/states 已经启动)
然后我尝试使用我刚刚设置的密码登录 mysql:
mysql -u root -p
Enter password:
我输入上面刚刚设置的密码得到:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to
database 'defaultDB'
我看到一些关于 TCP 与套接字的评论,但我不确定如何解决这个问题(如果这与问题有关)。我做错了什么?
首先,不要直接修改mysql.usertable,而是使用CREATE
、ALTER
或DROP USER
命令。在最新版本的 MariaDB 中,mysql.user
是一个无法修改的视图。
在 Debian 上,套接字连接 (localhost) 的默认身份验证方法是通过 unix_socket 身份验证插件处理的:该插件允许它检索连接到套接字的进程的 uid。然后它能够获取与该 uid 关联的用户名。获得用户名后,它会将连接用户验证为具有相同用户名的 MariaDB 帐户。
所以一个简单的 sudo mysql -uroot
应该可以作为 root 用户连接。
OS - 在 Pi 上 说明: Raspbian GNU/Linux 10 (克星) 发布:10
mysql (mariaDB) 版本: mysql Ver 15.1 Distrib 10.3.22-MariaDB,用于 debian-linux-gnueabihf (armv8l) 使用 readline 5.2
通过对这个问题的其他在线回答,我尝试了以下步骤ps:
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
那我继续后面的steps:
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”命令当然在那里确认守护进程已经关闭并且正确的 ones/states 已经启动)
然后我尝试使用我刚刚设置的密码登录 mysql:
mysql -u root -p
Enter password:
我输入上面刚刚设置的密码得到:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'defaultDB'
我看到一些关于 TCP 与套接字的评论,但我不确定如何解决这个问题(如果这与问题有关)。我做错了什么?
首先,不要直接修改mysql.usertable,而是使用CREATE
、ALTER
或DROP USER
命令。在最新版本的 MariaDB 中,mysql.user
是一个无法修改的视图。
在 Debian 上,套接字连接 (localhost) 的默认身份验证方法是通过 unix_socket 身份验证插件处理的:该插件允许它检索连接到套接字的进程的 uid。然后它能够获取与该 uid 关联的用户名。获得用户名后,它会将连接用户验证为具有相同用户名的 MariaDB 帐户。
所以一个简单的 sudo mysql -uroot
应该可以作为 root 用户连接。