天行健

《周易》曰:
天行健,君子以自强不息(乾卦)
地势坤,君子以厚德载物(坤卦)

常用链接

统计

最新评论

2008年12月21日 #

JavaScript写的日期时间控件,很好用,Cosplay了

     摘要: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html>     <head>         ...  阅读全文

posted @ 2008-12-21 02:56 重归本垒(Bing) 阅读(115) | 评论 (1)编辑 收藏

2008年9月26日 #

实时获得服务器上时间

<span id="spnTime"></span><script language="javascript">
var http = new XMLHttpRequest;
http.open(
"HEAD""."false);
http.send(
null);
var curDate = new Date;
var offsetTime = curDate - Date.parse(http.getResponseHeader("Date"));
setInterval(
function()
{
    curDate.setTime(
new Date - offsetTime);
    document.getElementById(
"spnTime").innerHTML = curDate.toLocaleString();
}
1000);
</script>

posted @ 2008-09-26 08:42 重归本垒(Bing) 阅读(41) | 评论 (0)编辑 收藏

2008年9月23日 #

分色菜单CSS使用

 

<!-- 把下列代码加入到head区内 -->
<style>




#tablist a
{
text-decoration
: none;
padding
: 2px 0.2em;
border
: 1px solid #778;
background
: white;
}


#tablist  a:link, #tablist  a:visited
{
color
: navy;
}


#tablist  a:hover
{
color
: black;
background
: lightyellow;
border-color
: navy;
}


#tablist  a.current
{
background
: lightyellow;
}

</style>


<!-- 把下列代码加入到body区内 -->
<label id="tablist">
<href="http://www.yahoo.com">Yahoo</a>
<href="http://www.google.com">Google</a>
<href="http://www.sina.com">退出</a>
</label>

posted @ 2008-09-23 11:53 重归本垒(Bing) 阅读(28) | 评论 (0)编辑 收藏

2008年6月13日 #

linux下安装卸载软件

