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套接字的评论,但是我不确定该如何解决这个问题。我在做什么错了?
答案 0 :(得分:0)
首先,不要直接修改mysql.user表,而不要使用CREATE
,ALTER
或DROP USER
命令。在最新版本的MariaDB中,mysql.user
是无法修改的视图。
在Debian上,套接字连接(localhost)的默认身份验证方法是通过unix_socket身份验证插件处理的:该插件允许它检索连接到套接字的进程的uid。然后,它可以获取与该uid关联的用户名。一旦拥有了用户名,它将把连接用户认证为具有相同用户名的MariaDB帐户。
因此,简单的sudo mysql -uroot
应该可以以root用户身份进行连接。