启动前需要sudo命令的MySQL访问

时间:2018-09-05 11:09:41

标签: mysql ubuntu

我正在使用“ mysql -u root -p”命令启动mysql,但出现错误消息:

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

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

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

1 个答案:

答案 0 :(得分:0)

  

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

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

这样做的原因是,最新版本的MySQL(以及MariaDB,PerconaDB)使用SO_PEERCRED来确保连接字符串(根)中声明的用户名与启动客户端的用户名相同(这使有点冗余密码)。

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

 mysql -h 127.0.0.1 -u root -p

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

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

  

Mysql不授予对Java中数据库的访问权限

您不应从不使用管理员帐户作为应用程序中的嵌入式凭据。如果您使用与用户相同的名称来创建该帐户,则在连接到“本地主机”时无需使用sudo。