1、源代码包的安装    
  gzip   -d   apache_1.3.20.tar.gz   (解压)    
  tar   xvf   apache_1.3.20.tar   (解包)    
  cd   apache_1.3.20    
  ./configure   (配置)   ----./configure   --help(查看configure选项)    
  make   (编译)    
  make   install   (安装)    
  make   clean   (卸载)    
   
  注:典型的源代码包可以这样安装,但不都是这样,如webmin    
  要执行其目录下./setup.sh进入交互式配置安装    
  卸载用uninstall程序    
  具体如果不清楚看要安装的包下的README文件    
   
  2、RPM包的安装    
  RPM软件包的一个例子:    
  foo-1.0-1.i386.rpm    
  其中包括软件包的名称(foo),版本号(1.0),发行号(1),和硬件平台(i386)。    
  (1)安装    
  #   rpm   -ivh   foo-1.0-1.i386.rpm    
  foo    
  #######################    
  A.   软件包已被安装    
  #   rpm   -ivh   foo-1.0-1.i386.rpm    
  foo   package   foo-1.0-1   is   already   installed    
  error:   foo-1.0-1.i386.rpm   cannot   be   installed    
  如果你仍旧要安装该软件包,你可以在命令行上使用--replacepkgs   选项,这将忽略该错误信息。    
  B.   文件冲突    
  如果要安装的软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息:    
  #   rpm   -ivh   foo-1.0-1.i386.rpm    
  foo   /usr/bin/foo   conflicts   with   file   from   bar-1.0-1    
  error:   foo-1.0-1.i386.rpm   cannot   be   installed    
  要想让RPM   忽略该错误信息,   请使用--replacefiles   命令行选项    
  C.未解决依赖关系    
  RPM软件包可能依赖于其它软件包,   在安装了特定的软件包之后才能安装该软件包。    
  #   rpm   -ivh   bar-1.0-1.i386.rpm    
  failed   dependencies:    
  foo   is   needed   by   bar-1.0-1    
  你必须安装完所依赖的软件包,才能解决这个问题。如果想强制安装   (但是,这样安装后的软件包未必能正常运行),请使用-nodeps   命令行选项。    
   
  (2)   卸载    
  #   rpm   -e   foo    
  注意:这里使用软件包的名字foo,而不是软件包文件的名字“foo-1.0-1.i386.rpm”.    
  如果其它软件包依赖于你要卸载的软件包,卸载时则会产生错误信息。如:    
  #   rpm   -e   foo    
  removing   these   packages   would   break   dependencies:    
  foo   is   needed   by   bar-1.0-1    
  要想RPM忽略该错误信息继续卸载的话   (但是,依赖于该软件包的程序可能无法运行),   请使用-nodeps   命令行选项。    
  (3)升级    
  #   rpm   -Uvh   foo-2.0-1.i386.rpm    
  foo    
  ###############################    
  当使用旧版本的软件包来升级新版本的软件时,会产生以下错误信息:    
  #   rpm   -Uvh   foo-1.0-1.i386.rpm    
  foo   package   foo-2.0-1   (which   is   newer)   is   already   installed    
  error:   foo-1.0-1.i386.rpm   cannot   be   installed    
  要使RPM   坚持这样“升级”,可使用--oldpackage   命令行参数。    
  (4)查询    
  #   rpm   -q   foo    
  foo-2.0-1    
  软件包指定选项:    
  -a   查询所有已安装的软件包.    
  -f   <file>   将查询包含有文件<file>的软件包    
  -p   <packagefile>    
  查询软件包文件名为<packagefile>的软件包    
  信息选择选项:    
  -i   显示软件包信息,如描述,   发行号,   尺寸,   构建日期,   安装日期,   平台,   以及其它各类信息。    
  -l   显示软件包中的文件列表。    
  -s   显示软件包中所有文件的状态。    
  -d   显示被标注为文档的文件列表(man   手册,   info   手册,   README's,   etc).    
  -c   显示被标注为配置文件的文件列表。这些是要在安装完毕以后加以定制的文件(sendmail.cf,   passwd,   inittab,   etc)。    
  对于那些要显示文件列表的文件,可以增加-v   命令行选项以获得如同   ls   -l   格式的输出。    
  (5)验证    
  验证软件包是通过比较软件包中安装的文件和软件包中的原始文件信息来进行的。除了其它一些东西,验证主要是比较文件的尺寸,   MD5   校验码,   文件权限,   类型,   属主和用户组等。    
  rpm   -V命令用来验证一个软件包,如    
  rpm   -V   foo    
  验证包含特定文件的软件包:    
  rpm   -Vf   /bin/vi    
  验证所有已安装的软件包:    
  rpm   -Va    
  根据一个RPM来验证某个软件包:    
  rpm   -Vp   foo-1.0-1.i386.rpm    
  如果你担心RPM数据库已被破坏,就可以使用这种方式。如果一切校验均正常将不会产生任何输出。如果有不一致的地方,就会显示出来。    
  输出格式是8位长字符串,c   用以指配置文件,接着是文件名.   8位字符的每一个用以表示文件与RPM数据库中一种属性的比较结果。“.”   (点)表示测试通过。    
  以下字符表示某种测试的失败:    
  5   MD5   校验码    
  S   文件尺寸    
  L   符号连接    
  T   文件修改日期    
  D   设备    
  U   用户    
  G   用户组    
  M   模式e   (包括权限和文件类型)    
  如果有信息输出,应当认真加以考虑,是删除,重新安装,还是修正出现的问题。    
  (6)RPM应用的几个例子    
  A.   如你误删了一些文件,   但是不能肯定到底删除了哪些文件。如果你想验证一下整个系统看看都丢失了哪些文件的话,可以键入:    
  rpm   –Va    
  B.若是一些文件丢失了或已被损坏,   就可以重新安装或先卸载再安装该软件包。如果碰到了一个自己不认识的文件,要想查处它属于哪个软件包,可以输入以下命令:    
  rpm   -qf   /usr/X11R6/bin/xjewel    
  而输出的结果会是:    
  xjewel-1.6-1    
  C.   如果发生综合以上两个例子的情况,如文/usr/bin/paste出了问题。你想验证一下拥有该文件的软件包,可又不知道软件包的名字,这时可以简单的键入:    
  rpm   -Vf   /usr/bin/paste    
  这样相应的软件包就会被验证。    
  D.   如果你想了解一个正在使用的程序的详细信息,可以键入如下命令来获得拥有该程序的软件包中的文档信息:    
  rpm   -qdf   /usr/bin/ispell    
  输出结果为:    
  /usr/man/man4/ispell.4    
  /usr/man/man4/english.4    
  …………………………………………………………    
   
  E.   如果你发现了一个新的koules   RPM,但是不知道它是什么东西,可以键入如下命令:    
  rpm   -qip   koules-1.2-2.i386.rpm    
  F.   现在你想了解koules   RPM   所安装的文件。可以键入:    
  rpm   -qlp   koules-1.2-2.i386.rpm    
  图形管理工具:kpackage    
   
  3、shell或java脚本安装    
  基于图形界面的安装,一般基于SHELL或Java语言编写,主要应用于一些办公软件和制图软件及安装程序,如staroffice、oracle的安装,很容易,和windows一样     
   

posted @ 2008-06-13 17:47 重归本垒(Bing) 阅读(120) | 评论 (0)编辑 收藏

2008年6月4日 #

Struts2+spring2时应注意action的单实例问题

Struts2+spring2时应注意action的单实例问题
注意要设置,action bean 的 scope 的值。因为spring的bean默认为单实例,故一定要设scope的值但不能为singleton。

posted @ 2008-06-04 15:25 重归本垒(Bing) 阅读(220) | 评论 (0)编辑 收藏

spring2.0的scope

如何使用spring的作用域:

<bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>

这里的scope就是用来配置spring bean的作用域,它标识bean的作用域。

在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称prototype), Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean。因此,默认情况下Spring2.0现在有五种类型的Bean。当然,Spring2.0对Bean的类型的设计进行了重构,并设计出灵活的Bean类型支持,理论上可以有无数多种类型的Bean,用户可以根据自己的需要,增加新的Bean类型,满足实际应用需求。

