从非root但有特权的帐户更新mysql.user吗?

从非root但有特权的帐户更新mysql.user吗?

这个问题可能听起来很傻,但我想在生产 MySQL 实例上执行此操作之前绝对确定。

目前,我MySQL在生产环境中有一个主->从设置。

我们的 DBA 已经离开了公司,没有人知道密码root。这不是什么大问题,因为他离开之前给了我(不是 DBA)一个MySQL具有完全权限的实例帐户,我们通过这个(我的)帐户执行了大多数所需的“root”任务。

但是,最近主->从复制已经中断,我想遵循以下指南:https://stackoverflow.com/questions/2366018/how-to-re-sync-the-mysql-db-if-master-and-slave-have-different-database-incase-o#3229580

要求我将 root 密码更改为我实际知道的密码。

我的问题是:以我的升级用户身份登录,通过update mysql.user中断复制的可能性来更改 root 密码是否会产生任何不利影响?这会起作用吗?还是MySQL需要登录safe-mode才能更改为 root 帐户?

答案1

以下是重置 MySQL root 密码的分步说明他们的手册

  1. 如果需要,请停止 MySQL 服务器,然后使用 --skip-grant-tables 选项重新启动它。这使任何人都可以无需密码并拥有所有权限进行连接,并禁用帐户管理语句,例如 ALTER USER 和 SET PASSWORD。由于这不安全,您可能需要将 --skip-grant-tables 与 --skip-networking 结合使用,以阻止远程客户端连接。

  2. 使用 mysql 客户端连接到 MySQL 服务器;不需要密码,因为服务器是使用 --skip-grant-tables 启动的:

    shell> mysql

  3. 在 mysql 客户端中,告诉服务器重新加载授权表,以便帐户管理语句起作用:

    mysql> FLUSH PRIVILEGES;

    然后更改 'root'@'localhost' 帐户密码。将密码替换为您要使用的密码。要更改具有不同主机名部分的 root 帐户的密码,请修改说明以使用该主机名。

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

答案2

运行‘SHOW GRANTS FOR [你的用户]@[你连接的主机名];’

这将显示您拥有哪些权限。

由此,您可以确定是否可以在会话中更改 root 密码,而不是进行“冷”重置密码。

最安全的方法是使用前面提到的‘ALTER USER’命令,show grants会提示你是否拥有权限(或者直接试一下,否则只会报错)

相关内容