Mysql 访问在启动之前需要 sudo 命令



我正在使用"mysql -u root -p"命令来启动mysql,但我得到的错误是:

拒绝用户"根"@localhost

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

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

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

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

原因是最新版本的MySQL(以及MariaDB,PerconaDB(使用SO_PEERCRED,以使连接字符串(root(中断言的用户名与启动客户端的用户相同(这使得使用密码有些多余(。

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

mysql -h 127.0.0.1 -u root -p

但请注意,MySQL通常具有通过网络(主机!="本地主机"(和文件系统(主机="本地主机"(套接字连接的单独用户记录。

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

Mysql 不提供对 Java 数据库的访问权限

切勿使用管理员帐户作为应用程序中的嵌入式凭据。如果您将该帐户与您的用户同名,则在连接到"localhost"时无需使用 sudo。

最新更新