为什么应用程序无法从localhost连接到MariaDB/MySQL,尽管已经设置了用户(Mac)

a7qyws3x  于 11个月前  发布在  Mysql
关注(0)|答案(2)|浏览(116)

在一个系统上,我通过Homebrew安装了MariaDB,我可以用Beekeeper Studio操作它的DB。
以同样的方式设置一个新系统(据我所知),我发现没有应用程序可以登录到MariaDB。下面是我在命令行上所做的:

CREATE USER 'me'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost';

字符串
但是,虽然我可以在命令行上以此用户身份登录,但尝试使用凭据的应用程序会获得:

Access denied for user me@localhost


注意这里没有提到“使用密码”。
如果我尝试使用不存在的用户名,错误消息是不同的:

Access denied for user 'sdfdsf'@'localhost' (using password: YES)


我已经尝试刷新权限并重新启动MariaDB。如果我

SELECT User, Password FROM mysql.user;


在MariaDB命令行上,我可以看到用户存在。我已经确认服务器正在运行。
Mac OS防火墙处于非活动状态。端口已默认为(3306),这也是数据库应用程序所期望的。我还尝试了Sequel Pro,得到了相同的结果。
如果我做

SHOW GRANTS FOR 'me'@'localhost';


我得到

| GRANT ALL PRIVILEGES ON *.* TO `me`@`localhost` IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION |


下一步该怎么做?


的数据
工作的计算机也是以同样的方式设置的。

ajsxfq5m

ajsxfq5m1#

结果是root和其他唯一用户的密码都未设置,尽管尝试在没有密码的情况下登录也失败了。在mysql.user表的命令行中选择它们时,两个用户的密码都显示为“INVALID”,这是我所看到的预期:"Mysql" user has password "invalid" - is this the normal thing?
在命令行(使用套接字登录)中使用预期的密码设置密码解决了这个问题。

txu3uszq

txu3uszq2#

这可能是从命令行连接到一个 Unix socket,应用程序试图连接到TCP/IP端口,而后者没有设置。不幸的是,这两个都被不同的应用程序称为“localhost”,这可能会引起混淆。
要验证,请运行

netstat -na | grep 3306

字符串
或尝试(从命令行)强制TCP连接:

mysql --host 127.0.0.1 --port 3306 --user=me -p


如果netstat没有返回任何内容和/或mysql命令停止连接,请检查MySQL配置文件中的networking指令,该指令必须启用并绑定到本地接口(或“*”绑定到所有接口)。

相关问题