我正在做一个项目,一直想用 MySQL 代替 SQLite。所以我下载了 MySQL,并尝试用 设置 root 密码mysql_secure_installation
,但当我提交两个密码时,出现以下错误:
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
我一直尝试通过执行以下操作在 mysql 中设置密码:
$ sudo mysql -u root
mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');
和
update user set authentication_string=password("password") where user='root';
但随后它会出现语法错误。
我该如何解决这个问题?
编辑:我现在遇到的一个问题是,我需要 root 密码才能连接到 MySQL 服务器,将其留空似乎不起作用
答案1
我刚刚发现了同样的问题。因此,以下是我的步骤:
我终止了该
mysql_secure_installation
进程sudo pkill -f mysql_secure_installation
。我使用以下方式登录
mysql
:sudo mysql
当然,sudo 会询问我的系统 root 密码。一旦我提供了正确的 root 密码,我就可以作为 root mysql 用户连接到 mysql。
我使用我的 mysql 会话运行 ALTER USER:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'my-secret-password';
出口
mysql> exit Bye
运行
sudo mysql_secure_installation
命令,完成安全Mysql的步骤。
附言:似乎既不包含/root/.mysql_history
也不~/.mysql_history
包含我的ALTER USER
命令。无论如何,最好检查一下,并删除/编辑您运行的包含敏感信息的查询。
答案2
尝试:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'yournewpassword';
答案3
在开始安装过程“sudo mysql_secure_installation”之前:
- 登录mysql并设置root密码。
- 退出 mysql 并运行安全安装
- 使用 mysql -u root -p 和您在步骤 1 中设置的密码登录 mysql,并设置以下内容“ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;”
详细的安装指南可以在这里找到:https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04
答案4
我最近不得不在运行 Ubuntu 20.04 的无头 Ubuntu 服务器上重新安装 MySQL,最简单的方法是解决更改密码时 mysql_secure_installation 不起作用的问题,我只需使用“mysqladmin -u root password”(密码不是要使用的密码,而是更改 root 密码的命令),然后它会要求输入新密码,但由于某种原因,安全安装脚本搞砸了,所以只要 MySQL root 有密码,我并不担心运行安全脚本,因为我不允许端口 3306 通过防火墙并且只有本地访问权限。