突然之间,当我为给定的用户使用密码时,我就不能再登录本地(Windows7.64) DB (MariaDB 10.1.12)了。我还有另一个MySQL运行在Vagrant中(Ubuntu32 14.04),因此在其中运行了--port 3305 for Windows。
$ mysql --version C:\Program Files\MariaDB 10.1\bin\mysql.exe Ver 15.1 Distrib 10.1.12-MariaDB, for Win64 (AMD64)
Windows / Git Bash中提供的所有命令:
$ mysql --port 3305 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
错误消息几乎立即出现,并且是预期的。
然后使用存在的用户名(而不是下面的用户名):
$ mysql --port 3305 -u my_username ERROR 1045 (28000): Access denied for user 'my_username'@'localhost' (using password: NO)
同样,错误消息将按预期的方式立即显示。
问题
在同一个控制台中,这个命令永远不会得到任何响应。这就像MariaDB挂起/冻结(直到Ctrl + C),即使在后台等待了一个小时。似乎只有在设置-p参数时才会发生这种情况:
$ mysql --port 3305 -u my_username -pcorrect_password
$ mysql --port 3305 -u my_username -p
对于后者,应该有一个密码提示,但它也永远不会出现。这个配置以前起过作用,而且(据我所知)没有任何改变?而且MariaDB本身也能工作,因为它确实响应了其他命令。为什么密码提示会挂起来?
发布于 2016-05-17 08:06:40
因为Mariadb还继承了许多MySQL代码和行为,所以在Mysql文档中编写的内容:连接到MySQL服务器也可能发生在mariadb客户机上。
在Unix上,MySQL程序特别对待主机名localhost,这种方式可能与其他基于网络的程序不同。对于到本地主机的连接,MySQL程序试图使用Unix文件连接到本地服务器。即使给出一个-端口或-P选项来指定端口号,也会发生。要确保客户端与本地服务器建立TCP/IP连接,请使用--host或-h指定主机名值为127.0.0.1,或指定本地服务器的IP地址或名称。您还可以显式地指定连接协议,甚至对于localhost也是如此。
显然,即使使用-port参数,mariadb客户端也连接到3305。因为端口3305没有运行maraidb代理,但是端口是打开的,所以mariadb客户机只是等到超时(典型的TCP/IP客户端工具行为)。如果3305未打开,mariadb客户端将尽快给出连接失败。
https://stackoverflow.com/questions/37204161
复制相似问题