Linux 常用ping命令详解

Linuxlinyu520 发表了文章 • 0 个评论 • 1499 次浏览 • 2016-11-22 00:13 • 来自相关话题

  不管在windows平台,还是在linux平台,ping都是非常常用的网络命令;ping命令通过ICMP(Internet控制消息协议)工作;ping可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何。
 
一、ping用法:
  ping命令运行在命令提示符终端,用法为:“ping 参数 目标主机”。其中参数为零到多个,目标主机可以是IP或者域名。Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
 二、ping参数详解:
下面是爱E族(aiezu.com)收集整理的ping详细参数,可能部分不全或翻译错误,欢迎指正:参数详解-aAudible ping.-A自适应ping,根据ping包往返时间确定ping的速度;-b允许ping一个广播地址;-B不允许ping改变包头的源地址;-c countping指定次数后停止ping; -d 使用Socket的SO_DEBUG功能;-F flow_label为ping回显请求分配一个20位的“flow label”,如果未设置,内核会为ping随机分配;-f极限检测,快速连续ping一台主机,ping的速度达到100次每秒;-i interval设定间隔几秒发送一个ping包,默认一秒ping一次;-I interface指定网卡接口、或指定的本机地址送出数据包;-l preload设置在送出要求信息之前,先行发出的数据包;-L抑制组播报文回送,只适用于ping的目标为一个组播地址-n 不要将ip地址转换成主机名;-p pattern指定填充ping数据包的十六进制内容,在诊断与数据有关的网络错误时这个选项就非常有用,如:“-p ff”;-q不显示任何传送封包的信息,只显示最后的结果-Q tos设置Qos(Quality of Service),它是ICMP数据报相关位;可以是十进制或十六进制数,详见rfc1349和rfc2474文档;-R记录ping的路由过程(IPv4 only);
注意:由于IP头的限制,最多只能记录9个路由,其他会被忽略;-r忽略正常的路由表,直接将数据包送到远端主机上,通常是查看本机的网络接口是否有问题;如果主机不直接连接的网络上,则返回一个错误。-S sndbufSet socket sndbuf. If not specified, it is selected to buffer not more than one packet.-s packetsize指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节;
包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500);-t ttl设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段数;-T timestamp_option设置IP timestamp选项,可以是下面的任何一个:
  'tsonly' (only timestamps)
  'tsandaddr' (timestamps and addresses)
  'tsprespec host1 [host2 [host3]]' (timestamp prespecified hops). -M hint 设置MTU(最大传输单元)分片策略。
可设置为:
  'do':禁止分片,即使包被丢弃;
  'want':当包过大时分片;
  'dont':不设置分片标志(DF flag);-m mark设置mark;-v使ping处于verbose方式,它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包;-U Print full user-to-user latency (the old behaviour).
Normally ping prints network round trip time, which can be different f.e. due to DNS failures.-W timeout以毫秒为单位设置ping的超时时间;-w deadlinedeadline;参考内容:http://ss64.com/bash/ping.html
 
三、输出格式:



下图为简单的ping产生的响应内容,图中返回内容具体的含义如下:① ping目标主机的域名和IP(ping会自动将域名转换为IP)② 不带包头的包大小和带包头的包大小(参考“-s”参数)③ icmp_seq:ping序列,从1开始;  ttl:剩余的ttl;  time: 响应时间,数值越小,联通速度越快;④ 发出去的包数,返回的包数,丢包率,耗费时间;⑤ 最小/最大/平均响应时间和本机硬件耗费时间;  
 
四、简单例子:
1、每隔0.6秒ping一次,一共ping 5次:[root@aiezu.com ~]# ping -c 5 -i 0.6 qq.com
PING qq.com (14.17.32.211) 56(84) bytes of data.
64 bytes from 14.17.32.211: icmp_seq=1 ttl=54 time=16.5 ms
64 bytes from 14.17.32.211: icmp_seq=2 ttl=54 time=17.0 ms
64 bytes from 14.17.32.211: icmp_seq=3 ttl=54 time=16.6 ms
64 bytes from 14.17.32.211: icmp_seq=4 ttl=54 time=18.3 ms
64 bytes from 14.17.32.211: icmp_seq=5 ttl=54 time=19.9 ms

