MySQL忘记root密码后修改-阿里云开发者社区

开发者社区> 技术小胖子> 正文

MySQL忘记root密码后修改

简介:
+关注继续查看

MySQL忘记root密码后可以使用下面的方法修改。

1、登录MySQL所在的服务器,手工kill掉MySQL进程

    kill `cat $mysql_data_dir/hostname.pid`

    $mysql_data_dir/hostname.pid为MySQL数据目录,它记录了MySQL服务的进程号。

[root@rhel6 ~]# ps -ef |grep mysql

root      6602     1  0 21:39 ?        00:00:00 /bin/sh ./mysqld_safe --skip-grant-tables --user=mysql

mysql     6754  6602  0 21:39 ?        00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/lib/mysql/rhel6.er

r --pid-file=/var/lib/mysql/rhel6.pidroot      6851  6830  0 21:47 pts/3    00:00:00 grep mysql

[root@rhel6 ~]# cat /var/lib/mysql/rhel6.pid 

6754

[root@rhel6 ~]# kill `cat /var/lib/mysql/rhel6.pid `

[root@rhel6 ~]# ps -ef |grep mysql

root      6859  6830  0 21:48 pts/3    00:00:00 grep mysql

2、使用--skip-grant-tables选项重启MySQL服务

    --skip-grant-tables意思是启动MySQL服务时跳过权限表认证。启动后,连接到MySQL的root将不需要口令。或者在/etc/my.cnf中添加skip-grant-tables参数,启动mysql,service mysql start/systemctl start mysql

[root@rhel6 bin]# ./mysqld_safe --skip_grant-tables --user=mysql &

[1] 6900

[root@rhel6 bin]# 161122 21:52:03 mysqld_safe Logging to '/var/lib/mysql/rhel6.err'.

161122 21:52:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

[root@rhel6 bin]# ps -ef |grep mysql

root      6900  6830  0 21:52 pts/3    00:00:00 /bin/sh ./mysqld_safe --skip_grant-tables --user=mysql

mysql     7052  6900  1 21:52 pts/3    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/lib/mysql/rhel6.er

r --pid-file=/var/lib/mysql/rhel6.pidroot      7075  6830  0 21:52 pts/3    00:00:00 grep mysql

[root@rhel6 bin]# mysql -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.34-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

3、修改root密码

mysql> set password=password('123456');

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> update user set password=password('123456') where user='root' and host='localhost';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

    由于使用了--skip-grant-tables选项启动,使用"set password"命令更改密码失败,直接更新user表的password字段后更改密码成功。

在5.7版本中password有规则策略,123456不符合。

4、刷新权限表

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

5、重新用root登录时,必须输入新密码

[root@rhel6 bin]# mysql -uroot 

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

[root@rhel6 bin]# mysql -uroot -p

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.6.34-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 


参考:《深入浅出MySQL》





     本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1875966,如需转载请自行联系原作者




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

相关文章
oracle数据库实际项目中开发经验总结(上)
  1、在ORACLE中返回游标结果集   写包:   create or replace package pag_cs_power as   type c_Type is ref cursor;   FUNCTION FUN_CS_GETDICTLIST(   v_DictIndex in varchar2) return c_Type;   end pag_cs_power;   函数:
6 0
Oracle的sequence
  概述   Oracle的sequence,就是序列号,它提供一系列的按照事先指定的方式进行增长的数字。oracle sequence的最大值是38个整数。【 Sequences are database objects from which multiple users can generate unique integers.】。一般来说,sequence常用于生成数据库的主键。   Oracle将sequence的定义存储在数据字典之中,因此,所有的sequence都在数据库的SYSTEM表空间里面。
2 0
oracle数据库日期时间格式化及参数详解
  所谓格式化日期指的是将日期转为字符串,或将字符串转为日期,下面几个函数可以用来格式化日期。   TO_CHAR(datetime, 'format')   TO_DATE(character, 'format')   TO_TIMESTAMP(character, 'format')
5 0
Oracle SQL语句优化方法总结
  1、SQL语句尽量用大写的   因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行。   2、使用表的别名   当在SQL语句中连接多个表时, 尽量使用表的别名并把别名前缀于每个列上。这样一来,   就可以减少解析的时间并减少那些由列歧义引起的语法错误。   3、选择最有效率的表名顺序(只在基于规则的优化器(RBO)中有效)
4 0
Oracle常用操作「自己的练习」
  Oracle查询的时候条件要用单引号包裹,不能用双引号。。。。。。。。   连接orcl数据库   C:\Windows\system32>sqlplus sys/123456@orcl as sysdba   SQL*Plus: Release 11.2.0.1.0 Production on 星期五 2月 2 14:32:34 2021   Copyright (c) 1982, 2010, Oracle. All rights reserved.   连接到:   Oracle Database 11g Enterprise Edition Release 11.2.0
3 0
Oracle按时间范围查询sql分享
  查询时间范围内对应的年   SELECT   TO_CHAR (   ADD_MONTHS (   TO_DATE ('2013', 'yyyy'),   (ROWNUM - 1) * 12   ),   'yyyy'   ) AS years
3 0
Swarm的基本认知
  Swarm 是分布式存储平台和内容分发服务,是以太坊 web3 栈的本地基础层服务。Swarm 的主要目标是提供充分分散和冗余存储的以太坊公共记录,尤其是存储和分发 DApp 的代码和数据以及区块链数据。从经济角度来看,它允许参与者有效汇集他们的存储容量和带宽资源,以给网络的所有参与者提供这些服务,同时接受以太坊的激励。   目标   Swarm 更广泛的目标,是为去中心化的 web 应用程序(DApp)开发人员提供基础设施服务,特别是:消息传递、数据流、点对点记账、可变资源更新、存储保险、监管扫描和修复、支付渠道和数据库服务。
3 0
SQLite学习之开篇
  一、简介:   SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。下面我们将列举一下SQLite的主要特征:   1). 管理简单,甚至可以认为无需管理。   2). 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。   3). 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、
4 0
Spider_Python 抓取:华尔街见闻
  #!/usr/bin/env python   # -*- coding:utf-8 -*-   import sys   import re   import urllib, urllib2   import requests   import pymongo   import datetime
3 0
SpringBoot+SpringSecurity 前后端分离 + Jwt 的权限认证
  前言   一般来说,我们用SpringSecurity默认的话是前后端整在一起的,比如thymeleaf或者Freemarker,SpringSecurity还自带login登录页,还让你配置登出页,错误页。   但是现在前后端分离才是正道,前后端分离的话,那就需要将返回的页面换成Json格式交给前端处理了   SpringSecurity默认的是采用Session来判断请求的用户是否登录的,但是不方便分布式的扩展,虽然SpringSecurity也支持采用SpringSession来管理分布式下的用户状态,不过现在分布式的还是无状态的Jwt比较主流。
3 0
13262
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载