这个问题可能听起来很傻,但我想在生产 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 密码的分步说明他们的手册:
如果需要,请停止 MySQL 服务器,然后使用 --skip-grant-tables 选项重新启动它。这使任何人都可以无需密码并拥有所有权限进行连接,并禁用帐户管理语句,例如 ALTER USER 和 SET PASSWORD。由于这不安全,您可能需要将 --skip-grant-tables 与 --skip-networking 结合使用,以阻止远程客户端连接。
使用 mysql 客户端连接到 MySQL 服务器;不需要密码,因为服务器是使用 --skip-grant-tables 启动的:
shell> mysql
在 mysql 客户端中,告诉服务器重新加载授权表,以便帐户管理语句起作用:
mysql> FLUSH PRIVILEGES;
然后更改 'root'@'localhost' 帐户密码。将密码替换为您要使用的密码。要更改具有不同主机名部分的 root 帐户的密码,请修改说明以使用该主机名。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
答案2
运行‘SHOW GRANTS FOR [你的用户]@[你连接的主机名];’
这将显示您拥有哪些权限。
由此,您可以确定是否可以在会话中更改 root 密码,而不是进行“冷”重置密码。
最安全的方法是使用前面提到的‘ALTER USER’命令,show grants会提示你是否拥有权限(或者直接试一下,否则只会报错)