--- qq.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 2405ms
rtt min/avg/max/mdev = 16.520/17.692/19.919/1.293 ms 
2、极限快速的使用大包ping:
  以最快的速度,使用最大的包进行ping,可用于测试目标主机的承压能力:[root@aiezu ~]# ping -f -s 65507 10.0.0.52
PING 10.0.0.52 (10.0.0.52) 65507(65535) bytes of data.
.^
--- 10.0.0.52 ping statistics ---
646 packets transmitted, 646 received, 0% packet loss, time 1675ms
rtt min/avg/max/mdev = 1.202/2.406/8.253/0.507 ms, ipg/ewma 2.598/2.318 ms注意:此用法非常危险,65535(包头+内容)*100个包每秒=6.25MB,每秒发送6.25MB的数据,相当于50Mbps的带宽,完全可能导致目标主机拒绝服务。请勿用于非法用途,造成不良后果自负。

3、联通不稳定,丢包严重的情形:
  下面的ping发出17个ping icmp包,而只有序号为8、9、12的包收到响应信息,丢包率达82%,联通非常不稳定:[root@aiezu.com ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=8 ttl=43 time=32.3 ms
64 bytes from 8.8.8.8: icmp_seq=9 ttl=43 time=32.2 ms
64 bytes from 8.8.8.8: icmp_seq=12 ttl=43 time=32.0 ms
^C
--- 8.8.8.8 ping statistics ---
17 packets transmitted, 3 received, 82% packet loss, time 16003ms
rtt min/avg/max/mdev = 32.038/32.208/32.362/0.246 ms 
4、完全无法ping通的情形:[root@aiezu.com ~]# ping -c 3 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.

--- 9.9.9.9 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms 
五、常见错误:
1、错误一:ping: packet size too large: 70000WARNING: packet size 65508 is too large. Maximum is 65507
PING 10.0.0.52 (10.0.0.52) 65508(65536) bytes of data.
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500解决:
  将ping的“-s”参数设置一个更小的值,windows最大值为“65500”,linux最大值为“65507”。 查看全部
  不管在windows平台,还是在linux平台,ping都是非常常用的网络命令;ping命令通过ICMP(Internet控制消息协议)工作;ping可以用来测试本机与目标主机是否联通、联通速度如何、稳定性如何。
 
一、ping用法:
  ping命令运行在命令提示符终端,用法为:“ping 参数 目标主机”。其中参数为零到多个,目标主机可以是IP或者域名。
Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination

 二、ping参数详解:
下面是爱E族(aiezu.com)收集整理的ping详细参数,可能部分不全或翻译错误,欢迎指正:
参数详解
-aAudible ping.
-A自适应ping,根据ping包往返时间确定ping的速度;
-b允许ping一个广播地址;
-B不允许ping改变包头的源地址;
-c countping指定次数后停止ping; 
-d 使用Socket的SO_DEBUG功能;
-F flow_label为ping回显请求分配一个20位的“flow label”,如果未设置,内核会为ping随机分配;
-f极限检测,快速连续ping一台主机,ping的速度达到100次每秒;
-i interval设定间隔几秒发送一个ping包,默认一秒ping一次;
-I interface指定网卡接口、或指定的本机地址送出数据包;
-l preload设置在送出要求信息之前,先行发出的数据包;
-L抑制组播报文回送,只适用于ping的目标为一个组播地址
-n 不要将ip地址转换成主机名;
-p pattern指定填充ping数据包的十六进制内容,在诊断与数据有关的网络错误时这个选项就非常有用,如:“-p ff”;
-q不显示任何传送封包的信息,只显示最后的结果
-Q tos设置Qos(Quality of Service),它是ICMP数据报相关位;可以是十进制或十六进制数,详见rfc1349和rfc2474文档;
-R记录ping的路由过程(IPv4 only);
注意:由于IP头的限制,最多只能记录9个路由,其他会被忽略;
-r忽略正常的路由表,直接将数据包送到远端主机上,通常是查看本机的网络接口是否有问题;如果主机不直接连接的网络上,则返回一个错误。
-S sndbufSet socket sndbuf. If not specified, it is selected to buffer not more than one packet.
-s packetsize指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节;
包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500);
-t ttl设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段数;
-T timestamp_option设置IP timestamp选项,可以是下面的任何一个:
  'tsonly' (only timestamps)
  'tsandaddr' (timestamps and addresses)
  'tsprespec host1 [host2 [host3]]' (timestamp prespecified hops). 
