无法重置mysql的root密码

我需要重置我的本地mysql安装的root密码,但它不会让我。 我试过这个:

$ sudo /etc/init.d/mysql stop * Stopping MySQL database server mysqld [ OK ] [1]- Exit 1 sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking [2]+ Exit 1 sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking reg@regDesktopHome:~$ sudo mysqld --skip-grant-tables & [1] 13651 reg@regDesktopHome:~$ 140627 19:02:02 [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. reg@regDesktopHome:~$ mysql -u root mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) reg@regDesktopHome:~$ sudo mysql -u root mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [1]+ Exit 1 sudo mysqld --skip-grant-tables 

如何重置密码? 编辑1我得到了这个:

 $ ps ax| grep mysql 16515 ? Ssl 0:00 /usr/sbin/mysqld 16551 pts/23 S+ 0:00 grep --color=auto mysql reg@regDesktopHome:~/semios/v3upgrade$ sudo kill -9 16515 reg@regDesktopHome:~/semios/v3upgrade$ ps ax| grep mysql 16678 ? Ssl 0:00 /usr/sbin/mysqld 16715 pts/23 S+ 0:00 grep --color=auto mysql reg@regDesktopHome:~/semios/v3upgrade$ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 

看起来像进程一旦我杀了它就会自动重启mysql …

首先请尝试使用

 mysql -u root -p 

并在提示时输入您的密码(如果您还记得)以sql-root用户身份登录(请注意,开关-p是密码)。

如果你真的需要重置mysql的root密码,这里有一个简单的方法 – 用dpkg-reconfigure包。

轻松重置mySQL root密码的步骤:

  1. 检查你的mysql-server的版本;

     apt-cache policy mysql-server 

    并查看显示已安装版本以及其他信息的行。 例如,对于我的安装它:

     Installed: 5.5.37-0ubuntu0.12.04.1 

    (据此我知道我的系统中安装了mysql-server-5.5 。)

  2. 使用以下命令启动重新配置

     sudo dpkg-reconfigure mysql-server-*.* 

    其中mysql-server-*.*应替换为您拥有的版本。 (对我来说,它是mysql-server-5.5 )。 这将停止数据库守护程序。 然后会出现一个提示,您必须输入新密码并确认重新配置。

    snap1

    重新配置完成后,守护程序将自动启动。

  3. 然后您可以使用以下命令登录:

     mysql -u root -p 

    并启动数据库管理任务。

参考文献:

  1. https://help.ubuntu.com/community/MysqlPasswordReset [很快就会清理,如页面所示。​​]

  2. 与您的特定版本相关的Ubuntu Server Guide 。

从这篇博客中摘录:

第1步:停止MySQL服务。

 sudo service mysql stop 

第2步:杀死所有正在运行的mysqld。

 sudo killall -9 mysqld 

第3步:以安全模式启动mysqld。

 sudo mysqld_safe --skip-grant-tables --skip-networking & 

第4步:启动mysql客户端

 mysql -u root 

步骤5:成功登录后,请执行此命令更改密码。

 FLUSH PRIVILEGES; 

第6步:您可以更新mysql root密码。

 UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root'; 

对于mysql> 5.7使用此代替以上:

 UPDATE mysql.user SET authentication_string=PASSWORD('newpwd') WHERE User='root'; 

第7步:请执行此命令。

 FLUSH PRIVILEGES; 

第8步:退出mysql控制台

 exit 

第9步:杀死mysqld_safe并启动mysql

 sudo killall mysqld_safe && sudo service mysql start 

在Ubuntu 16.04和mysql-server-5.7 ,正确的答案是olafure的最后一条评论, dpkg-reconfigure mysql-server-5.7不再有效。

 sudo service mysql stop sudo killall mysqld sudo mysqld_safe --skip-grant-tables --skip-networking & mysql -u root 

现在在mysql console >mysql

 USE mysql; UPDATE user SET authentication_string=PASSWORD('newpass') WHERE user='root'; FLUSH PRIVILEGES; \q 

重启好的 mysql进程

 sudo killall mysqld sudo service mysql start 

检查新密码

 mysql -u root -p Enter password: newpass mysql> 

MySQL 5.7开始,在初始安装期间,如果您将密码保留为空,那么对于该用户,身份validation将基于auth_socket插件。

更改密码的正确方法是:

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'; 

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

用这个创建一个文件:

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

停止mysql服务器并运行:

 mysqld_safe --init-file=/home/me/mysql-init & 

点击此处了解更多详情: http : //dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

其余答案中没有任何内容似乎对我有用。 这是我的解决方案:

 sudo service mysql stop sudo mysqld_safe & sudo mysql -u root 

在那里:

 ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; FLUSH PRIVILEGES; QUIT; 

然后:

 sudo killall mysqld sudo service mysql start sudo mysql -u root -p