我在全新的 Ubuntu 22.04 上安装 mySQLDigitalOcean 的本指南。
它非常简单,几乎包括apt install
了所有内容mysql-server
,除了使用之外,我完全遵循了它apt-get
。然而,出现了一些不一致之处:
- 之后
apt install mysql-server
,我无法运行sudo mysql_secure_installation
。输入 mySQL root 用户的密码后,我得到了这个错误前面提到过,该答案中的解决方案已经解决了,即运行sudo mysql
,ALTER 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