连接到没有sudo的mysql服务器

时间:2016-05-15 15:14:23

标签: mysql sudo

命令:

mysql -u root -p

给出错误:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

但是运行sudo权限,有效:

sudo mysql -u root -p

是否有可能摆脱sudo要求,因为它阻止我在intellij中打开数据库?我在这个问题Connect to local MySQL server without sudo的答案中尝试了以下内容:

sudo chmod -R 755 /var/lib/mysql/

没有帮助。上面的问题引发了不同的错误

9 个答案:

答案 0 :(得分:39)

只有root用户需要sudo才能登录mysql。我通过创建新用户并授予对所需数据库的访问权限来解决此问题:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';

现在newuser可以在没有sudo要求的情况下登录:

mysql -u newuser -p

答案 1 :(得分:15)

您需要更改算法。以下为我工作,

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <PackageId>web.demo.Portal</PackageId>
    <PackageVersion>$(PackageVersion)</PackageVersion>
    <VersionSuffix>$(VersionSuffix)</VersionSuffix>
    <Authors>demo auth</Authors>
    <Description>test</Description>
    <PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
    <Copyright>Copyright 2017 (c) demo.</Copyright>
    <PackageTags>portal</PackageTags>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\xyz.Objects\xyz.Objects.csproj" />
...
...
</ItemGroup>
</Project>

答案 2 :(得分:14)

首先使用sudo登录mysql。

然后使用此代码将root用户的“插件”coloumn值从“unix_socket”更改为“mysql_native_password”。

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';

FLUSH PRIVILEGES;

最后重启mysql服务。就是这样。

如果您想了解更多信息,请查看this链接

答案 3 :(得分:2)

您可以使用以下查询:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

此查询就足够了。

答案 4 :(得分:1)

我已经使用以下命令解决了这个问题。

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';
FLUSH PRIVILEGES;

在这里,  username =您喜欢的任何用户名。

password =您喜欢的任何密码。

答案 5 :(得分:1)

answer需要稍微适合mariaDB而不是mysql。

使用sudo以root身份首次登录:

$ sudo mysql -uroot

然后更改mariadb根用户:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password USING PASSWORD('mypassword');
FLUSH PRIVILEGES;

从现在开始不再需要sudo:

$ mysql -uroot -p

使用的版本: 使用readline 5.1的osx10.15(x86_64)的mysql Ver 15.1 Distrib 10.4.13-MariaDB,

答案 6 :(得分:0)

在你引用的问题的评论中,它的内容为

  

好的,只是尝试分析路径中的所有目录   套接字文件,他们需要有o + rx和sock文件(它不是一个   好的想法让它可以被其他人修改)。

     

你也可以尝试删除mysql.sock,然后重新启动mysqld   应该由具有适当权限的守护进程创建文件。

这似乎适用于this question(你说过的那个),所以它也适用于你

答案 7 :(得分:0)

您可以使用相同的ROOT用户或NEW_USER并删除SUDO特权。下面的示例显示了如何在不使用SUDO的情况下使用ROOT删除连接。

使用SUDO连接到MY-SQL

sudo mysql -u root

从用户表中删除当前的根用户

DROP USER 'root'@'localhost';

创建新的ROOT用户(如果需要,您可以创建其他用户)

CREATE USER 'root'@'%' IDENTIFIED BY '';

授予新用户权限(ROOT)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

刷新特权,以便立即重新加载Grant表。 (Why do we need to flush privileges?

FLUSH PRIVILEGES;

现在一切都很好。以防万一,请检查是否创建了新的root用户。

SELECT User,Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | %         |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)

退出mysql。 (按CTRL + Z)。在没有SUDO的情况下连接到MySQL

mysql -u root

希望这会有所帮助!

答案 8 :(得分:-4)

错误消息:

&#34; ERROR 1698(28000):拒绝用户访问权限&#39; @&#39; localhost&#39;&#34;

表示服务器不允许此用户的连接,而不是mysql无法访问套接字。

尝试这个来解决问题:

登录您的数据库

sudo mysql -u root -p

然后进行这些修改:

MariaDB []>use mysql;
MariaDB [mysql]>update user set plugin=' ' where User='root';
MariaDB [mysql]>flush privileges;
MariaDB [mysql]>exit

尝试在没有sudo的情况下再次登录