-M hint 设置MTU(最大传输单元)分片策略。
可设置为:
  'do':禁止分片,即使包被丢弃;
  'want':当包过大时分片;
  'dont':不设置分片标志(DF flag);
-m mark设置mark;
-v使ping处于verbose方式,它要ping命令除了打印ECHO-RESPONSE数据包之外,还打印其它所有返回的ICMP数据包;
-U Print full user-to-user latency (the old behaviour).
Normally ping prints network round trip time, which can be different f.e. due to DNS failures.
-W timeout以毫秒为单位设置ping的超时时间;
-w deadlinedeadline;
参考内容:http://ss64.com/bash/ping.html
 
三、输出格式:
linux_bash_ping.png
下图为简单的ping产生的响应内容,图中返回内容具体的含义如下:
  • ① ping目标主机的域名和IP(ping会自动将域名转换为IP)
  • ② 不带包头的包大小和带包头的包大小(参考“-s”参数)
  • ③ icmp_seq:ping序列,从1开始;
  •   ttl:剩余的ttl;
  •   time: 响应时间,数值越小,联通速度越快;
  • ④ 发出去的包数,返回的包数,丢包率,耗费时间;
  • ⑤ 最小/最大/平均响应时间和本机硬件耗费时间; 
 
 
四、简单例子:
1、每隔0.6秒ping一次,一共ping 5次:
[root@aiezu.com ~]# ping -c 5 -i 0.6 qq.com
PING qq.com (14.17.32.211) 56(84) bytes of data.
64 bytes from 14.17.32.211: icmp_seq=1 ttl=54 time=16.5 ms
64 bytes from 14.17.32.211: icmp_seq=2 ttl=54 time=17.0 ms
64 bytes from 14.17.32.211: icmp_seq=3 ttl=54 time=16.6 ms
64 bytes from 14.17.32.211: icmp_seq=4 ttl=54 time=18.3 ms
64 bytes from 14.17.32.211: icmp_seq=5 ttl=54 time=19.9 ms

--- qq.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 2405ms
rtt min/avg/max/mdev = 16.520/17.692/19.919/1.293 ms
 
2、极限快速的使用大包ping:
  以最快的速度,使用最大的包进行ping,可用于测试目标主机的承压能力:
[root@aiezu ~]# ping -f -s 65507 10.0.0.52
PING 10.0.0.52 (10.0.0.52) 65507(65535) bytes of data.
.^
--- 10.0.0.52 ping statistics ---
646 packets transmitted, 646 received, 0% packet loss, time 1675ms
rtt min/avg/max/mdev = 1.202/2.406/8.253/0.507 ms, ipg/ewma 2.598/2.318 ms
注意:此用法非常危险,65535(包头+内容)*100个包每秒=6.25MB,每秒发送6.25MB的数据,相当于50Mbps的带宽,完全可能导致目标主机拒绝服务。请勿用于非法用途,造成不良后果自负。

3、联通不稳定,丢包严重的情形:
  下面的ping发出17个ping icmp包,而只有序号为8、9、12的包收到响应信息,丢包率达82%,联通非常不稳定:
