Mysql密码忘记修改办法,解决登陆mysql1045问题-阿里云开发者社区

开发者社区> 鬼才神兵> 正文

Mysql密码忘记修改办法,解决登陆mysql1045问题

简介:
+关注继续查看

今天一个朋友的服务器在登陆phpmyadmin的时候提示1045错误,然后进入ssh后登陆数据库仍是1045错误。网上找了各种办法都不成功。

提示如下:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

首先我想到的是进入安全模式进行密码重置,虽没有成功, 但我还是附上方法:

1、停用mysql服务:

/etc/rc.d/init.d/mysqld stop
或者是
service mysqld stop

2、输入命令:

mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

根据环境不同可能会不成功,提示你要进入mysql安装目录进行

那就找到安装目录,我这示例目录是  /alidata/server/mysql  这个常见于阿里服务器的一键安装包。

命令格式如下:

/alidata/server/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

3、登入数据库: 

这个地方特别注意一下,一定要新建一个ssh窗口,登陆这台服务器

mysql -u root mysql

没有密码直接进入mysql

4、进入mysql

 use mysql;

结果如下:
Database changed 

5、更改root密码:

UPDATE user SET Password = password ( '新密码' ) WHERE User = 'root';

结果如下:

Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0
刷新数据库

FLUSH PRIVILEGES;

结果如下:
Query OK, 0 rows affected (0.00 sec)
千万不要忘记在mysql中操作的每条命令后面都要有“;”的。

最后退出

mysql> quit

重启mysql

/etc/rc.d/init.d/mysqld restart
或者是
service mysqld restart

用root登陆mysql

mysql -uroot –p
Enter password:新密码

登陆成功!

下面我要说的方法是上面这种方法不成功的时候的解决办法,这个才是本文的重点!

也不是什么新方法,很多人其实也都会的。

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在修改的过程中任何人都可以登陆mysql修改用户密码的。

我的办法是停止了apache或是nginx服务。

2.编辑 my.cnf文件

vi /etc/my.cnf

如下图所示:

QQ截图20151023025148.png

我们在[mysqld]的启动选项里面加入 skip-grant-tables 其实就是跳过授权表。

原代码如下:

[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
log-error=/alidata/log/mysql/error.log
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

修改后如下:

[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-grant-tables
#skip-external-locking
log-error=/alidata/log/mysql/error.log
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

原文件里面有个 skip-external-locking 我在前面加了# 将它注释掉了!

好了,退出并保存 


:wq!

3.重新启动mysqld 

service mysqld restart

结果如下: 
Stopping MySQL: [ OK ] 
Starting MySQL: [ OK ]
4.登录并修改MySQL的root密码 

mysql 

结果如下:


Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 3 to server version: 3.23.56 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 


 use mysql;

结果如下:
Database changed 

更改root密码:

UPDATE user SET Password = password ( '新密码' ) WHERE User = 'root';

结果如下:

Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0
刷新数据库

FLUSH PRIVILEGES;

结果如下:
Query OK, 0 rows affected (0.00 sec)

5.将MySQL的登录设置修改回来 

vi /etc/my.cnf 

将刚才在[mysqld]的段中加上的skip-grant-tables删除,并把注释的部分改回来。
保存并且退出vi

6.重新启动mysqld 

service mysqld restart 

Stopping MySQL: [ OK ] 
Starting MySQL: [ OK ]


最后启动刚才停止的服务


service httpd restart
service nginx restart

好了,进入phpmyadmin不再有1045提示了!


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL新建用户,授权,删除用户,修改密码
<p style="line-height:28px; font-size:14px; margin-top:10px; margin-bottom:10px; padding-top:0px; padding-bottom:0px; color:rgb(51,51,51); text-indent:28px; font-family:宋体; background-color:rgb(24
1609 0
Oracle 11g sys,system 密码忘记设置解决办法
原文: Oracle 11g sys,system 密码忘记设置解决办法 1.启动sqlplus 2.请输入用户名:  sqlplus/as sysdba 3.输入口令: 直接回车 4.连接到:    Oracle Database 11g Enterprise Edition Release 11.
993 0
MySQL 中两张表主键自增时,Java 后端组成树形结构的解决办法
当需要将两张不同表的数据进行合并处理,并且两张表的主键均为自增,主键同是数字。这时候需要区分的、不同的表进行取值,可以使其中一张表的主键为负数,即-1,-2,-3。 当需要把取出来的两张表分别再存进数据库时,要将之前取值是负数的主键转为正数,而转为正数的方式也很简单,也就是负负得正,即(-(...
1108 0
【MySQL 忘记密码】MySQL忘记密码怎么解决 mysql5.5 windows7
---恢复内容开始--- 如果MySQL 长久不使用,忘记密码,怎么解决??? 1.首先,需要在任务管理器关闭mysql相关的服务进程 2.cmd,进入DOS窗口,进入到mysql的安装路径的bin目录下   3.
1017 0
Mysql总结_02_mysql数据库忘记密码时如何修改
1.从cmd进入mysql的bin下,输入命令  mysqld --skip-grant-tables  回车      注:(输入命令前,确保在任务管理器中已没有mysql的进程在运行,可输入命令:net stop mysql  来关闭mysql服务,切忌此命令结尾没有分号) mysqld --skip-grant-tables的作用:跳过了mysql的用户验证   2.重开一个新的命令行,输入命令:mysql,连上数据库。
731 0
MySQL忘记root密码--不重启mysqd重置root密码
找回丢失mysql root密码 一、启动修改丢失的mysql单实例root密码方法; 1.首先停止mysql /etc/init.d/mysql stop 2.
3849 0
+关注
鬼才神兵
阿里云论坛版主,伪Linux运维,完美主义者。
3
文章
1067
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载