命令:
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/
没有帮助。上面的问题引发了不同的错误
答案 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的情况下再次登录