刚刚在 Ubuntu 服务器 20.04 上安装了 MySQL 8。
我可以使用 登录mysql -u root
,但无论我如何尝试设置 root 密码,当我再次登录时它都不会要求输入密码。
是否需要以某种方式启用密码?
尝试过:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyN3wP4ssw0rd';
flush privileges;
它顺利完成,但没有启用密码。
尝试过:
UPDATE mysql.user SET password=PASSWORD("my-new-password") WHERE User='root';
这会导致语法错误。
答案1
MySQL 8.x 不允许人们以 身份登录,root
除非他们也拥有sudo
服务器上的 -level 权限。这是最近发布的 MySQL 中一系列安全增强功能的一部分,旨在消除该数据库引擎在过去 15 年中收到的坏名声,因为博主使用该root
帐户设置 WordPress 帐户,然后该博客被“黑客”接管,然后整个数据库(以及连接到同一数据库的所有其他系统)都受到损害。这不是仅有的因为人们使用 WordPress,但这种做法在该社区中已经非常普遍。
要以 身份连接到 MySQL root
,您需要使用sudo
。您不需要提供密码,因为如果您有sudo
,您基本上已经拥有了服务器:
sudo mysql
连接后,您可以为自己创建一个帐户并授予其可能需要的所有权限。例如,如果您需要一个“SysAdmin”帐户,您可以执行以下操作:
CREATE USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'superSecretPassword!123';
GRANT ALL ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
从这里,您可以以正常方式连接到 MySQL:
mysql -u admin -p
理想情况下,root
MySQL 中的帐户仅在首次设置系统或修复严重错误时使用。