错误 1698 (28000):在 Ubuntu 18.04 上拒绝用户“root”@“localhost”的访问

Ash*_*jan 38 lamp mysql permissions

我已经按照本教程安装 MySQL,但在成功安装 MySQL 后,我无法访问数据库。

错误 1698 (28000):拒绝用户“root”@“localhost”的访问

Ash*_*jan 71

我在这里链接找到了一个解决方案,通过遵循这个解决方案,我解决了我的问题。

简短的步骤是:

sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'; 
Run Code Online (Sandbox Code Playgroud)

注意:这里test是 root 用户的新密码。另外,请记住sudo service mysql restart在更改用户后运行该命令。

  • ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,在第 1 行的 'USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'b230mehonot'' 附近使用正确的语法 (2认同)
  • 不要写mysql -u root,直接写“sudo mysql”,在运行MySQL 5.7(及更高版本)的Ubuntu系统中,root用户默认通过auth_socket插件进行认证。 (2认同)

小智 25

我找到了另一种更好的方法,因为我们不需要为本地系统提供任何密码。
如下。

打开终端并输入

sudo mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

它会在 mysql 中提示你,在这里你可以触发任何 mysql 命令。

使用 mysql 表更改表类型,因此我们可以使用空密码。波纹管是它的命令

USE mysql;
Run Code Online (Sandbox Code Playgroud)

现在我们通过以下命令更改表的类型

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
Run Code Online (Sandbox Code Playgroud)

现在我们必须刷新权限,因为我们已经使用了 UPDATE。如果直接在授权表上使用 INSERT、UPDATE 或 DELETE,则需要使用 FLUSH PRIVILEGES 以重新加载授权表。

FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

现在通过以下命令退出mysql

exit;
Run Code Online (Sandbox Code Playgroud)

现在通过以下命令重新启动mysql服务器

service mysql restart
Run Code Online (Sandbox Code Playgroud)

希望这可能会有所帮助

谢谢你。

  • 这是正确答案 (3认同)