如何恢复 mysql 密码?

如何恢复 mysql 密码?

我已经执行的操作是:

sudo /etc/init.d/mysql stop
/usr/sbin/mysqld --skip-grant-tables --skip-networking & 

在此之后我得到了:

[Warning] Using unique option prefix key_buffer instead of
key_buffer_size is deprecated and will be removed in a future release.  
Please use the full name instead.

150929 11:48:31[Note] /usr/sbin/mysqld (mysqld ....)starting as
process 3633 ...

并且没有进一步处理。

该怎么办?

答案1

下一步可能是:

  1. 在终端:

    mysql
    
  2. 在 mysql shell 中:

    use mysql;
    select user,password,host from user;
    update user set password=password("newpassword") where user=root;
    select user,password,host from user;
    flush tables;
    FLUSH PRIVILEGES;
    quit
    
  3. 在终端:

    kill -15 `pgrep -f 'skip-grant-tables' 
    service mysql start
    mysql -u root -p
    

答案2

你所做的是正确的,正如手册中解释的那样(请参阅MySQL 5.5 手册在 B.5.4.1.3 点下)。在您停止的点处,您的 MySQL 服务器在没有权限控制的情况下启动。您所要做的就是按照上述链接中的后续步骤进行操作(总结如下):

  1. 通过终端连接到您的 MySQL 服务器:

    shell> mysql
    
  2. 重新加载授权表,以便帐户管理语句起作用:

    mysql> FLUSH PRIVILEGES;
    
  3. 修改密码(;最后别忘记):

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    
  4. 退出MySQL客户端,正常重启mysql服务器:

    mysql> exit;
    shell> sudo service mysql restart
    

顺便说一句,最好使用来service start/stop/restart/status管理各种服务,而不是像你那样mysqld使用版本。/etc/init.d/

答案3

  1. 以 MySQL 服务器运行的 Unix 用户身份登录到您的系统(例如,mysql)。

  2. 如果 MySQL 服务器正在运行,请停止它。您可以使用以下命令执行此操作:

    su /etc/init.d/mysql stop
    
  3. 创建一个文本文件,其中包含一行中的以下语句。将密码替换为您要使用的密码。

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    

保存文件。此示例将文件命名为/home/me/mysql-init。该文件包含密码,因此不要将其保存在其他用户可以读取的地方。如果您不是以 mysql(服务器运行时的用户)身份登录,请确保该文件具有允许 mysql 读取它的权限。

  1. 使用特殊选项启动 MySQL 服务器--init-file

    shell> /usr/sbin/mysqld --init-file=/home/me/mysql-init &
    

服务器--init-file在启动时执行该选项指定的文件内容,改变'root'@'localhost'账户密码。

  1. 服务器启动成功后,删除/home/me/mysql-init

  2. 终止mysqld并启动它:

    su /etc/init.d/mysql start
    

相关内容