1、singleton作用域

当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例,这里要注意的是singleton作用域和GOF设计模式中的单例是完全不同的,单例设计模式表示一个ClassLoader中只有一个class存在,而这里的singleton则表示一个容器对应一个bean,也就是说当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean。

配置实例:

<bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>

或者

<bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/>

2、prototype

prototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的

getBean()

方法)都会产生一个新的bean实例,相当与一个new的操作,对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用bean的后置处理器,该处理器持有要被清除的bean的引用。)

配置实例:

<bean id="role" class="spring.chapter2.maryGame.Role" scope="prototype"/>

或者

<beanid="role" class="spring.chapter2.maryGame.Role" singleton="false"/>

3、request

request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:

request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:

如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:

 

 

<web-app>



<listener>

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

</listener>



</web-app>

<!--
,如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现:
-->
<web-app>

..

<filter>

   
<filter-name>requestContextFilter</filter-name> 

    
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>

</filter> 

<filter-mapping>

    
<filter-name>requestContextFilter</filter-name> 

    
<url-pattern>/*</url-pattern>

</filter-mapping>



</web-app>

 

接着既可以配置bean的作用域了:

<bean id="role" class="spring.chapter2.maryGame.Role" scope="request"/>

4、session

session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效,配置实例:

配置实例:

和request配置实例的前提一样,配置好web启动文件就可以如下配置:

<bean id="role" class="spring.chapter2.maryGame.Role" scope="session"/>

5、global session

global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。

配置实例:

和request配置实例的前提一样,配置好web启动文件就可以如下配置:

<bean id="role" class="spring.chapter2.maryGame.Role" scope="global session"/>

6、自定义bean装配作用域

在spring2.0中作用域是可以任意扩展的,你可以自定义作用域,甚至你也可以重新定义已有的作用域(但是你不能覆盖singleton和prototype),spring的作用域由接口org.springframework.beans.factory.config.Scope来定义,自定义自己的作用域只要实现该接口即可,下面给个实例:

我们建立一个线程的scope,该scope在表示一个线程中有效,代码如下:

 

publicclass MyScope implements Scope 

    privatefinal ThreadLocal threadScope 
= new ThreadLocal() {

          
protected Object initialValue() {

            returnnew HashMap(); 

          }
 

    }


    
public Object get(String name, ObjectFactory objectFactory) 

        Map scope 
= (Map) threadScope.get(); 

        Object object 
= scope.get(name); 

        
if(object==null

          object 
= objectFactory.getObject(); 

          scope.put(name, object); 

        }
 

        
return object; 

    }
 

    
public Object remove(String name) 

        Map scope 
= (Map) threadScope.get(); 

        
return scope.remove(name); 

    }


    publicvoid registerDestructionCallback(String name, Runnable callback) 


    }


    
public String getConversationId() {

       
// TODO Auto-generated method stub

       returnnull;

    }
 

         }

posted @ 2008-06-04 15:21 重归本垒(Bing) 阅读(147) | 评论 (0)编辑 收藏

2008年6月3日 #

org.hibernate.exception.JDBCConnectionException: could not execute query

最近的一个项目在Hibernate使用C3P0的连接池,数据库为Mysql。开发测试没有问题,在运行中每个一段长的空闲时间就出现异常:

org.hibernate.exception.JDBCConnectionException: could not execute query 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:
74
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:
43

Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception
/error: 


** BEGIN NESTED EXCEPTION ** 

com.mysql.jdbc.CommunicationsException 
MESSAGE: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException 
MESSAGE: Broken pipe 

STACKTRACE: 

java.net.SocketException: Broken pipe 
at java.net.SocketOutputStream.socketWrite0(Native Method) 
 
** END NESTED EXCEPTION ** 


查看了Mysql的文档,以及Connector/J的文档以及在线说明发现,出现这种异常的原因是:

Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。

解决的方法有3种:

  1. 增加wait_timeout的时间。
  2. 减少Connection pools中connection的lifetime。
  3. 测试Connection pools中connection的有效性。

当然最好的办法是同时综合使用上述3种方法,下面就DBCP和C3P0分别做一说明,假设wait_timeout为默认的8小时

DBCP增加以下配置信息:

//set to 'SELECT 1' 
validationQuery = "SELECT 1" 
//set to 'true' 
testWhileIdle = "true" 
//some positive integer 
timeBetweenEvictionRunsMillis = 3600000 
//set to something smaller than 'wait_timeout' 
minEvictableIdleTimeMillis = 18000000 
//if you don't mind a hit for every getConnection(), set to "true" 
testOnBorrow = "true" 

C3P0增加以下配置信息:
//获取connnection时测试是否有效 
testConnectionOnCheckin = true 
//自动测试的table名称

automaticTestTable
=C3P0TestTable

//set to something much less than wait_timeout, prevents connections from going stale 
idleConnectionTestPeriod = 18000 
//set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out 
maxIdleTime = 25000 
//if you can take the performance 'hit', set to "true" 
testConnectionOnCheckout = true 

更多的配置信息大家可以查看C3P0文档,Connector/J文档,以及DBCP的文档。

posted @ 2008-06-03 08:55 重归本垒(Bing) 阅读(772) | 评论 (0)编辑 收藏

2008年5月29日 #

Hibernate中如何使用count(*)取得表中记录总数

public int getCount(String emailGroupId, String emailBatchId)
            
throws HibernateException {

        Session session 
= HibernateUtil.currentSession();
        Transaction tx 
= session.beginTransaction();

        String hql 
= "select count(*) from EmailSendInfo where email_group_id = :emailGroupId and batch_id = :batchId";
        Query query 
= session.createQuery(hql);

        query.setString(
"emailGroupId", emailGroupId);
        query.setString(
"batchId", emailBatchId);
        
/**//*
         * for (Iterator it = query.iterate(); it.hasNext();) { return
         * ((Integer) it.next()).intValue(); }
         
*/

        
try {
            
return ((Integer) query.iterate().next()).intValue();
        }
 catch (Exception e) {
            
throw new HibernateException("");
        }
 finally {
            tx.commit();
            HibernateUtil.closeSession();
        }

    }