[root@aiezu.com ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=8 ttl=43 time=32.3 ms
64 bytes from 8.8.8.8: icmp_seq=9 ttl=43 time=32.2 ms
64 bytes from 8.8.8.8: icmp_seq=12 ttl=43 time=32.0 ms
^C
--- 8.8.8.8 ping statistics ---
17 packets transmitted, 3 received, 82% packet loss, time 16003ms
rtt min/avg/max/mdev = 32.038/32.208/32.362/0.246 ms
 
4、完全无法ping通的情形:
[root@aiezu.com ~]# ping -c 3 9.9.9.9
PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.

--- 9.9.9.9 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms
 
五、常见错误:
1、错误一:
ping: packet size too large: 70000
WARNING: packet size 65508 is too large. Maximum is 65507
PING 10.0.0.52 (10.0.0.52) 65508(65536) bytes of data.
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500
解决:
  将ping的“-s”参数设置一个更小的值,windows最大值为“65500”,linux最大值为“65507”。

MySQL事物表与非事物表的优缺点

回复

Mysqllinyu520 回复了问题 • 1 人关注 • 1 个回复 • 650 次浏览 • 2016-11-21 23:21 • 来自相关话题

MySQL有哪些存储引擎(MySQL存储引擎大全)

Mysqllinyu520 发表了文章 • 0 个评论 • 488 次浏览 • 2016-11-21 00:25 • 来自相关话题

名称介绍MyISAMMyISAM存储引擎提供高速存储和检索,以及全文搜索能力。
MyISAM在所有MySQL版本里被支持;不支持事务处理;它是MySQL的默认的存储引擎;MEMORYMEMORY存储引擎,别称HEAP存储引擎;
提供“内存中”表,将数据存储在内存中。
MEMORY存储引擎不支持事务处理;MySQL的所有版本都支持InnoDB存储引擎;
注释:MEMORY存储引擎正式地被确定为HEAP引擎。MERGEMRG_MYISAM存储引擎,别名MERGE;
MRG_MYISAM存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。
MRG_MYISAM存储引擎不支持事务处理;MySQL的所有版本都支持MRG_MYISAM存储引擎;ISAMObsolete storage engine, now replaced by MyISAM MRG_ISAMObsolete storage engine, now replaced by MERGE InnoDBInnoDB存储引擎,别名INNOBASE;提供事务安全表;
MySQL的所有版本都支持InnoDB存储引擎;它支持事务处理;BDBBDB存储引擎,别名BERKELEYDB;
BDB存储引擎提供事务安全表;
mysql 5.1以下版本才支持此存储引擎;EXAMPLEEXAMPLE存储引擎是一个“存根”引擎,它不做什么。
你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。
这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。
同样,它的主要兴趣是对开发者。NDB
 NDB存储引擎,别名NDBCLUSTER;
NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。
它在MySQL-Max 5.1二进制分发版里提供。
这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。
在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。ARCHIVEARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。CSVCSV存储引擎把数据以逗号分隔的格式存储在文本文件中。
CSV存储引擎不支持事物处理;BLACKHOLEBLACKHOLE存储引擎接受但不存储数据,并且查询也总是返回一个空集;
/dev/null storage engine (anything you write to it disappears)FEDERATEDFEDERATED存储引擎把数据存在远程数据库中。
在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。
在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。
FEDERATED存储引擎支持事务处理; 查看全部
名称介绍
MyISAMMyISAM存储引擎提供高速存储和检索,以及全文搜索能力。
MyISAM在所有MySQL版本里被支持;不支持事务处理;它是MySQL的默认的存储引擎;
MEMORYMEMORY存储引擎,别称HEAP存储引擎;
提供“内存中”表,将数据存储在内存中。
MEMORY存储引擎不支持事务处理;MySQL的所有版本都支持InnoDB存储引擎;
注释:MEMORY存储引擎正式地被确定为HEAP引擎。
MERGEMRG_MYISAM存储引擎,别名MERGE;
MRG_MYISAM存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。
MRG_MYISAM存储引擎不支持事务处理;MySQL的所有版本都支持MRG_MYISAM存储引擎;
ISAMObsolete storage engine, now replaced by MyISAM 
MRG_ISAMObsolete storage engine, now replaced by MERGE 
InnoDBInnoDB存储引擎,别名INNOBASE;提供事务安全表;
MySQL的所有版本都支持InnoDB存储引擎;它支持事务处理;
BDBBDB存储引擎,别名BERKELEYDB;
BDB存储引擎提供事务安全表;
mysql 5.1以下版本才支持此存储引擎;
EXAMPLEEXAMPLE存储引擎是一个“存根”引擎,它不做什么。
你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。
这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。
同样,它的主要兴趣是对开发者。
NDB
 
NDB存储引擎,别名NDBCLUSTER;
NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。
它在MySQL-Max 5.1二进制分发版里提供。
这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。
在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。
ARCHIVEARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。
CSVCSV存储引擎把数据以逗号分隔的格式存储在文本文件中。
CSV存储引擎不支持事物处理;
BLACKHOLEBLACKHOLE存储引擎接受但不存储数据,并且查询也总是返回一个空集;
/dev/null storage engine (anything you write to it disappears)
FEDERATEDFEDERATED存储引擎把数据存在远程数据库中。
在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。
在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。
FEDERATED存储引擎支持事务处理;

MySQL建立临时表的命令是什么

回复

Mysql匿名用户 回复了问题 • 1 人关注 • 1 个回复 • 426 次浏览 • 2016-11-21 00:17 • 来自相关话题

怎么看我的mysql数据库表的存储引擎类型

回复

Mysql匿名用户 回复了问题 • 1 人关注 • 1 个回复 • 419 次浏览 • 2016-11-20 22:39 • 来自相关话题

Windows忘记mysql root密码解决方法

Windowslinyu520 发表了文章 • 55 个评论 • 750 次浏览 • 2016-11-20 17:41 • 来自相关话题

  mysql忘记了root密码,只能让mysql服务运行在“--skip-grant-tables”(跳过权限安全检查)模式,在此模式下,在本机不需要密码就能使用root用户登录到mysql的sql命令行,这样就能使用SQL语句修改root密码了。
 
一、进入“--skip-grant-tables”模式:
  要使mysql服务进入“跳过权限安全检查”模式运行,有两种方法:一是在mysql的安装目录下的“my.ini”配置文件里的“[mysqld]”下面添加“skip-grant-tables”,然后重启mysql服务;二是在启动mysqld服务命令行上面添加“--skip-grant-tables”参数。下面分别详细介绍两种方式:
 
方法一:
  在mysql的安装目录下找到“my.ini”(如果没有,可将“my-default.ini”或者“my-small.ini”复制一份改成“my.ini”),修改“my.ini”,在文件最上面的“[mysqld]”选项组下添加“skip-grant-tables”,如下:[mysqld]
skip-grant-tables
#...省略N行..爱E族:aiezu.com...保存文件,在cmd命令行下运行下面命令重启mysql服务,即mysql服务进入了“skip-grant-tables”模式。net stop mysql
net start mysql
 方法二:
1、首先检查mysql服务是否启动,如果已启动则先将其停止服务,可在cmd命令行下运行下面命令停止服务:net stop mysql停止后,cmd进入到mysql安装目录下的bin目录,运行带“--skip-grant-tables”参数的mysql服务启动命令,临时将mysql服务运行在“跳过权限安全检查”模式:cd C:\Program Files\MySQL\MySQL Server 5.3.2.4\bin\
mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 5.3.2.4\my.ini" --console --skip-grant-tables
二、重置mysql root密码:
新打开一个cmd命令行,输入下面命令,进入到Mysql的SQL语句执行命令行:cd C:\Program Files\MySQL\MySQL Server 5.3.2.4\bin\
mysql -uroot在这里直接回车,不用输入密码。然后就就会出现登录成功的信息。

然后运行下面SQL语句,重置mysql root用户的密码,这里想新密码设置为“aiezu.com”:use mysql;
UPDATE user SET Password=PASSWORD('aiezu.com') where USER='root';
FLUSH PRIVILEGES;
quit
 三、恢复mysql服务到正常模式:
  根据第一步使用的方法不同,去掉“skip-grant-tables”选项,并重启mysql服务,将mysql服务恢复到正常模式运行。
 
四、mysql root密码重置完成:
重新登录,出现输入密码提示,输入新的密码即可登录:mysql -uroot -p
Enter password: ***********密码重置完成!!
 
本文介绍的是Windows忘记mysql root密码解决方法,如果是Linux忘记了root密码,可以参考:Linux忘记mysql root密码解决方法 查看全部
  mysql忘记了root密码,只能让mysql服务运行在“--skip-grant-tables”(跳过权限安全检查)模式,在此模式下,在本机不需要密码就能使用root用户登录到mysql的sql命令行,这样就能使用SQL语句修改root密码了。
 
一、进入“--skip-grant-tables”模式:
  要使mysql服务进入“跳过权限安全检查”模式运行,有两种方法:一是在mysql的安装目录下的“my.ini”配置文件里的“[mysqld]”下面添加“skip-grant-tables”,然后重启mysql服务;二是在启动mysqld服务命令行上面添加“--skip-grant-tables”参数。下面分别详细介绍两种方式:
 
方法一:
  在mysql的安装目录下找到“my.ini”(如果没有,可将“my-default.ini”或者“my-small.ini”复制一份改成“my.ini”),修改“my.ini”,在文件最上面的“[mysqld]”选项组下添加“skip-grant-tables”,如下:
[mysqld]
skip-grant-tables
#...省略N行..爱E族:aiezu.com...
保存文件,在cmd命令行下运行下面命令重启mysql服务,即mysql服务进入了“skip-grant-tables”模式。
net stop mysql
net start mysql

 方法二:
1、首先检查mysql服务是否启动,如果已启动则先将其停止服务,可在cmd命令行下运行下面命令停止服务:
net stop mysql
停止后,cmd进入到mysql安装目录下的bin目录,运行带“--skip-grant-tables”参数的mysql服务启动命令,临时将mysql服务运行在“跳过权限安全检查”模式:
cd C:\Program Files\MySQL\MySQL Server 5.3.2.4\bin\
mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server 5.3.2.4\my.ini" --console --skip-grant-tables

二、重置mysql root密码:
新打开一个cmd命令行,输入下面命令,进入到Mysql的SQL语句执行命令行:
cd C:\Program Files\MySQL\MySQL Server 5.3.2.4\bin\
mysql -uroot
在这里直接回车,不用输入密码。然后就就会出现登录成功的信息。

然后运行下面SQL语句,重置mysql root用户的密码,这里想新密码设置为“aiezu.com”:
use mysql;
UPDATE user SET Password=PASSWORD('aiezu.com') where USER='root';
FLUSH PRIVILEGES;
quit

 三、恢复mysql服务到正常模式:
  根据第一步使用的方法不同,去掉“skip-grant-tables”选项,并重启mysql服务,将mysql服务恢复到正常模式运行。
 
四、mysql root密码重置完成:
重新登录,出现输入密码提示,输入新的密码即可登录:
mysql -uroot -p
Enter password: ***********
密码重置完成!!
 
本文介绍的是Windows忘记mysql root密码解决方法,如果是Linux忘记了root密码,可以参考:Linux忘记mysql root密码解决方法

Linux忘记mysql root密码解决方法

Mysqllinyu520 发表了文章 • 0 个评论 • 709 次浏览 • 2016-11-20 15:52 • 来自相关话题

一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables
二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项) 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法 查看全部
一、使用跳过权限检查的方式运行MySQL服务:
  要使用跳过权限检查的方式运行MySQL服务,有两种方式:1、在mysql服务的配置文件中添加“skip-grant-tables”选项;2、在启动mysql服务的命令后添加“--skip-grant-tables”选项。下面分别讲述两种方法:
 
