如何更改mysql的root密码

我在redhat linux上安装了MySQL服务器5。 我无法以root身份login,因此无法更改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密码设置一样。

我也尝试使用( 在这里描述)重置密码

 /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服务器(使用yum),然后重新安装它,但没有帮助。

我如何强制重置根密码?

root用户密码默认是空字符串。

并且(using password: NO)表示没有密码。

你是否尝试从另一个系统登录? 我想你只能在本地以root用户身份登录。

一个选择是保存UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root'; 到一个文件,然后用--init-file=FILENAME手动启动mysqld 。 一旦服务器启动,它应该重置您的密码,然后您应该能够登录。在此之后,您应该关闭服务器并正常启动。

我删除了MySQL安装并删除了数据文件,然后重新安装它。

然后我可以设置root密码。 一旦你设置了root密码。 如果你不知道,mysqladmin不会让你重置它。

要重置它,你必须拥有如何执行mysqld的所有权,并为其提供一个init文件来更改root密码: https : //dev.mysql.com/doc/refman/5.0/en/resetting-permissions html的

从你的命令中删除-p。 -p强制提示输入密码。

使用: mysql -u root

这将解决您的问题。

试试这个:

 mysql -u root 

接着:

 mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') -> WHERE User='root'; mysql> FLUSH PRIVILEGES; 

为我工作得很好!

这帮助我在Windows上与MySQL服务器5.6。 确保你改变mysqld路径指向你已经安装的MySql服务器,对于我来说它是"C:\Program Files\mysql\MySQL server 5.6\bin\mysqld.exe"

  1. 以管理员身份登录到您的系统。

  2. 停止MySQL服务器,如果它正在运行。 对于作为Windows服务运行的服务器,请转到“服务”管理器:从“开始”菜单中选择“控制面板”,然后选择“管理工具”,然后选择“服务”。 在列表中找到MySQL服务并停止它。

    如果您的服务器不作为服务运行,则可能需要使用任务管理器强制停止。

  3. 创建一个包含以下语句的文本文件。 将密码替换为您要使用的密码。

     UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES; 

    在一行中写入UPDATE和FLUSH语句。 UPDATE语句重置所有root帐户的密码,并且FLUSH语句通知服务器将授权表重新加载到内存中,以便通知密码更改。

  4. 保存文件。 对于这个例子,这个文件将被命名为C:\mysql-init.txt

  5. 打开控制台窗口进入命令提示符:从“开始”菜单中选择“运行”,然后输入cmd作为要运行的命令。

  6. 使用特殊的–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服务,右键单击它,然后选择“属性”选项。 “可执行文件路径”字段包含–defaults-file设置。

  7. 服务器启动成功后,删除C:\ mysql-init.txt。

http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html

这里可能有点晚了,但这是我做的:

创建文件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

根据文档,在MySQL 5.7临时密码被放在/var/log/mysqld ,但是在5.6中显然不是这样。

在RHEL6.7上安装了MySQL5.6版本后,我终于发现安装时设置的临时root密码被放在/root/.mysql_secret文件中。