如何更改mysql的root密码
Posted
技术标签:
【中文标题】如何更改mysql的root密码【英文标题】:How to change the mysql root password 【发布时间】:2012-02-06 01:16:10 【问题描述】:我已经在 redhat linux 上安装了 mysql server 5。我无法以 root 身份登录,因此无法更改 root 密码。
mysql -u root -p
Enter password: <blank>
ERROR 1045 (28000): Access denied for user 'root'@'localhost'
(using password: NO)
当我尝试这样设置时:
mysqladmin -u root password 'newpass'
我收到一个错误:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost'
(using password: NO)'
好像设置了root密码。
我也尝试过使用(描述here)重置密码
/sbin/service mysqld start --skip-grant-tables
然后制作:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')
-> WHERE User='root';
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'
我什至卸载了 mysql-server(使用 yum),然后重新安装了它,但这并没有帮助。
如何强制重置root密码?
【问题讨论】:
检查您的 mysqld 是否已安装、启用并使用命令:sudo service mysqld status
。
【参考方案1】:
一种选择是将UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
保存到文件中,然后使用--init-file=FILENAME
手动启动mysqld
。一旦服务器启动,它应该重置您的密码,然后您应该可以登录。之后,您应该关闭服务器并正常启动它。
【讨论】:
天哪,为什么有人会给我发现唯一可行的解决方案-1。一个 init sql 文件是我可以覆盖 mysql root 用户密码并能够使用它的唯一方法。遗憾的是,您需要在新安装的软件上回退到此类操作,但最好有一个可靠的解决方法。sudo mysql service stop && echo "UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';" > /tmp/reset.sql && sudo /etc/init.d/mysql start --init-file=/tmp/reset.sql
【参考方案2】:
游戏有点晚了,但我在安装树莓派时遇到了同样的问题,发现它需要提升。在密码更改的前面添加 sudo 可以使其正常工作。
sudo mysqladmin -u root password 'newpass'
随后是提升的 sql 访问权限
sudo mysql -u root -p
如果其中任何一个都没有作为 sudo 运行,它将失败。
【讨论】:
虽然我没有使用mysqladmin
,但sudo mysql -u root -p
为我工作。【参考方案3】:
root用户密码默认为空字符串。
而(using password: NO)
说没有密码。
您是否尝试从其他系统登录?我想你只能在本地以 root 用户身份登录。
【讨论】:
我是否需要成为系统的root才能成为mysql服务器的root? 我不确定,但我不这么认为。不幸的是,我从未使用过 redhat... 编辑:但你为什么不试试呢? 请注意,如果您想尝试不使用密码登录,您应该完全避免在命令行中指定-p
。
注意:默认情况下root密码可能不是空白的,现在(刚刚发现)。我从 yum 存储库安装了 MySQL 5.7.16,发现安装程序创建了一个临时密码,该密码存储在纯文本文件中:P(对于 yum,这是 /var/log/mysqld.log)【参考方案4】:
我删除了MySQL安装并删除了数据文件,然后重新安装。
然后我就可以设置root密码了。一旦您将root密码设置为某事。如果你不知道,mysqladmin不会让你重置它。
要重置它,您必须对 mysqld 的执行方式拥有所有权,并为其提供一个 init 文件以更改 root 密码: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
【讨论】:
【参考方案5】:这有助于我在 Windows 上使用 MySQL Server 5.6。确保将mysqld
路径更改为指向安装MySql Server 的位置,对我来说是"C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe"
:
以管理员身份登录系统。
如果 MySQL 服务器正在运行,请停止它。对于一个服务器 作为 Windows 服务运行,请转到服务管理器: 从开始菜单中选择控制面板,然后 管理工具,然后是服务。找到 MySQL 列表中的服务并停止它。
如果您的服务器没有作为服务运行,您可能需要使用 任务管理器强制它停止。
创建一个包含以下语句的文本文件。 将密码替换为您要使用的密码。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
将 UPDATE 和 FLUSH 语句分别写在一行上。 UPDATE 语句重置所有 root 帐户的密码,FLUSH 语句告诉服务器将授权表重新加载到内存中,以便它注意到密码更改。
保存文件。对于此示例,文件将命名为 C:\mysql-init.txt
。
打开控制台窗口以进入命令提示符:从“开始”菜单中选择“运行”,然后输入 cmd 作为要运行的命令。
使用特殊的 --init-file 选项启动 MySQL 服务器(注意选项值中的反斜杠加倍):
C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt
如果您将 MySQL 安装到 C:\mysql 以外的位置,请相应地调整命令。
服务器在启动时执行由 --init-file 选项命名的文件的内容,更改每个 root 帐户密码。
如果您希望服务器输出显示在控制台窗口而不是日志文件中,您还可以在命令中添加 --console 选项。
如果您使用 MySQL 安装向导安装 MySQL,您可能需要指定 --defaults-file 选项:
C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe"
--defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini"
--init-file=C:\\mysql-init.txt
可以使用服务管理器找到适当的 --defaults-file 设置:从开始菜单中选择控制面板,然后选择管理工具,然后选择服务。在列表中找到 MySQL 服务,右键单击它,然后选择 Properties 选项。 Path to executable 字段包含 --defaults-file 设置。
服务器启动成功后,删除C:\mysql-init.txt。
http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html
【讨论】:
【参考方案6】:从您的命令中删除 -p。 -p 强制提示输入密码。
使用:
mysql -u root
这将解决您的问题。
【讨论】:
只有在没有root密码的情况下才有效。如果设置了root密码,则必须提供。【参考方案7】:这里可能有点晚了,但这是我所做的:
创建文件resetpass.sh :
UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root';
# mysqld_safe --init-file=resetpass.sh
# service mysqld start --skip-grant-tables
# mysql -u root -p
输入密码
mysql > change root pass ; flush privs;
退出
# restart mysql service
我使用的MySQL版本是centos6下的5.1.73
【讨论】:
【参考方案8】:试试这个:
mysql -u root
然后:
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
对我来说很好用!
【讨论】:
【参考方案9】:根据文档,在 MySQL 5.7 中,临时密码被放入 /var/log/mysqld
,但在 5.6 中显然不是这种情况。
在 RHEL 6.7 上安装 MySQL 5.6 后,我终于发现安装时设置的临时 root 密码放在了文件/root/.mysql_secret
中。
【讨论】:
【参考方案10】:打开mysql
现在输入以下命令:
use mysql;
update user set PASSWORD=password("updated password") where User='root';
flush privileges;
【讨论】:
以上是关于如何更改mysql的root密码的主要内容,如果未能解决你的问题,请参考以下文章