﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java Tools-随笔分类-MySQL</title><link>http://www.blogjava.net/simie/category/23715.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 24 Jul 2007 20:43:41 GMT</lastBuildDate><pubDate>Tue, 24 Jul 2007 20:43:41 GMT</pubDate><ttl>60</ttl><item><title>MySQL客户端显示汉字乱码的解决</title><link>http://www.blogjava.net/simie/archive/2007/07/19/131351.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Thu, 19 Jul 2007 12:56:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/19/131351.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/131351.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/19/131351.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/131351.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/131351.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;MySQL客户端显示汉字乱码的解决MySQL 服务端不加任何参数启动时，客户端可以默认正常显示汉字，如下面所示代码:D:mysql5&gt;.binmysqld-max-nt.exe --console061106 20:35:21&nbsp;&nbsp;InnoDB: Started; log sequence number 0 43655061106 20:...&nbsp;&nbsp;<a href='http://www.blogjava.net/simie/archive/2007/07/19/131351.html'>阅读全文</a><img src ="http://www.blogjava.net/simie/aggbug/131351.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-19 20:56 <a href="http://www.blogjava.net/simie/archive/2007/07/19/131351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件之SQLExplorer</title><link>http://www.blogjava.net/simie/archive/2007/07/19/131336.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Thu, 19 Jul 2007 10:24:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/19/131336.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/131336.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/19/131336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/131336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/131336.html</trackback:ping><description><![CDATA[本文介绍如何利用Eclipse插件SQLExplorer在Eclipse中连接各种数据库进行操作使用。
<p>　　Eclipse是目前非常流行的开发平台，开放扩展的架构让很多程序员找到了自己个性化的工作环境。</p>
<h1>安装</h1>
<p>JDK：1.5.0 从<a href="http://java.sun.com/">http://java.sun.com</a>上去下载安装<br>Eclipse：3.1.1 从<a href="http://www.eclipse.org/">http://www.eclipse.org</a> 上去下载解压<br>SQLExplorer 从<a href="http://eclipsesql.sourceforge.net/">http://eclipsesql.sourceforge.net/</a></p>
<h1>技巧</h1>
<p>　　Eclipse使用技巧之插件管理</p>
<p>　　提示：新下载的插件PlugIn一定不要都放在原始的Eclipse目录下去，一大堆，累死你：（</p>
<ol>
    <li>前提是你已经安装好了Eclipse工具了，比如安装在E:\OpenSource\Eclipse\目录下，以下这个目录以%ECLIPSE_HOME%来进行表示；
    <li>此时默认的插件是在%ECLIPSE_HOME%\plugins目录中的；
    <li>在%ECLIPSE_HOME%下建立一个PlugInsNew的目录； </li>
</ol>
<p>　　比如：E:\OpenSource\Eclipse\PlugInsNew\</p>
<ol>
    <li>你下载了个新的插件，比如叫做：XYZ </li>
</ol>
<p>　　那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立XYZ目录，目录里面是eclipse目录，eclipse目录包含有features与plugins两个子目录；结构如下图所示：</p>
<p align=center><img height=410 src="http://dev2dev.bea.com.cn/images/image060126001.jpg" width=220 border=0></p>
<ol>
    <li>把下载的新插件的文件放在以下相应目录中
    <p>%ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features<br>%ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins</p>
    <li>建立相关的.link的文件
    <p>然后在%ECLIPSE_HOME%\links目录里建立一个XYZ.link的文件<br>内容如是：path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行这样的路径指示而已。<br>这样，如果你下载了多个插件就可以如法炮制建立多个Link文件，想加载哪个插件就把哪个插件的Link文件放到%ECLIPSE_HOME%\links的目录中即可，使用与管理都很方便，建议千万不要放在默认的安装目录中；<br>如果你的%ECLIPSE_HOME%与此不同，请修改XYZ.link文件里的路径</p>
    <li>删除，关闭Eclipse
    <p>删除%ECLIPSE_HOME%\links\XYZ.link文件即可<br>删除%ECLIPSE_HOME%\PlugInsNew\XYZ整个目录及文件</p>
    <li>重新启动Eclipse即可 </li>