方法一:修改配置文件的方式:
  修改mysql服务的配置文件“/etc/my.cnf”(根据你的安装方式不同,路径也可能不同),在“[mysqld]”配置组下添加一行“skip-grant-tables”后保存:
[mysqld]
...爱E族..aiezu.com..省略N行...
skip-grant-tables
保存后,重启“mysqld”服务,这时登录mysql就不再需要密码了。
 
方法二:在启动命令的后添加选项的方式:
  在linux终端运行下面命令,停止并重新以“跳过权限检查”的方式运行mysql服务,登录mysql即可不在需要密码:
/etc/init.d/mysql stop
/etc/init.d/mysql start --mysqld --skip-grant-tables

二、设置新密码:
  按上步操作后,在终端运行“mysql -u root”命令,免密码进入mysql的sql命令行,并执行下面SQL语句设置新密码:
use mysql;
--将root密码设置为“aiezu.com”
update user set password=PASSWORD("aiezu.com") where user='root';
flush privileges
  注意:在“skip-grant-tables”模式下,不要尝试使用“mysqladmin password”命令修改密码,否则将会报如下错误:
[root@aiezu.com ~]# mysqladmin password
New password:
Confirm new password:
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with --skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead
 
三、恢复正常启动方式:
  根据第一步的操作不同,选择下面两种方式之一将mysqld服务由“跳过权限检查”模式转换为正常模式,这样就可以使用新设置的密码登录了: 
  • 在“my.cnf”配置文件中去掉“skip-grant-tables”,并重启“mysqld”服务;
  • 停止mysqld服务,并再启动mysqld服务(去掉“--skip-grant-tables”选项)
 
 
