在 Amazon EC2“Amazon Linux”实例上重置 MySQL 密码时出现问题

在 Amazon EC2“Amazon Linux”实例上重置 MySQL 密码时出现问题

一直在努力重置root托管在 EC2 上的 Amazon Linux 上的 MySQL 密码。版本:

mysql Ver 14.14 Distrib 5.5.42,适用于 Linux (x86_64),使用 readline 5.1

安装时,我决定将 root 密码更改为更安全的密码!好极了!安全!但现在它不允许我用该密码登录,所以我尝试重置它。

我跟着此处的说明,但它不起作用。我以为可能是 init 文件的权限问题,但它们被设置为,rwxrwxrwt所以可能不是,但可能吗?甚至不确定要检查哪些日志文件才能知道哪里出了问题。

那么,如何在 EC2 Amazon Linux 上成功重置 MySQL 密码?链接到的指令集是否应该起作用,还是亚马逊做了不同的事情?

我也在 ServerFault 上询问了这个问题,但我问的是什么“不清楚”。我想说这在这里也有点题外,但是……

答案1

在 EC2 实例上托管 Amazon Linux 并没有什么神奇之处。每个人都使用 Linux 的某个变体,是因为 Linux 就是 Linux。

话虽如此,root如果我遇到这样的麻烦,这就是我在 Ubuntu 服务器上重置 MySQL 密码的方法。总体概念应该适用于任何版本的 Linux,只需进行一些小的调整来处理具体问题。

首先,我会像这样停止 MySQL;这是我在 Ubuntu 上使用的命令:

sudo service mysql stop

完成后,使用以下命令再次手动启动 MySQL--skip-grant-tables选项;这在某些环境中被认为是有风险的,因为它基本上会使用向世界上所有人授予的所有授权/权限来启动 MySQL。但这是您需要执行的操作来修复此root问题:

sudo mysqld --skip-grant-tables &

在某些设置中,您可能需要输入完整路径mysqldmysqld_safe使其像这样工作:

sudo /usr/bin/mysqld_safe --skip-grant-tables &

现在 MySQL 重新启动并且它的授权对全世界开放,请像这样登录:

mysql -u root mysql

这基本上将您以用户身份登录到管理 MySQL 访问的所有管理方面的root数据库。mysql

现在运行此查询;当然要更改YOURNEWPASSWORD为匹配您想要分配给用户的新密码root

UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE user='root'; FLUSH PRIVILEGES; exit;

如您所见,这是一个连接命令,它运行一个UPDATE,然后运行一个FLUSH PRIVILEGES来重新加载 MYSQL 授权表并exit让您退出 MySQL。

完成后,您应该已完成所有设置,并且root应该重置密码以匹配YOURNEWPASSWORD您更改的内容。

答案2

检查运行的输出mysqld_safe,它友好地表明它正在记录到/var/log/mysqld。值得注意的是:

150830 6:32:18 [ERROR] /usr/libexec/mysqld: File '/home/ec2-user/mysql-init' not found (Errcode: 2)

事实证明 root 无法访问该位置。将文件移动到/tmp/mysql-init,然后密码重置成功。

答案3

我已经为此奋斗了几个小时,现在我刚刚找到了解决方案。

在我的情况下,我试图为用户设置密码root。我看到当我运行时,select * from mysql.user;root用户的值为plugin。我只需通过运行以下命令socket强制更改为使用插件:mysql_native_password

ALTER USER 'root'@'localhost' identified with mysql_native_password by 'password_goes_here'

相关内容