我在redhat linux上安装了MySQL服务器5。 我无法以root身份login,因此无法更改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密码设置一样。
我也尝试使用( 在这里描述)重置密码
/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服务器(使用yum),然后重新安装它,但没有帮助。
我如何强制重置根密码?
root用户密码默认是空字符串。
并且(using password: NO)
表示没有密码。
你是否尝试从另一个系统登录? 我想你只能在本地以root用户身份登录。
一个选择是保存UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
到一个文件,然后用--init-file=FILENAME
手动启动mysqld
。 一旦服务器启动,它应该重置您的密码,然后您应该能够登录。在此之后,您应该关闭服务器并正常启动。
我删除了MySQL安装并删除了数据文件,然后重新安装它。
然后我可以设置root密码。 一旦你设置了root密码。 如果你不知道,mysqladmin不会让你重置它。
要重置它,你必须拥有如何执行mysqld的所有权,并为其提供一个init文件来更改root密码: https : //dev.mysql.com/doc/refman/5.0/en/resetting-permissions html的
从你的命令中删除-p。 -p强制提示输入密码。
使用: mysql -u root
这将解决您的问题。
试试这个:
mysql -u root
接着:
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
为我工作得很好!
这帮助我在Windows上与MySQL服务器5.6。 确保你改变mysqld
路径指向你已经安装的MySql服务器,对于我来说它是"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-file设置:从开始菜单中选择控制面板,然后选择管理工具,然后选择服务。 在列表中找到MySQL服务,右键单击它,然后选择“属性”选项。 “可执行文件路径”字段包含–defaults-file设置。
服务器启动成功后,删除C:\ mysql-init.txt。
http://docs.oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html
这里可能有点晚了,但这是我做的:
创建文件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
根据文档,在MySQL 5.7临时密码被放在/var/log/mysqld
,但是在5.6中显然不是这样。
在RHEL6.7上安装了MySQL5.6版本后,我终于发现安装时设置的临时root密码被放在/root/.mysql_secret
文件中。