默认 mySQL 用户行为与在线指南不匹配

默认 mySQL 用户行为与在线指南不匹配

我的问题类似于这个, 和但并不相同。它包括这个问题

我在全新的 Ubuntu 22.04 上安装 mySQLDigitalOcean 的本指南

它非常简单,几乎包括apt install了所有内容mysql-server,除了使用之外,我完全遵循了它apt-get。然而,出现了一些不一致之处:

  • 之后apt install mysql-server,我无法运行sudo mysql_secure_installation。输入 mySQL root 用户的密码后,我得到了这个错误前面提到过,该答案中的解决方案已经解决了,即运行sudo mysqlALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'supersecretpassword';然后我就可以完成sudo mysql_secure_installation

现在,指南指出我应该能够sudo mysql在没有用户或密码的情况下运行。但我不能。我可以运行sudo mysql -p,但前提是我在提示符下提供 mySQL root 用户密码。

该指南甚至添加了这样的评论:

...您无需提供密码即可以 [mySQL] 根用户身份进行连接,即使您在运行 mysql_secure_installation 脚本时已定义密码。这是因为管理 MySQL 用户的默认身份验证方法是 unix_socket 而不是密码。

对我来说不行。事实上,如果我尝试运行sudo mysql -u unix_socket或添加-p,我无法登录。

为什么 mySQL 的行为对我来说不同?这是否表示存在特定问题?我在 5 台不同的机器上复制了此问题,所有机器都是 22.04 的全新安装,并且已更新 apt-get。

答案1

DigitalOcean 的这个指南并不完整。运行 mysql_secure_installation 后,您应该使用以下命令登录mysql -u root -p supersecretpassword并执行以下更改:

ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

此后,您将能够通过 登录sudo mysql

请参阅 DigitalOcean 的指南https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04

相关内容