不运行 sudo 无法访问 MySQL

不运行 sudo 无法访问 MySQL

我最近在 ARM 系统(RBPI3)上安装 MySQL,如果我运行:

pi@raspberrypi:~ $ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

但使用 sudo 可以连接:

pi@raspberrypi:~ $ sudo mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

我不明白为什么如果我不是 su 就无法访问该服务。这也意味着,例如,使用以 WWW-DATA 用户身份运行的 Nginx 执行的 WordPress 无法连接到我的数据库。我在这里缺少什么?

答案1

Debian/Ubuntu 上的 MariaDB 默认情况下通过 Unix 套接字进行身份验证,并检查调用的用户的有效 unix 用户 ID mysql。如果您不mysql以 root 身份(或使用sudo)运行,则会失败。

https://mariadb.com/kb/en/library/authentication-plugin-unix-socket/

sudo要将其改回经典方法,请使用( )登录数据库sudo mysql -u root并更改您的用户,如下所示:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
FLUSH PRIVILEGES;

相关内容