MySQL有时候忘记了root密码是一件伤感的事。这里提供Windows 和 Linux 下的密码重置方法。
站在用户的角度思考问题,与客户深入沟通,找到洛扎网站设计与洛扎网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、主机域名、雅安服务器托管、企业邮箱。业务覆盖洛扎地区。
Windows:
1.以系统管理员身份登陆系统。
2.打开cmd-----net start 查看mysql是否启动。启动的话就停止net stop mysql.
3.我的mysql安装在d:\usr\local\mysql4\bin下。
4.跳过权限检查启动mysql.
d:\usr\local\mysql\bin\mysqld-nt --skip-grant-tables
5.重新打开cmd。进到d:\usr\local\mysql4\bin下:
d:\usr\local\mysql\bin\mysqladmin -u root flush-privileges password "newpassword"
d:\usr\local\mysql\bin\mysqladmin -u root -p shutdown 这句提示你重新输密码。
6.在cmd里net start mysql
7.搞定了。
Linux:
MySQL root密码的恢复方法之一
如果忘记了MySQL root密码,可以用以下方法重新设置:
1.KILL掉系统里的MySQL进程;
killall -TERM MySQLd
2.用以下命令启动MySQL,以不检查权限的方式启动;
safe_MySQLd --skip-grant-tables
3.然后用空密码方式使用root用户登录 MySQL;
MySQL -u root
4.修改root用户的密码;
MySQL update MySQL.user set password=PASSWORD('新密码') where User='root';
MySQL flush privileges;
MySQL quit
重新启动MySQL,就可以使用新密码登录了。
MySQL root密码正确,却怎么也无法从本地登录MySQL,提示
1 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
这里后来经高人指点才发现mysql库中的user表缺少一个root指向host:localhost的数据项,只有一个root指向host:主机名的数据项,故怎么也无法利用root账户登录MySQL。
总结一点就是root账户缺失了访问localhost主机的账户信息,导致无法本地登录。
那有什么办法恢复root登录呢?
这里记录一下今天遇到的纠结事情:
首先kill掉MySQL进程然后在启动mysql的参数中加入
--skip-grant-tables
会发现这时无密码就可以登录mysql了。
当然我们还必须修复root账户丢失的数据项。
这里有两种解决方案:
第一种是因为root账户初始的时候有3条记录,包含root对应localhost,hostname,127.0.0.1三条账户数据,我们可以update host为其他两项中一项为localhost即可。
第二种是直接insert一条记录,host为localhost即可
总结一下:即使root的host包含了主机名,127.0.0.1那么依然是无法正常登录的,这里必须要有localhost的host才行。
如果上面办法还是无法正常登录我们可尝试另一种办法
在本地用mysql命令直接回车可以进入mysql,但是里面只有test和information_schema数据库,没有mysql等数据库,使用use mysql报如下错:
mysql use mysql
ERROR 1044 (42000): Access denied for user "@'localhost' to database 'mysql'
意思是说没有指定user,没有权限访问数据库mysql。
那么用root登录呢,输入正确的密码报如下错:
[root@228827 ~]# mysql -uroot -p123456
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
密码正确的情况下,mysql数据库已经禁止了root用户在本地的登录权限了
MySQL提供跳过访问控制的命令行参数,通过在命令行以此命令启动MySQL服务器:\x0d\x0asafe_mysqld --skip-grant-tables\x0d\x0a即可跳过MySQL的访问控制,任何人都可以在控制台以管理员的身份进入MySQL数据库。\x0d\x0a需要注意的是在修改完密码以后要把MySQL服务器停掉重新启动才会生效\x0d\x0a先找到mysql.server 然后停止mysql服务\x0d\x0a# mysqld_safe --skip-grant-tables --skip-networking \x0d\x0a# mysql\x0d\x0ause mysql;\x0d\x0aupdate user set password=PASSWORD("new-password") where user="root";\x0d\x0aflush privileges;
phpmyadmin登陆出现无法登录MySQL是设置错误造成的,解决方法为:
1、首先打开运行命令窗口,可以通过按住windows键+R的组合键来实现,输入cmd,然后按下回车键。
2、这样就进入了doc的命令窗口。
3、切换到我们安装mysql的盘符。
4、然后再切换到mysql的bin目录。
5、输入mysql -uroot -p。
6、提示输入密码。
7、输入mysql密码之后,然后按下回车键,出现welcome的字样表示登陆成功。
1 进入cmd,停止mysql服务:Net stop mysql
若是停不掉:Ctrl+Alt+Del打开任务管理器,在详细信息里结束mysql.exe任务。
若服务名无效:来到MySQL的安装路径下bin,在命令行中输入mysqld --install;成功:出现Service successfully install代表你已经安装成功;
2 进入bin目录
mysqld -nt --skip-grant-tables
重新打开一个管理员命令提示符输入mysql进入重新改密码就OK了。
再次mysql -u root -p进入操作
mysqlupdate mysql.user set anthentication_string=password(‘你的密码’) where user=‘root’;
mysqlflush privileges;//刷新MySQL的系统权限
mysqlquit;
再次mysql -u root -p进入就可以操作了。
免安装版的mysql可能会出现首次登录不进去的情况,解决办法是:
1、在my.ini文件中mysqld下面加上skip-grant-tables,如图:
2、重启mysql;net restart mysql;
3、输入mysql,出现welcome to mysql字样,表示进入成功,然后show databases;然后use mysql;
4、修改root用户的密码;
update mysql.user setpassword=password('新密码') where user='root' ;
如果是5.7版本以上的则用下面的命令修改密码:
update mysql.user set authentication_string=password('新密码') where user='root' ;
5、flush privileges;
6、去掉my.ini中加入的skip-grant-tables,重启mysql,然后就可以采用新密码进入mysql了。
记住,修改完密码后必须删掉skip-grant-tables,否则mysql还是可以不通过密码进入;
7、重启mysql后再进入mysql可能会提示:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement ;
此时需要输入命令:set password=password('123456');//此处密码必须跟上面设置的密码一样;