在一个系统上,我通过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 |
型
下一步该怎么做?
的数据
工作的计算机也是以同样的方式设置的。
2条答案
按热度按时间ajsxfq5m1#
结果是root和其他唯一用户的密码都未设置,尽管尝试在没有密码的情况下登录也失败了。在mysql.user表的命令行中选择它们时,两个用户的密码都显示为“INVALID”,这是我所看到的预期:"Mysql" user has password "invalid" - is this the normal thing?
在命令行(使用套接字登录)中使用预期的密码设置密码解决了这个问题。
txu3uszq2#
这可能是从命令行连接到一个 Unix socket,应用程序试图连接到TCP/IP端口,而后者没有设置。不幸的是,这两个都被不同的应用程序称为“localhost”,这可能会引起混淆。
要验证,请运行
字符串
或尝试(从命令行)强制TCP连接:
型
如果
netstat
没有返回任何内容和/或mysql
命令停止连接,请检查MySQL配置文件中的networking
指令,该指令必须启用并绑定到本地接口(或“*”绑定到所有接口)。