[size=14]  本文介绍的是Linux忘记mysql root密码解决方法,如果是Windows忘记了root密码,可以参考:[/size]Windows忘记mysql root密码解决方法

MySQL修改root密码

回复

Mysql匿名用户 回复了问题 • 1 人关注 • 1 个回复 • 402 次浏览 • 2016-11-20 20:37 • 来自相关话题

mysql错误ERROR 1064 (42000)

回复

Mysqllinyu520 回复了问题 • 1 人关注 • 1 个回复 • 654 次浏览 • 2016-11-18 12:41 • 来自相关话题

让Mysql支持事务处理(修改数据库的存储引擎类型)

Mysqllinyu520 发表了文章 • 0 个评论 • 558 次浏览 • 2016-11-18 10:39 • 来自相关话题

  有时我们发现我们的Mysql数据库使用事务时无效,这很有可能是数据库使用的存储引擎(storage engine)不支持事务处理。比如创建数据库时的默认存储引擎“MyISAM”,它是性能优先的存储引擎,不支持事务处理。这时我们可以按下面步骤处理,解决MySQL不支持事务的问题。
 
一、查看数据库的存储引擎:
1、查看MySQL系统当前使用的存储引擎:
  使用SQL“show variables like '%storage_engine%';”命令,可以查看MySQL系统当前使用的存储引擎:MariaDB [aiezu]> show variables like '%storage_engine%';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | MyISAM |
