【问题标题】:MariaDB 10.1.12, console not responding when using -pMariaDB 10.1.12,使用 -p 时控制台没有响应
【发布时间】:2016-05-13 07:44:57
【问题描述】:

出乎意料的是,当我为给定用户使用密码时,我无法再登录本地 (Windows 7 64) 数据库 (MariaDB 10.1.12)。我还有另一个 MySQL 在 Vagrant (Ubuntu32 14.04) 中运行,因此其中的 Windows 是 --port 3305

$ 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 本身正在工作,因为它确实响应了其他命令。为什么密码提示会挂掉?

【问题讨论】:

  • 请尝试添加另一个参数,例如--host localhost 或 --host 127.0.0.1
  • @mootmoot:我现在试了一下,结果在 127.0.0.1 和 localhost 上都是一样的。没有回应或消息。如果我只做mysql --port 3305 --host localhost,它会立即回复预期的Access denied for user 'ODBC'@'localhost' (using password: NO)
  • 所以这证实了我的怀疑,这是数据库客户端连接器的行为。我只是按答案发帖。
  • 如果输入密码回车,是否有效?如果是这样,那么我建议壳牌正在做一些有趣的事情。

标签: mysql mariadb


【解决方案1】:

因为 Mariadb 客户端也继承了很多 MySQL 代码和行为,所以在 Mysql 文档中写的内容:Connecting to the MySQL Server 也可能发生在 mariadb 客户端。

在 Unix 上,MySQL 程序特别对待主机名 localhost,在 与其他方式相比,这可能与您期望的方式不同 基于网络的程序。对于到 localhost、MySQL 程序的连接 尝试使用 Unix 套接字文件连接到本地服务器。 即使给出 --port 或 -P 选项来指定端口,也会发生这种情况 号码。确保客户端与客户端建立 TCP/IP 连接 本地服务器,使用 --host 或 -h 指定主机名值 127.0.0.1,或本地服务器的 IP 地址或名称。您也可以显式指定连接协议,即使是 localhost

显然,即使使用 --port 参数,mariadb 客户端也会连接到 3305。由于端口 3305 未运行 maraidb 代理,但端口已打开,因此 mariadb 客户端只需等待超时(典型的 TCP/IP 客户端工具行为)。如果 3305 没有打开,mariadb 客户端会尽快给出连接失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多