MySql数据库在使用的过程中往往会出现密码忘记,或者是密码验证失败,出现种情况,我在这里汇总出现以下两种方法:
第一种方法:
报错代码:
mysqladmin: connect to server at ‘localhost‘ failed
error: ‘Access denied for user ‘root‘@‘localhost‘ (using password: YES)‘
解决办法:
先停止MySql数据库的服务
service mysqld stop
然后启用MySql数据库的安全模块
mysqld_safe --skip-grant-tables &
在进行使用mysql进行登录到数据库中
mysql -u root -p
进入到数据库中更改root的密码
use mysql
update user set password=PASSWORD("newpassword")where user="root"; #更改的密码为newpassword
flush privileges; 更新权限
quit 退出
最后启动mysql系统的服务,在使用更改的新密码进入到mysql的数据库中,提示登录成功!
service mysqld restart
mysql -u root -p
第二种情况:
忘记本地root的登录密码
解决办法:
1、编辑/etc/my.cnf
在[mysqld] 配置部分添加一行
skip-grant-tables
2、保存后重启mysql
[[email protected] etc]# service mysqld restart
Shutting down MySQL. [ OK ]
Starting MySQL. [ OK ]
3、登录数据库重新设置root密码
[[email protected] ~]# mysql -uroot -p mysql
Enter password:
直接回车进入
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.47-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
执行下列语句
mysql> update user set password=password("mysql") where user=‘root‘;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4、删除/etc/my.cnf文件中添加的“skip-grant-tables”行,重启mysql;
用新设的密码就能正常登录了;