spring+hibernate

//第一种方法:
  String hql = "select count(*) from User as user";
  Integer count 
= (Integer)getHibernateTemplate().find(hql).listIterator().next();
  
return count.intValue();

//第二种方法:
 String hql = "select count(*) from User as user";
  
return ((Integer)getHibernateTemplate().iterate(hql).next()).intValue();

//第三种方法:
 String hql = "select count(*) from User as user";
 Query query 
=  getHibernateTemplate().createQuery( getSession(),hql);
 
return ((Integer)query.uniqueResult()).intValue(); 

posted @ 2008-05-29 14:59 重归本垒(Bing) 阅读(553) | 评论 (0)编辑 收藏

2008年5月26日 #

mysql中文问题终极解决方案

取出字符中文没有乱码,而写入确是乱码,
在java,jsp,数据库,表格都统一为、utf8或GBK等后,
最后要在,my.ini或my.cnf中加入编码
如:
[mysqld]
default-character-set=utf8
default-storage-engine=INNODB

[client]

port=3306

[mysql]

default-character-set=utf8


 

posted @ 2008-05-26 17:06 重归本垒(Bing) 阅读(53) | 评论 (0)编辑 收藏

linux下mysql(rpm)安装使用手册[转]

下载地址为:http://dev.mysql.com/downloads/mysql/5.1.html,打开此网页,下拉网页找到“Linux x86 generic RPM (statically linked against glibc 2.2.5) downloads项,找到“Server”和“Client programs”项,下载需要的上述两个rpm文件。
2、安装
MySQL
   rpm文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是 –ivh ,其中i表示将安装指定的rmp软件包,V表示安装时的详细信息,h表示在安装期间出现“#”符号来显示目前的安装过程。这个符号将持续到安装完成后才停止。

   1)安装服务器端

   在有两个rmp文件的目录下运行如下命令:

   [root@test1 local]# rpm -ivh