| storage_engine | MyISAM |
+------------------------+--------+
2 rows in set (0.01 sec) 
2、查看指定数据库所有表使用的存储引擎:
  使用“show table status from aiezu;”命令,可以查看指定数据库所有表使用的存储引擎,其中“aiezu”为数据库名。

3、查看指定表的存储引擎:MariaDB [aiezu]> show create table test;
+-------+---------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(36) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
+-------+----------------------------------------------------------+
1 row in set (0.00 sec) 
二、查看当前数据库系统支持的引擎:
  使用show engines;命令可以查看当前数据库支持的引擎:


可以看出,笔者用的MariaDB-5.5.47,支持10种存储引擎,而这10种存储引擎中,只有“InnoDB”、“FEDERATED” 这两种存储引擎支持事务处理。
 
三、修改数据库存储引擎:
1、修改整个系统创建数据表时的默认存储引擎:
  要让以后新建的数据表,默认使用支持事务处理的“InnoDB”做为默认存储引擎,修改“/etc/my.conf”文件,在“[mysqld]”下添加一行“default-storage-engine=InnoDB”,然后重启数据库即可:[mysqld]
...省略N行,爱E族 aiezu.com ...
default-storage-engine=InnoDB 
2、修改已有数据表的存储引擎:
  要将已有的数据表,修改为使用“InnoDB”作为默认存储引擎,通过“alter table”命令:
低版本:mysql> alter table test type=INNODB;
Query OK, 0 rows affected, 1 warning (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0高版本:MariaDB [aiezu]> alter table test ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 
四、测试MySQL事务处理:
  MySQL使用BEGIN(或START TRANSACTION)、COMMIT、ROLLBACK三命令分别代表开始一个事务、提交事务、回滚事务,事务简单的流程如下:--回滚的事务
BEGIN;
-- 事务要执行的操作,update、delete等..
ROLLBACK;

--提交的事务
BEGIN;
-- 事务要执行的操作,update、delete等..
COMMIT;
 事务的简单例子:MariaDB [aiezu]> truncate table test;
Query OK, 0 rows affected (0.00 sec)

MariaDB [aiezu]> BEGIN;
Query OK, 0 rows affected (0.00 sec)

MariaDB [aiezu]> insert test(name,url) values('天猫','tmall.com');
Query OK, 1 row affected (0.00 sec)

MariaDB [aiezu]> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)

MariaDB [aiezu]> insert test(name,url) values('爱E族','aiezu.com');
Query OK, 1 row affected (0.01 sec)

MariaDB [aiezu]> select * from test;
+----+---------+-----------+
| id | name | url |
+----+---------+-----------+
| 2 | 爱E族 | aiezu.com |
+----+---------+-----------+
1 row in set (0.00 sec)  上面可以看出,插入的站点“天猫”,由于在事务里,事务被回滚,所以插入被撤销。但是它的“id:1”已经被其占用,所以后面成功插入的站点“爱E族”使用的ID是“2”。
 
