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
[root@localhost etc]# service mysqld restart
Shutting down MySQL. [ OK ]
Starting MySQL. [ OK ]
3、登錄數據庫重新設置root密碼
[root@localhost ~]# 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;
用新設的密碼就能正常登錄了;