2012-01-09 121 views
18

我在redhat linux上安装了MySQL服务器5。我无法以超级用户身份登录,因此我无法更改root密码。如何更改mysql的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)' 

仿佛有根密码设置。

我也试图重新使用

/sbin/service mysqld start --skip-grant-tables 

然后使密码(描述here):

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),然后重新安装,但该没有帮助。

如何强制重置根密码?

+0

检查您的mysqld是否已安装,启用,并使用命令:'sudo service mysqld status'。 – 2015-12-31 11:13:10

回答

4

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

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

复位的话,你得有超过mysqld的是如何执行的所有权,并给它一个init文件来修改root密码: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

+1

请问您是否可以更正链接 – ihebiheb 2015-10-26 16:00:45

6

默认情况下,root用户密码为空字符串。

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

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

+0

为了成为mysql服务器中的根,我是否需要neet作为系统的根? – yossi 2012-01-09 14:06:38

+0

我不确定,但我不这么认为。不幸的是,我从来没有使用红帽......编辑:但你为什么不试试呢? – danijar 2012-01-09 14:09:58

+0

请注意,如果您想尝试使用无密码登录,则应该避免在命令行中完全指定'-p'。 – 2012-01-09 14:17:19

6

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

+1

好主,为什么会有人给我发现工作的唯一解决方案-1。 init sql文件是我可以覆盖mysql root用户密码并能够使用它的唯一方法。这是一个耻辱,你需要在新安装的软件上进行这种操作,但最好有一个**可靠的解决方法。 – 2015-06-19 10:46:29

+2

'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/setup.sql' – 2016-07-01 22:12:34

3

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

用途: mysql -u root

这将解决您的问题。

+2

这只适用于没有root密码的情况。如果已设置root密码,则必须提供。 – 2015-06-19 17:47:39

2

这帮助我在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文件设置可以使用服务管理器中找到:从开始菜单中选择控制面板,然后选择管理工具,然后选择服务。在列表中找到MySQL服务,右键单击它,然后选择“属性”选项。可执行文件的路径字段包含--defaults-file设置。

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

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

2

试着这样做:

mysql -u root 

然后:

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

mysql> FLUSH PRIVILEGES; 

工作的罚款我!

2

可能有点晚了这里,但这里是我做过什么:

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

输入pass

mysql > change root pass ; flush privs; 

退出

# restart mysql service 

MySQL v ersion我使用的是5.1.73 centos6

0

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

在RHEL 6.7上安装MySQL 5.6后,我终于发现安装时设置的临时root密码被放置在文件/root/.mysql_secret中。