nginx – 不运行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无法连接到我的数据库.我在这里错过了什么?

最佳答案

Debian / Ubuntu上的MariaDB默认通过Unix套接字进行身份验证,并检查调用mysql的用户的有效unix用户ID.如果不以root用户身份运行mysql(或使用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;
回复