</ol>
<h1>使用</h1>
<p>　　SQLExplorer插件安装方法采用上一节的《Eclipse使用技巧之插件管理》<br>　　重新启动Eclipse后，可以在菜单Window =&gt; Show View =&gt; Other =&gt; 可以看到多了SQLExplorer<br>展开SQLExplorer有七项内容，分别为：</p>
<ol>
    <li>Aliases 别名，用来标识数据库连接串的
    <li>Connection Info 连接信息，用来显示连接数据库时的相关信息，如，数据库产品名称、版本、JDBC驱动程序的名称、版本、用户名、连接串、是否自动提交等等。
    <li>Connnections 显示活动的连接情况
    <li>Database Structure View 显示数据库结构
    <li>Drivers 配置驱动程序用
    <li>SQL History 执行SQL的历史记录
    <li>SQL Results 执行SQL的结果集 </li>
</ol>
<p>　　下面会分别介绍这七项内容的具体使用：<br>如下图所示：</p>
<p align=center><img height=414 src="http://dev2dev.bea.com.cn/images/image060126002.jpg" width=296 border=0></p>
<p>　　菜单Window =&gt; Preferences =&gt; SQLExplorer<br>右边的项目中，可以设置预览表结果集时返回的行数、SQL集的返回行数、是否自动提交、还是关闭SQL编辑窗口后提交和写SQL时是否自动完成表和列名。</p>
<p align=center><img height=471 src="http://dev2dev.bea.com.cn/images/image060126004.jpg" width=553 border=0></p>
<p>　　菜单Window =&gt; Preferences =&gt; SQLExplorer =&gt; SQL Editor<br>右边的项目中，可以设置SQL编辑器里的字体属性、文本属性</p>
<p align=center><img height=471 src="http://dev2dev.bea.com.cn/images/image060126006.jpg" width=553 border=0></p>
<p>　　菜单Window =&gt; Show View =&gt; Other =&gt; SQLExplorer 把里面的七项内容全部显示出来，你也可以自己进行定制一下它</p>
<p>　　开始进行配置驱动程序，打开Drivers</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126007.jpg" width=553 border=0></p>
<p>　　默认加载成功插件后，只有JDBC ODBC Bridge是打勾可用的，其它都是打红Ｘ不可用的，想想就知道为什么了吧（^_^）</p>
<p>　　没有想出来，接下来看看吧<br>右键JDBC ODBC Bridge，在弹出的菜单中点击Change the selected Driver菜单</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126008.jpg" width=553 border=0></p>
<p>　　可以在弹出的修改驱动程序中看到如下信息，在Driver Class Name显示的是<br>sun.jdbc.odbc.JdbcOdbcDriver<br>因为从JDK1.2开始，在JDK里自动带有这个驱动程序了，所以显示为可用了：）</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126010.jpg" width=553 border=0></p>
<p>　　接下来我们开始配置MySQL和Oracle的驱动程序：<br>右键MMMySQL Driver，在弹出的菜单中点击Change the selected Driver菜单</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126011.jpg" width=553 border=0></p>
<p>　　在弹出的修改驱动程序中看到，在Driver Class Name显示的是org.gjt.mm.mysql.Driver<br>点击Extra Class Path =&gt; Add =&gt; 选择你的MySQL所在的路径，加入它</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126013.jpg" width=553 border=0></p>
<p>　　加入驱动程序如下所示：</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126015.jpg" width=553 border=0></p>
<p>　　单击List Drivers按钮，在Driver Class Name的右下框中可以看到三个驱动类名，选择你需要的一个，OK之即可。</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126017.jpg" width=553 border=0></p>
<p>　　可以看到这下MMMySQL Driver也为打勾可以使用的状态了。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126018.jpg" width=553 border=0></p>
<p>　　以同样的方法配置Oracle Thin Driver驱动程序</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126019.jpg" width=553 border=0></p>
<p>　　默认驱动名称，添加驱动程序：</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126021.jpg" width=553 border=0></p>
<p>　　可以看到两个驱动程序的名称</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126023.jpg" width=553 border=0></p>
<p>　　配置好驱动程序后，可以开始创建连接了，切换到Aliases别名视图<br>点击创建图标，如下：</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126024.jpg" width=553 border=0></p>
<p>　　选择MMMySQL Driver</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126025.jpg" width=553 border=0></p>
<p>　　填入别名的名称、JDBC连接串URL、用户名、密码</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126026.jpg" width=553 border=0></p>
<p>　　确定后，在Aliases别名视图里出现刚建立的连接</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126027.jpg" width=553 border=0></p>
<p>　　右键刚建立的数据库连接别名，在弹出的菜单选择Open&#8230;打开之。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126028.jpg" width=553 border=0></p>
<p>　　会弹出一个连接的确认框，你可以更改用户名与密码，也可以设置是否自动提交。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126029.jpg" width=553 border=0></p>
<p>　　确定后，会自动切换到Database Structure View视图上，MySQL数据库，则可以看到Database</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126030.jpg" width=553 border=0></p>
<p>　　再打开它，可以看到数据库名，Table表及表的个数与名称了。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126031.jpg" width=553 border=0></p>
<p>　　选中其中的表userpwd，这个表是自己建立的，可以看到以下显示列、索引、主键、外键、结果集预览、行数共六个信息内容。</p>
<p>　　以下显示表的列信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126032.jpg" width=553 border=0></p>
<p>　　以下显示索引信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126033.jpg" width=553 border=0></p>
<p>　　以下显示主键信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126034.jpg" width=553 border=0></p>
<p>　　　　以下显示外键信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126035.jpg" width=553 border=0></p>
<p>　　以下显示结果集预览的内容</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126036.jpg" width=553 border=0></p>
<p>　　以下显示的是记录行数信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126037.jpg" width=553 border=0></p>
<p>　　切换到Connection Info连接信息的视图，可以看到连接数据库时的相关信息，<br>如，数据库产品名称MySQL、版本4.1.0a-nt<br>JDBC驱动程序的名称MySQL-AB JDBC Driver、版本mysql-connector-java-3.0.16-ga<br>用户名test@localhost、连接串jdbc:mysql://localhost:3306/test、自动提交模式为是等等。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126038.jpg" width=553 border=0></p>
<p>　　显示默认的事务状态</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126039.jpg" width=553 border=0></p>
<p>　　切换到Connnections视图，显示当前数据库活动的连接情况，有一个活动的连接。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126040.jpg" width=553 border=0></p>
<p>　　右上角，可以打开Open New Connection图标来打开一个新的连接，比如连接到相同的数据库，但是却是不同的用户</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126041.jpg" width=553 border=0></p>
<p>　　右上角，单击New SQL Editor图标，创建一个新的SQL编辑器，来写你的SQL语句</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126042.jpg" width=553 border=0></p>
<p>　　在打开的SQL编辑器中，你可以开始写SQL语句了，如下：</p>
<p align=center><img height=140 src="http://dev2dev.bea.com.cn/images/image060126043.jpg" width=553 border=0><br>按Ctrl + F9 或者点击Exceute SQL图标，执行所输入的语句<br><img height=140 src="http://dev2dev.bea.com.cn/images/image060126044.jpg" width=553 border=0><br>这样可以在SQL Results视图中看到如下执行的结果信息<br><img height=462 src="http://dev2dev.bea.com.cn/images/image060126045.jpg" width=553 border=0></p>
<p>　　　　切换到SQL History 执行SQL的历史记录的视图，可以看到你执行过的语句列表</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126046.jpg" width=553 border=0></p>
<p>　　再写一个不同的语句，演示结果集与SQL历史记录</p>
<p align=center><img height=140 src="http://dev2dev.bea.com.cn/images/image060126047.jpg" width=553 border=0><br>执行后，记录是显示在最后的执行结果是在后面，依次递增的，即1、2、3、最后一个是你最后执行的结果信息内容显示的地方，不要弄错了。<br><img height=462 src="http://dev2dev.bea.com.cn/images/image060126048.jpg" width=553 border=0></p>
<p>　　这样在SQL History里就再增加上了一条执行语句的记录了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126049.jpg" width=553 border=0></p>
<p>　　同样增加一个Oracle的连接测试</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126050.jpg" width=553 border=0></p>
<p>　　Oracle数据库，在Database Structure View视图里显示有Database、Monitor、Security、Instance四项内容</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126051.jpg" width=553 border=0><br>在SQL编辑器中，选择Oracle的链接，再输入查询语句测试一下<br><img height=140 src="http://dev2dev.bea.com.cn/images/image060126052.jpg" width=553 border=0></p>
<p>　　可以在结果集里得到如果内容，在第4个标签栏里了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126053.jpg" width=553 border=0><br>再更改一下SQL语句<br><img height=140 src="http://dev2dev.bea.com.cn/images/image060126054.jpg" width=553 border=0></p>
<p>　　得到如下内容，在第4个标签栏里了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126055.jpg" width=553 border=0></p>
<p>　　SQL历史记录里可以看到执行过的四条信息了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126056.jpg" width=553 border=0></p>
<p>　　这个插件的使用应当不是很容易的，其它的应用技巧与方法继续中。</p>
<!--文章其他信息-->
<img src ="http://www.blogjava.net/simie/aggbug/131336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-19 18:24 <a href="http://www.blogjava.net/simie/archive/2007/07/19/131336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL 常见的密码问题</title><link>http://www.blogjava.net/simie/archive/2007/07/19/131281.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Thu, 19 Jul 2007 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/19/131281.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/131281.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/19/131281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/131281.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/131281.html</trackback:ping><description><![CDATA[<p>方法一 <br>使用phpmyadmin，这是最简单的了，修改mysql库的user表，不过别忘了使用PASSWORD函数。 </p>
<p>方法二 <br>使用mysqladmin，这是前面声明的一个特例。 <br>mysqladmin -u root -p password mypasswd <br>输入这个命令后，需要输入root的原密码，然后root的密码将改为mypasswd。 <br>把命令里的root改为你的用户名，你就可以改你自己的密码了。 <br>当然如果你的mysqladmin连接不上mysql server，或者你没有办法执行mysqladmin，那么这种方法就是无效的，而且mysqladmin无法把密码清空。 </p>
<p>下面的方法都在mysql提示符下使用，且必须有mysql的root权限： <br>方法三 <br>mysql&gt; Insert INTO mysql.user (Host,User,Password) <br>VALUES('%','jeffrey',PASSWORD('biscuit')); <br>mysql&gt; FLUSH PRIVILEGES <br>确切地说这是在增加一个用户，用户名为jeffrey，密码为biscuit。 <br>在《mysql中文参考手册》里有这个例子，所以我也就写出来了。 <br>注意要使用PASSWORD函数，然后还要使用FLUSH PRIVILEGES。 </p>
<p>方法四 <br>和方法三一样，只是使用了REPLACE语句 <br>mysql&gt; REPLACE INTO mysql.user (Host,User,Password) <br>VALUES('%','jeffrey',PASSWORD('biscuit')); <br>mysql&gt; FLUSH PRIVILEGES </p>
<p>方法五 <br>使用SET PASSWORD语句， <br>mysql&gt; SET PASSWORD FOR <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#101;&#102;&#102;&#114;&#101;&#121;&#64;&#37;&#50;&#50;&#37;"><font color=#004299>jeffrey@"%</font></a>" = PASSWORD('biscuit'); <br>拟也必须使用PASSWORD()函数，但是不需要使用FLUSH PRIVILEGES。 </p>
<p><br>方法六 <br>使用GRANT ... IDENTIFIED BY语句 <br>mysql&gt; GRANT USAGE ON *.* TO <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#101;&#102;&#102;&#114;&#101;&#121;&#64;&#37;&#50;&#50;&#37;"><font color=#004299>jeffrey@"%</font></a>" IDENTIFIED BY 'biscuit'; <br>这里PASSWORD()函数是不必要的，也不需要使用FLUSH PRIVILEGES。 </p>
<p><br>注意： PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。<br>MySQL 忘记口令的解决办法<br>如果 MySQL 正在运行，首先杀之： killall -TERM mysqld。 <br>启动 MySQL ：bin/safe_mysqld --skip-grant-tables &amp; <br>就可以不需要密码就进入 MySQL 了。 <br>然后就是 <br>&gt;use mysql<br>&gt;update user set password=password("new_pass") where user="root";<br>&gt;flush privileges;<br>重新杀 MySQL ，用正常方法启动 MySQL 。</p>
<p><br>mysql密码清空<br>Windows: <br>1.用系统管理员登陆系统。 <br>2.停止MySQL的服务。 <br>3.进入命令窗口，然后进入MySQL的安装目录，比如我的安装目录是c:\mysql,进入C:\mysql\bin <br>4.跳过权限检查启动MySQL， <br>c:\mysql\bin&gt;mysqld-nt --skip-grant-tables <br>5.重新打开一个窗口，进入c:\mysql\bin目录，设置root的新密码 <br>c:\mysql\bin&gt;mysqladmin -u root flush-privileges password "newpassword" <br>c:\mysql\bin&gt;mysqladmin -u root -p shutdown <br>将newpassword替换为你要用的root的密码，第二个命令会提示你输入新密码，重复第一个命令输入的密码。 <br>6.停止MySQL Server，用正常模式启动Mysql <br>7．你可以用新的密码链接到Mysql了。</p>
<p>Unix&amp;Linux： <br>1.用root或者运行mysqld的用户登录系统； <br>2．利用kill命令结束掉mysqld的进程； <br>3．使用--skip-grant-tables参数启动MySQL Server <br>shell&gt;mysqld_safe --skip-grant-tables &amp; <br>4.为<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;"><font color=#004299>root@localhost</font></a>设置新密码 <br>shell&gt;mysqladmin -u root flush-privileges password "newpassword"<br>5．重启MySQL Server</p>
<p><br>mysql修改密码<br>　　mysql修改，可在mysql命令行执行如下：<br>　　mysql -u root mysql <br>　　mysql&gt; Update user SET password=PASSWORD("new password") Where user='name'; <br>　　mysql&gt; FLUSH PRIVILEGES; <br>　　mysql&gt; QUIT </p>
<p>&nbsp;</p>
<p>教你如何将MySQL数据库的密码恢复</p>
<p>因为MySQL密码存储于数据库mysql中的user表中，所以只需要将我windows 2003下的MySQL中的user表拷贝过来覆盖掉就行了。 </p>
<p>在c:\mysql\data\mysql\(linux 则一般在/var/lib/mysql/mysql/)目录下有三个user表相关文件user.frm、user.MYD、user.MYI </p>
<p>user.frm //user表样式文件 </p>
<p>user.MYD //user表数据文件 </p>
<p>user.MYI //user表索引文件 </p>
<p>为保险起见，三个都拷贝过来，不过其实如果之前在要恢复的那个MySQL上没有更改过表结构的话，只要拷贝user.MYD就行了 </p>
<p>然后 </p>
<p><br>#. /etc/rc.d/init.d/mysql stop<br>#. /etc/rc.d/init.d/mysql start<br>#mysql -u root -p XXXXXX</p>
<p><br>好了，可以用windows 2003下mysql密码登陆了 </p>
<p><br>mysql&gt;use mysql<br>mysql&gt;update user set Password=PASSWORD('xxxxxx') where User='root';</p>
<p><br>这时候会出错，提示user表只有读权限 </p>
<p>我分析了一下原因，只这样的，因为user.*文件的权限分配是windows 2003下的，在windows 2003下我ls -l一看权限是666 </p>
<p>在linux下我一看，拷过来后权限变成了600(其实正常情况下600就行了，只不过这里的文件属主不是mysql，拷过来后的属主变为了 root,所以会出现权限不够，这时候如果你改成权限666则可以了，当然这样不好，没有解决问题的实质)，在 /var/lib/mysql/mysql/下ls -l看了一下 </p>
<p>再 </p>
<p><br>#chown -R mysql:mysql user.*<br>#chmod 600 user.*</p>
<p><br>//OK,DONE </p>
<p>重起一下MYSQL </p>
<p>重新连接 </p>
<p><br>mysql&gt;use mysql<br>mysql&gt;update user set Password=PASSWORD('xxxxxx') where User='root';<br>mysql&gt;FLUSH PRIVILEGES;</p>
<p><br>有一点值得注意:如果你windows 下mysql如果是默认配置的话，注意要还要执行 </p>
<p><br>mysql&gt;delete from user where User=''; <br>mysql&gt;delete from user where Host='%'; <br>mysql&gt;FLUSH PRIVILEGES;</p>
<p><br>好了，到这里恢复密码过程就完成了 </p>
<p>这个方法么就是有点局限性，你必须也具备另外的user表文件 </p>
<p>其他还有几种方法 </p>
<p>其它方法一(这个是网上流传较广的方法,mysql中文参考手册上的) </p>
<p>1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。 </p>
<p><br>killall -TERM mysqld</p>
<p><br>你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户，才能执行这个操作。 </p>
<p>2. 使用`--skip-grant-tables' 参数来启动 mysqld。 LINUX下： </p>
<p><br>/usr/bin/safe_mysqld --skip-grant-tables , windows下c:\mysql\bin\mysqld --skip-grant-tables</p>
<p><br>3. 然后无密码登录到mysqld server ， </p>
<p><br>&gt;use mysql <br>&gt;update user set password=password("new_pass") where user="root"; <br>&gt;flush privileges;</p>
<p><br>。你也可以这样做： </p>
<p><br>`<br>mysqladmin -h hostname -u user password 'new password''</p>
<p><br>4. 载入权限表： </p>
<p><br>`<br>mysqladmin -h hostname flush-privileges'</p>
<p><br>或者使用 SQL 命令 </p>
<p><br>`FLUSH PRIVILEGES'</p>
<p><br>5.</p>
<p>killall -TERM mysqld</p>
<p><br>6.用新密码登陆 </p>
<p>其它方法二 </p>
<p>直接用十六进制编辑器编辑user.MYD文件 </p>
<p>不过这个里面我要说明一点，我这里编辑的时候发现个问题，加密的密码串有些是连续存储的，有些的最后两位被切开了，后两位存储在后面其他地方.这一 点我还没想明白.还有注意一点就是编辑的是加密过的密码串，也就是说你还是需要另外有user表文件。这种方法和我最上面介绍的方法的区别在于，这种方法 直接编辑linux下的user表文件，就不需要重新改文件属主和权限了&nbsp; </p>
<p>修正一下：我在Windows下的实际操作如下 </p>
<p>1.关闭正在运行的MySQL。 </p>
<p>2.打开DOS窗口，转到mysql\bin目录。 </p>
<p>3.输入 </p>
<p><br>mysqld-nt --skip-grant-tables</p>
<p><br>回车。如果没有出现提示信息，那就对了。 </p>
<p>4.再开一个DOS窗口（因为刚才那个DOS窗口已经不能动了），转到mysql\bin目录。 </p>
<p>5.输入mysql回车，如果成功，将出现MySQL提示符 &gt; </p>
<p>6. 连接权限数据库 </p>
<p><br>&gt;use mysql; <br>(&gt;是本来就有的提示符,别忘了最后的分号)</p>
<p><br>6.改密码： </p>
<p><br>&gt; update user set password=password("123456") where user="root"; (别忘了最后的分号)</p>
<p><br>7.刷新权限（必须的步骤） </p>
<p><br>&gt;flush privileges;</p>
<p><br>8.退出 </p>
<p><br>&gt; \q</p>
<p><br>9.注销系统，再进入，开MySQL，使用用户名root和刚才设置的新密码123456登陆。 </p>
<p>据说可以用直接修改user表文件的方法： </p>
<p>关闭MySQL，Windows下打开Mysql\data\mysql，有三个文件user.frm,user.MYD,user.MYI找个知道密码的MySQL，替换相应的这三个文件，如果user表结构没改过，一般也没人去改，替换user.MYD就可以了。 </p>
<p>也可以直接编辑user.MYD，找个十六进制编辑器，UltraEdit就有这个功能。关闭MySQL，打开user.MYD。将用户名root 后面的八个字符改为565491d704013245，新密码就是123456。或者将它们对应的十六进制数字，（左边那里，一个字符对应两个数字），改 为 00 02 02 02 02 02 02 02,这就是空密码，在编辑器右边看到的都是星号*，看起来很象小数点。重开MySQL，输入root和你的新密码。</p>
<img src ="http://www.blogjava.net/simie/aggbug/131281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-19 15:43 <a href="http://www.blogjava.net/simie/archive/2007/07/19/131281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重新设置MySQL密码</title><link>http://www.blogjava.net/simie/archive/2007/07/17/130897.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Tue, 17 Jul 2007 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/17/130897.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/130897.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/17/130897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/130897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/130897.html</trackback:ping><description><![CDATA[一、在linux中<br>如果&nbsp;MySQL&nbsp;正在运行，首先杀之：&nbsp;killall&nbsp;-TERM&nbsp;mysqld<br>启动&nbsp;MySQL&nbsp;：/usr/bin/safe_mysqld&nbsp;--skip-grant-tables<br>就可以不需要密码就进入&nbsp;MySQL&nbsp;了。&nbsp;<br>然后就是&nbsp;<br>&gt;use&nbsp;mysql&nbsp;<br>&gt;update&nbsp;user&nbsp;set&nbsp;password=password("new_pass")&nbsp;where&nbsp;user="root";&nbsp;<br>&gt;flush&nbsp;privileges;&nbsp;<br>重新杀&nbsp;MySQL&nbsp;，用正常方法启动&nbsp;MySQL&nbsp;。&nbsp;<br>二、Windows:&nbsp;<br>1.用系统管理员登陆系统。&nbsp;<br>2.停止MySQL的服务。&nbsp;<br>3.进入命令窗口，然后进入MySQL的安装目录，比如我的安装目录是c:\mysql,进入C:\mysql\bin&nbsp;<br>4.跳过权限检查启动MySQL，&nbsp;<br>c:\mysql\bin&gt;;mysqld-nt&nbsp;--skip-grant-tables&nbsp;<br>5.重新打开一个窗口，进入c:\mysql\bin目录，设置root的新密码&nbsp;<br>c:\mysql\bin&gt;;mysqladmin&nbsp;-u&nbsp;root&nbsp;flush-privileges&nbsp;password&nbsp;"newpassword"&nbsp;<br>c:\mysql\bin&gt;;mysqladmin&nbsp;-u&nbsp;root&nbsp;-p&nbsp;shutdown&nbsp;<br>将newpassword替换为你要用的root的密码，第二个命令会提示你输入新密码，重复第一个命令输入的密码。&nbsp;<br>6.停止MySQL&nbsp;Server，用正常模式启动Mysql&nbsp;<br>7．你可以用新的密码链接到Mysql了。&nbsp;<br>这种事情很少会碰到,不过如果碰到的话，不妨试试。 <br>
<img src ="http://www.blogjava.net/simie/aggbug/130897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-17 17:32 <a href="http://www.blogjava.net/simie/archive/2007/07/17/130897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>