我在redhat linux上安装了MySQL服务器5。我无法以root身份登录,因此无法更改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密码。
我也尝试使用(描述here)
重设密码/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-server(使用yum),然后重新安装它,但这没有帮助。
如何强制重置root密码?
答案 0 :(得分:9)
一种选择是将UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
保存到文件中,然后使用mysqld
手动启动--init-file=FILENAME
。一旦服务器启动,它应该重置你的密码,然后你应该能够登录。之后,你应该关闭服务器并正常启动它。
答案 1 :(得分:5)
默认情况下,root用户密码为空字符串。
(using password: NO)
表示没有密码。
您是否尝试从其他系统登录?我想你只能在本地以root用户身份登录。
答案 2 :(得分:4)
我删除了MySQL安装并删除了数据文件,然后重新安装了它。
然后我就可以设置root密码了。将root密码设置为某个内容后。如果您不知道,mysqladmin将不允许您重置它。
要重置它,您必须拥有mysqld执行方式的所有权,并将其提供给init文件以更改root密码: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
答案 3 :(得分:3)
从命令中删除-p。 -p强制提示输入密码。
使用:
mysql -u root
这将解决您的问题。
答案 4 :(得分:3)
游戏有点晚了,但是我在树莓派安装上遇到了同样的问题,发现它需要提升。在密码更改的前面添加sudo使其可以正常工作。
sudo mysqladmin -u root password 'newpass'
其次是提升的sql访问权限
sudo mysql -u root -p
如果任何一个都不以sudo运行,它将失败。
答案 5 :(得分:2)
这有助于我使用MySQL Server 5.6的Windows。确保将mysqld
路径更改为指向已安装MySql Server的位置,对我来说是"C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe"
:
以管理员身份登录系统。
如果MySQL服务器正在运行,请将其停止。对于服务器来说 作为Windows服务运行,请转到服务管理器: 从“开始”菜单中选择“控制面板”,然后选择 管理工具,然后是服务。找到MySQL 服务在列表中并停止。
如果您的服务器未作为服务运行,则可能需要使用 任务管理器强制它停止。
创建包含以下语句的文本文件。 将密码替换为您要使用的密码。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
将UPDATE和FLUSH语句分别写在一行上。 UPDATE语句重置所有root帐户的密码,FLUSH语句告诉服务器将授权表重新加载到内存中,以便它注意到密码更改。
保存文件。对于此示例,该文件将命名为C:\mysql-init.txt
。
打开控制台窗口以进入命令提示符:从“开始”菜单中选择“运行”,然后输入cmd作为要运行的命令。
使用特殊的--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文件设置。
服务器成功启动后,删除C:\ mysql-init.txt。
http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html
答案 6 :(得分:2)
尝试这样做:
mysql -u root
然后:
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
对我来说很好!
答案 7 :(得分: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
输入传递
mysql > change root pass ; flush privs;
退出
# restart mysql service
我使用的MySQL版本是centos6下的5.1.73
答案 8 :(得分:0)
根据文档,在MySQL 5.7中,临时密码被放入/var/log/mysqld
,但这显然不是5.6中的情况。
在RHEL 6.7上安装了MySQL 5.6版,我终于发现安装期间设置的临时root密码已放在文件/root/.mysql_secret
中。
答案 9 :(得分:0)
打开mysql
现在输入以下命令:
use mysql;
update user set PASSWORD=password("updated password") where User='root';
flush privileges;