五、常见错误:
错误一:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'type=innodb' at line 1解决方法:
  这个错误是当前MySQL版本不支持type方式设置存储引擎的,将type关键词改成ENGINE 即可。alter table test type=INNODB; --低版本
alter table test ENGINE=INNODB; --高版本 查看全部
  有时我们发现我们的Mysql数据库使用事务时无效,这很有可能是数据库使用的存储引擎(storage engine)不支持事务处理。比如创建数据库时的默认存储引擎“MyISAM”,它是性能优先的存储引擎,不支持事务处理。这时我们可以按下面步骤处理,解决MySQL不支持事务的问题。
 
一、查看数据库的存储引擎:
1、查看MySQL系统当前使用的存储引擎:
  使用SQL“show variables like '%storage_engine%';”命令,可以查看MySQL系统当前使用的存储引擎:
MariaDB [aiezu]> show variables like '%storage_engine%';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | MyISAM |
| storage_engine | MyISAM |
+------------------------+--------+
2 rows in set (0.01 sec)
 
2、查看指定数据库所有表使用的存储引擎:
  使用“show table status from aiezu;”命令,可以查看指定数据库所有表使用的存储引擎,其中“aiezu”为数据库名。

3、查看指定表的存储引擎:
MariaDB [aiezu]> show create table test;
+-------+---------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(36) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
+-------+----------------------------------------------------------+
1 row in set (0.00 sec)
 
二、查看当前数据库系统支持的引擎:
  使用show engines;命令可以查看当前数据库支持的引擎:
QQ图片20161118104554.png
可以看出,笔者用的MariaDB-5.5.47,支持10种存储引擎,而这10种存储引擎中,只有“InnoDB”、“FEDERATED” 这两种存储引擎支持事务处理。
 
三、修改数据库存储引擎:
1、修改整个系统创建数据表时的默认存储引擎:
  要让以后新建的数据表,默认使用支持事务处理的“InnoDB”做为默认存储引擎,修改“/etc/my.conf”文件,在“[mysqld]”下添加一行“default-storage-engine=InnoDB”,然后重启数据库即可:
[mysqld]
...省略N行,爱E族 aiezu.com ...
default-storage-engine=InnoDB
 
2、修改已有数据表的存储引擎:
  要将已有的数据表,修改为使用“InnoDB”作为默认存储引擎,通过“alter table”命令:
低版本:
mysql> alter table test type=INNODB;
Query OK, 0 rows affected, 1 warning (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
高版本:
MariaDB [aiezu]> alter table test ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
 
四、测试MySQL事务处理:
  MySQL使用BEGIN(或START TRANSACTION)、COMMIT、ROLLBACK三命令分别代表开始一个事务、提交事务、回滚事务,事务简单的流程如下:
--回滚的事务
BEGIN;
-- 事务要执行的操作,update、delete等..
ROLLBACK;

--提交的事务
BEGIN;
-- 事务要执行的操作,update、delete等..
COMMIT;

 事务的简单例子:
MariaDB [aiezu]> truncate table test;
Query OK, 0 rows affected (0.00 sec)

MariaDB [aiezu]> BEGIN;
Query OK, 0 rows affected (0.00 sec)

MariaDB [aiezu]> insert test(name,url) values('天猫','tmall.com');
Query OK, 1 row affected (0.00 sec)

MariaDB [aiezu]> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)

MariaDB [aiezu]> insert test(name,url) values('爱E族','aiezu.com');
Query OK, 1 row affected (0.01 sec)

MariaDB [aiezu]> select * from test;
+----+---------+-----------+
| id | name | url |
+----+---------+-----------+
| 2 | 爱E族 | aiezu.com |
+----+---------+-----------+
1 row in set (0.00 sec)
  上面可以看出,插入的站点“天猫”,由于在事务里,事务被回滚,所以插入被撤销。但是它的“id:1”已经被其占用,所以后面成功插入的站点“爱E族”使用的ID是“2”。
 
五、常见错误:
错误一:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'type=innodb' at line 1
解决方法:
  这个错误是当前MySQL版本不支持type方式设置存储引擎的,将type关键词改成ENGINE 即可。
alter table test type=INNODB; --低版本
alter table test ENGINE=INNODB; --高版本