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

问题描述 投票:0回答:1

我使用“mysql -u root -p”命令启动mysql但我得到的错误是:

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

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

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

mysql ubuntu
1个回答
0
投票

我总是要使用sudo来启动它

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

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

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

 mysql -h 127.0.0.1 -u root -p

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

但是根据@Ciarambola标记的问题,'root'是一个特例,不应该用于例行访问 - 你应该创建一个新用户。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.