问题描述
我需要重置本地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密码的简单步骤:
检查您的mysql-server的版本;
apt-cache policy mysql-server
并查看显示已安装版本的行以及其他信息。例如对于我的安装是:
Installed: 5.5.37-0ubuntu0.12.04.1
(据此,我知道我的系统中已安装mysql-server-5.5。)
使用以下命令开始重新配置:
sudo dpkg-reconfigure mysql-server-*.*
其中mysql-server-*.*应该替换为您拥有的版本。 (对我来说是mysql-server-5.5)。这将停止数据库守护程序。然后将出现提示,您必须在其中输入新密码并确认重新配置。
重新配置完成后,守护程序将自动启动。
然后,您可以登录:
mysql -u root -p
并启动数据库管理任务。
参考文献:
次佳方案
步骤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控制台中>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开始,在初始安装期间,如果将密码保留为空,则对于该用户,身份验证将基于auth_socket插件。
更改密码的正确方法是:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
参考资料