【问题标题】:Mysql access requiring sudo command before launching it在启动之前需要 sudo 命令的 Mysql 访问
【发布时间】:2019-02-10 12:19:36
【问题描述】:

我正在使用“mysql -u root -p”命令来启动 mysql,但我收到以下错误:

拒绝用户'root'@localhost''的访问

我总是必须使用 sudo 来启动它。其他应用程序正常启动。我该如何解决?我正在做 jdbc 连接(java)。 Mysql 不允许访问 java 中的数据库。我认为需要 sudo 命令是问题所在。

系统: Ubuntu 18.04 LTS 双启动与 Windows 10。

【问题讨论】:

标签: mysql ubuntu


【解决方案1】:

我总是必须使用 sudo 来启动它

没有。您需要使用 sudo 让客户端对服务器进行身份验证。

原因是 MySQL(和 MariaDB、PerconaDB)的最新版本使用 SO_PEERCRED 来确保连接字符串(root)中声明的用户名与启动客户端的用户相同(这使用了密码有点多余)。

由于 SO_PERRCRED 仅适用于文件系统套接字 (AF_UNIX),您可能可以通过网络套接字连接来绕过约束,例如

 mysql -h 127.0.0.1 -u root -p

但请注意,对于通过网络 (host != 'localhost') 和文件系统 (host='localhost') 套接字进行的连接,MySQL 通常具有单独的用户记录。

但根据@Ciarambola 标记的问题,“root”是一种特殊情况,不应用于日常访问 - 您应该创建一个新用户。

Mysql 不允许访问 java 中的数据库

您应该切勿将管理员帐户用作应用程序中的嵌入式凭据。如果您使用与您的用户相同的名称创建该帐户,则在连接到“localhost”时不需要使用 sudo。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-01
    • 2017-07-03
    • 2019-07-07
    • 1970-01-01
    • 2021-04-03
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多