MySQL-server-5.1.7-0.i386.rpm MySQL-client-5.1.7-0.i386.rpm  
显示如下信息。
warning:
MySQL-server-5.1.7-0.i386.rpm

signature: NOKEY, key ID 5072e1f5
   Preparing...       ########################################### [100%]
   1:MySQL-server     ########################################### [100%]
    。。。。。。(省略显示)
   /usr/bin/mysqladmin -u root password 'new-password'
   /usr/bin/mysqladmin -u root -h test1 password 'new-password'
    。。。。。。(省略显示)
   Starting mysqld daemon with databases from /var/lib/mysql
   如出现如上信息,服务端安装完毕。测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
   [root@test1 local]# netstat -nat
   Active Internet connections (servers and established)
   Proto Recv-Q Send-Q Local Address      Foreign Address     State   
   tcp  0  0 0.0.0.0:3306     0.0.0.0:*      LISTEN   
   上面显示可以看出MySQL服务已经启动。
   2)安装客户端
   运行如下命令:
   [root@test1 local]# rpm -ivh
MySQL-client-5.1.7-0.i386.rpm

   warning: MySQL-client-5.1.7-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
   Preparing...    ########################################### [100%]
   1:MySQL-client  ########################################### [100%]
   显示安装完毕。
   用下面的命令连接mysql,测试是否成功。
  三、登录MySQL

   登录MySQL的命令是mysql, mysql 的使用语法如下:
   mysql [-u username] [-h host] [-p[password]] [dbname]
   username 与 password 分别是 MySQL 的用户名与密码,mysql的初始管理帐号是root,没有密码,注意:这个root用户不是Linux的系统用户。MySQL默认用户是root,由于初始没有密码,第一次进时只需键入mysql即可。
   [root@test1 local]# mysql
   Welcome to the MySQL monitor. Commands end with ; or \g.
   Your MySQL connection id is 1 to server version: 4.0.16-standard
   Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
   mysql>
   出现了“mysql>”提示符,恭喜你,安装成功!
   增加了密码后的登录格式如下:
   mysql -u root -p
   Enter password: (输入密码)
   其中-u后跟的是用户名,-p要求输入密码,回车后在输入密码处输入密码。

   注意:这个mysql文件在/usr/bin目录下,与后面讲的启动文件/etc/init.d/mysql不是一个文件。

   四、MySQL的几个重要目录

   MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。

   下面就介绍一下这几个目录。

   1、数据库目录
   /var/lib/mysql/

   2、配置文件
   /usr/share/mysql(mysql.server命令及配置文件)

   3、相关命令
   /usr/bin(mysqladmin mysqldump等命令)

   4、启动脚本
   /etc/rc.d/init.d/(启动脚本文件mysql的目录)
  五、修改登录密码

   MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。

   1、命令
   usr/bin/mysqladmin -u root password 'new-password'
   格式:mysqladmin -u用户名 -p旧密码 password 新密码

   2、例子
   例1:给root加个密码123456。
   键入以下命令 :
   [root@test1 local]# /usr/bin/mysqladmin -u root password 123456
   注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

   3、测试是否修改成功
   1)不用密码登录
   [root@test1 local]# mysql
   ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
   显示错误,说明密码已经修改。
   2)用修改后的密码登录
   [root@test1 local]# mysql -u root -p
   Enter password: (输入修改后的密码123456)
   Welcome to the MySQL monitor. Commands end with ; or \g.
   Your MySQL connection id is 4 to server version: 4.0.16-standard
   Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
   mysql>
   成功!
   这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。

   六、启动与停止

   1、启动
   MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。
   [root@test1 init.d]# /etc/init.d/mysql start

   2、停止
   /usr/bin/mysqladmin -u root -p shutdown

   3、自动启动
   1)察看mysql是否在自动启动列表中
   [root@test1 local]# /sbin/chkconfig --list
   2)把MySQL添加到你系统的启动服务组里面去
   [root@test1 local]# /sbin/chkconfig –- add mysql
   3)把MySQL从启动服务组里面删除。
   [root@test1 local]# /sbin/chkconfig –-del mysql
七、更改MySQL目录

   MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:

   1、home目录下建立data目录
   cd /home
   mkdir data

   2、把MySQL服务进程停掉:
   mysqladmin -u root -p shutdown

   3、把/var/lib/mysql整个目录移到/home/data
   mv /var/lib/mysql /home/data/
   这样就把MySQL的数据文件移动到了/home/data/mysql下

   4、找到my.cnf