<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>四季如風 &#187; mysql</title>
	<atom:link href="http://www.hjide.com/tag/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hjide.com</link>
	<description>每一天我們都在進步</description>
	<lastBuildDate>Fri, 03 Feb 2012 06:26:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>修改mysql的root密码</title>
		<link>http://www.hjide.com/article/202.htm</link>
		<comments>http://www.hjide.com/article/202.htm#comments</comments>
		<pubDate>Sat, 03 Feb 2007 13:40:38 +0000</pubDate>
		<dc:creator>堕落天使</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=202</guid>
		<description><![CDATA[方法一:在/usr/local/mysql/bin/下：./mysqladmin -u root password &#039;new_password&#039;一般安装时用此方法设置。方法二:在mysql状态下：mysql>UPDATE user SET password=PASSWORD(&#039;new_password&#039;) WHERE user=&#039;root&#039;;mysql>FLUSH PRIVILEGES; 方法三:mysql>SET PASSWORD FOR root=PASSWORD(&#039;new_password&#039;); 方法四：（忘记了root密码）如果忘记了 MySQL 的 root 密码，可以用以下方法重新设置： 1. KILL掉系统里的MySQL进程； 2. 用以下命令启动MySQL，以不检查权限的方式启动； mysqld_safe -skip-grant-tables &#038; 3. 然后用空密码方式使用root用户登录 MySQL； mysql -u root 4. 修改root用户的密码； mysql> update mysql.user set password=PASSWORD(&#039;新密码&#039;) where User=&#039;root&#039;;mysql> flush privileges;mysql> quit 5. 重新启动MySQL，就可以使用新密码登录了。]]></description>
		<wfw:commentRss>http://www.hjide.com/article/202.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql数学函数</title>
		<link>http://www.hjide.com/article/164.htm</link>
		<comments>http://www.hjide.com/article/164.htm#comments</comments>
		<pubDate>Mon, 15 Jan 2007 03:51:33 +0000</pubDate>
		<dc:creator>堕落天使</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=164</guid>
		<description><![CDATA[所有的数学函数在一个出错的情况下返回NULL。 &#160;- &#160;单目减。改变参数的符号。 &#160;mysql> select &#8211; 2; &#160;注意，如果这个操作符与一个BIGINT使用，返回值是一个BIGINT！这意味着你应该避免在整数上使用-，那可能有值-2^63！ &#160;ABS(X) &#160;返回X的绝对值。 &#160;mysql> select ABS(2); &#160;-> 2 &#160;mysql> select ABS(-32); &#160;-> 32 &#160;该功能可安全用于BIGINT值。 &#160;SIGN(X) &#160;返回参数的符号，为-1、0或1，取决于X是否是负数、零或正数。 &#160;mysql> select SIGN(-32); &#160;-> -1 &#160;mysql> select SIGN(0); &#160;-> 0 &#160;mysql> select SIGN(234); &#160;-> 1 &#160;MOD(N,M) &#160;　 &#160;% &#160;模 (类似C中的%操作符)。返回N被M除的余数。 &#160;mysql> select MOD(234, 10); &#160;-> 4 &#160;mysql> select 253 % 7; &#160;-> [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/164.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySql正则表达式的描述</title>
		<link>http://www.hjide.com/article/163.htm</link>
		<comments>http://www.hjide.com/article/163.htm#comments</comments>
		<pubDate>Mon, 15 Jan 2007 03:50:12 +0000</pubDate>
		<dc:creator>堕落天使</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=163</guid>
		<description><![CDATA[正则表达式（regex)是定义复杂查询的一个强有力的工具。 这里是一个简单的资料，它忽略了一些详细的信息。 正则表达式定义了一个字符串的规则。最简单的正则表达式不包含任何保留字。例如， 正则表达式hello只和字符串“hello”匹配。一般的正则表达式使用了某些特殊的结构，所以它能匹配更多的字符串。例如，正则表达式hello&#124;word既能匹配字符串“hello”也能匹配字符串“word”。举一个更复杂一点的例子，正则表达式B[an]*s可以匹配字符串“Bananas”、“Baaaaas”、“Bs”以及其他任何以B开头以s结尾的字符串，中间可以包括任意个a和任意个n的组合。 一个正则表达式中的可以使用以下保留字 ^ 所匹配的字符串以后面的字符串开头 mysql> select “fonfo” REGEXP “^fo$”; &#160; &#160; &#160;-> 0（表示不匹配） mysql> select “fofo” REGEXP “^fo”; &#160; &#160; &#160; -> 1（表示匹配） $ 所匹配的字符串以前面的字符串结尾 mysql> select “fono” REGEXP “^fono$”; &#160; &#160; -> 1（表示匹配） mysql> select “fono” REGEXP “^fo$”; &#160; &#160; &#160;-> 0（表示不匹配） .. &#160;匹配任何字符（包括新行） mysql> select “fofo” REGEXP “^f.*”; &#160; &#160; [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/163.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何恢复MYSQL的ROOT口令</title>
		<link>http://www.hjide.com/article/162.htm</link>
		<comments>http://www.hjide.com/article/162.htm#comments</comments>
		<pubDate>Mon, 15 Jan 2007 03:47:33 +0000</pubDate>
		<dc:creator>堕落天使</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=162</guid>
		<description><![CDATA[如果你忘记了你的MYSQL的root口令的话，你可以通过下面的过程恢复。 &#160;1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。 &#160; &#160; &#160;kill `cat /mysql-data-directory/hostname.pid` &#160; &#160; 你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户，才能执行这个操作。 &#160;2. 使用`&#8211;skip-grant-tables&#39; 参数来启动 mysqld。 &#160;3. 使用`mysql -h hostname mysql&#39;命令登录到mysqld server ，用grant命令改变口令。你也可以这样做：`mysqladmin -h hostname -u user password &#39;new password&#39;&#39;。 （其实也可以用use mysql; update user set password =password(&#39;yourpass&#39;) where user=&#39;root&#39;　来做到。） &#160;4. 载入权限表： `mysqladmin -h hostname flush-privileges&#39; ，或者使用 SQL 命令`FLUSH PRIVILEGES&#39;。（当然，在这里，你也可以重启mysqld。）]]></description>
		<wfw:commentRss>http://www.hjide.com/article/162.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL中各种字段的取值范围</title>
		<link>http://www.hjide.com/article/161.htm</link>
		<comments>http://www.hjide.com/article/161.htm#comments</comments>
		<pubDate>Mon, 15 Jan 2007 03:46:13 +0000</pubDate>
		<dc:creator>堕落天使</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=161</guid>
		<description><![CDATA[TINYINT &#160;-128 &#8211; 127 &#160;TINYINT UNSIGNED &#160;0 &#8211; 255 &#160;SMALLINT &#160;-32768 &#8211; 32767 &#160;SMALLINT UNSIGNED &#160;0 &#8211; 65535 &#160;MEDIUMINT &#160;-8388608 &#8211; 8388607 &#160;MEDIUMINT UNSIGNED &#160;0 &#8211; 16777215 &#160;INT 或 INTEGER &#160;-2147483648 &#8211; 2147483647 &#160;INT UNSIGNED 或 INTEGER UNSIGNED &#160;0 &#8211; 4294967295 &#160;BIGINT &#160;-9223372036854775808 &#8211; 9223372036854775807 &#160;BIGINT UNSIGNED &#160;0 &#8211; 18446744073709551615 &#160;FLOAT &#160;-3.402823466E+38 &#8211; -1.175494351E-38 &#160;0 [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/161.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用MySQL内建复制功能来最佳化可用性</title>
		<link>http://www.hjide.com/article/160.htm</link>
		<comments>http://www.hjide.com/article/160.htm#comments</comments>
		<pubDate>Mon, 15 Jan 2007 03:35:56 +0000</pubDate>
		<dc:creator>堕落天使</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=160</guid>
		<description><![CDATA[作者：Michael Tanoviceanu 翻译：limodou 　　在Soundbreak我们每天24小时不间断地播放实况音频和视频，所以对于MySQL的新增的复制特性，我们 不能做出很令人信服的测试。通过测试我们发现，可以使用这个特性来与备份数据库服务器保持数据同步， 这样当主服务器因为某种原因处理失效时，能够使用备份机处理所有的查询。对于这样的要求，配置两台服务器并不困难。我将详细讨论整个处理过程，同时讨论一下当主服务器失效时，如何使用PHP来重定向查询。 　　MySQL内部复制功能是建立在两个或两个以上服务器之间，通过设定它们之间的主- 从关系来实现的。其中一个作为主服务器，其它的作为从服务器。我将详细讨论如何配置两台服务器，将一个设为主服务器，另一个设为从服务器。并且描述一下在它们之间进行切换的处理过程。我是在MySQL的3.23.23版本上进行的配置设置过程，并且也是在这个版本上进行的测试。MySQL开发人员建议最好使用最新版本，并且主-从服务器均使用相同的版本。同时MySQL 3.23版本仍然是beta测试版，而且这个版本可能不能向下兼容。所以因为这个原因，在实际的网站中，我现在还没有使用这个版本。拥有容错能力具有一个好处是，在不需中断任何查询的情况下，对服务器进行升级。 第一步：配置主服务器 　　在这篇文章的剩下篇幅中，我将指定两台服务器。A（IP为10.1.1.1）作为主服务器（简称为主机）。B（IP为10.1.1.2）作为后备服务器（简称为备机）。 　　MySQL的复制功能的实现过程为：备机(B)与主机(A)连接，然后读出主机的二进制更新日志，再将发生的变化合并到自已的数据库中。备机需要一个用户帐号来与主机连接，所以在主机上创建一个帐号，并只给它FILE权限，如下操作： GRANT FILE ON *.* TO replicate@10.1.1.2 IDENTIFIED BY &#39;password&#39;; 　　为了备机能够与主机连接，要在主机上运行&#39;FLUSH PRIVILEGES&#39;，不过不要担心，因为我们将在下面的步骤中停掉服务器。 　　现在我们需要主机数据库的一个快照，并且对主机进行配置，允许生成二进制的更新日志。首先编辑&#39;my.cnf&#39;文件，以便允许二进制更新日志，所以在[mysqld]部分的下面某个地方增加一行：&#39;log-bin&#39;。在下一次服务器启动时，主机将生成二进制更新日志(名为：-bin.)。为了让二进制更新日志有效，关闭MySQL服务程序，然后将主机上的所有数据库目录到另一个目录中，接着重新启动mysqld。请确定得到了所有数据库，否则在进行复制时，如果一个表在主机上存在但在备机上不存在，将因为出错而退出。现在你已经得到了数据的快照，和一个从建立快照以来的二进制日志，上面记录着任何对数据库的修改。请注意MySQL数据文件(*.MYD，*.MYI和*.frm)是依赖于文件系统的，所以你不能仅仅进行文件传输，如从Solaris到Linux。如果你处于一个异种的服务器环境，你将不得不使用mysqldump实用程序或其它的定制脚本来得到数据快照。 第二步：配置备机 　　让我们继续。停掉备机上的MySQL服务程序，并且把从主机上拷贝来的数据库目录移到备机上的data目录下。请确认将目录的拥有者和属组改变为MySQL用户相应值，并且修改文件模式为660(只对拥有者和属组可读、可写)，目录本身为770(只对拥有者和属组可读、可写和可执行)。 　　继续。在备机上启动MySQL服务程序，确认MySQL工作正常。运行几个select查询(不要update或insert 查询)，看一看在第一步中得到的数据快照是否成功。接着，在测试成功后关掉MySQL服务程序。 　　在备机上配置需要访问的主机，以便接收主机的更改。所以需要编辑务机上的&#39;my.cnf&#39;文件，在[mysqld] 部分中增加下面几行： master-host=10.1.1.1 master-user=replicate master-password=password 　　在启动备机服务程序后，备机服务程序将查看在&#39;my.cnf&#39;文件中所指定的主机，查看是否有改变，并且将这些改变合并到自已的数据库中。备机保持了主机的更新记录，这些记录是从主机的&#39;master.info&#39;文件中接收下来的。备机线程的状态可以通过sql命令&#39;SHOW SLAVE-STATUS&#39;看到。在备机上处理二进制日志中如果发生错误，都将导致备机线程的退出，并且在*.err的日志文件中生成一条信息。然后错误可以被改正，接着可以使用sql语句&#39;SLAVE START&#39;来重新启动备机线程。线程将从主机二进制日志处理中断的地方继续处理。 　　至此，在主机上所发生的数据改变应该已经复制到备机上了，要测试它，你可以在主机上插入或更新一条记录，而在备机上选择这条记录。 　　现在我们拥有了从A机到B机的这种主-从关系，这样当A机可能当机的时候，允许我们将所有的查询重定向到B机上去，但是当A机恢复时，我们没有办法将发生的改变恢复到A机中去。为了解决这个问题，我们创建从B机到A机的主-从关系。 第三步：创建相互的主从关系 　　首先在B机上的my.cnf文件中，在[mysqld]部分中加入&#39;log-bin&#39;，接着重新启动mysqld，然后创建可在它的上面执行复制功能的用户帐号，使用： GRANT FILE ON *.* TO replicate@10.1.1.1 IDENTIFIED BY &#39;password&#39;; 　　在B机上运行&#39;FLUSH PRIVILEGES&#39;命令，以便装入在加入复制用户后的新的授权表，接着回到A机上，在它的&#39;my.cnf&#39;中加入下面几行： master-host=10.1.1.2 master-user=replicate master-password=password 　　在重启A机的服务程序之后，现在我们一拥有了在A机与B机之间的相互主-从关系。不管在哪个服务器上更新一条记录或插入一条记录，都将被复制到另一台服务器上。要注意的是：我不敢确定一个备机合并二进制日志变化的速度有多快，所以用这种方法来进行插入或更新语句的负载平衡可能不是一个好办法。 [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/160.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL使用tips</title>
		<link>http://www.hjide.com/article/114.htm</link>
		<comments>http://www.hjide.com/article/114.htm#comments</comments>
		<pubDate>Sun, 17 Dec 2006 15:02:22 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=114</guid>
		<description><![CDATA[1、用mysql内置函数转换ip地址和数字利用两个内置函数inet_aton:将ip地址转换成数字型inet_ntoa:将数字型转换成ip地址2、充分利用mysql内置的format函数尤其是在处理字符格式的时候,例如将12345转换成12,345这样的,只要用:format(12345,0)即可,如果用format(12345,2)则显示的是12,345.00了&#8230;3、利用mysql的内置函数处理时间戳问题eg : select FROM_UNIXTIME(UNIX_TIMESTAMP(),&#39;%Y %D %M %h:%i:%s %x&#39;);结果: 2004 3rd August 03:35:48 20044、利用mysql_convert_table_format转换表类型需要DBI和DBD的mysql相关模块支持才能用,例子:mysql_convert_table_format &#8211;user=root &#8211;password=&#39;xx&#39; &#8211;type=myisam test yejr5、修改mysql表中的字段名alter table tb_name change old_col new_col definition&#8230;6、利用临时变量select @var1:=a1+a2 as a_sum,@var2:=b1+b2 as b_sum,@var1+@var2 as total_sum from test_table xxx;7、用int类型存储ip地址原先错误的认为必须用bigint才够，后来发现使用int unsigned类型就足够了。 8、CREATE TABLE IF NOT EXISTS &#8230; select 语法局限尽管只是对目标表的insert操作，但是‘居然’不允许源表的insert操作，真是莫名其妙9、利用IF函数快速修改ENUM字段值一个例子：update rule set enable = if(&#39;0&#39; = enable,&#39;1&#39;,&#39;0&#39;) where xxx;enable 类型：enum(&#39;0&#39;,&#39;1&#39;) not null [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/114.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL到ORACLE程序迁移的注意事项</title>
		<link>http://www.hjide.com/article/113.htm</link>
		<comments>http://www.hjide.com/article/113.htm#comments</comments>
		<pubDate>Sun, 17 Dec 2006 15:01:36 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=113</guid>
		<description><![CDATA[有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求，随着应用用户的增多，数据量的增加，MYSQL渐渐地出现不堪重负的情况：连接很慢甚至宕机，于是就有把数据从MYSQL迁到ORACLE的需求，应用程序也要相应做一些修改。本人总结出以下几点注意事项，希望对大家有所帮助。 1． 自动增长的数据类型处理 MYSQL有自动增长的数据类型，插入记录时不用操作此字段，会自动获得数据值。 ORACLE没有自动增长的数据类型，需要建立一个自动增长的序列号，插入记录时要把序列号的下一个值赋于此字段。 CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; 其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL 2. 单引号的处理 MYSQL里可以用双引号包起字符串，ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换：把所有出现的一个单引号替换成两个单引号。 3. 翻页的SQL语句的处理 MYSQL处理翻页的SQL语句比较简单，用LIMIT 开始位置, 记录个数；PHP里还可以用SEEK定位到结果集的位置。 ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM80。 以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 )： 语句一： SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/113.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql日期和时间函数</title>
		<link>http://www.hjide.com/article/112.htm</link>
		<comments>http://www.hjide.com/article/112.htm#comments</comments>
		<pubDate>Sun, 17 Dec 2006 14:57:18 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=112</guid>
		<description><![CDATA[对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。 &#160;这里是一个使用日期函数的例子。下面的查询选择了所有记录，其date_col的值是在最后30天以内： &#160;mysql> SELECT something FROM table &#160;WHERE TO_DAYS(NOW()) &#8211; TO_DAYS(date_col) select DAYOFWEEK(&#39;1998-02-03&#39;); &#160;-> 3 &#160;WEEKDAY(date) &#160;返回date的星期索引(0=星期一，1=星期二, ……6= 星期天)。 &#160;mysql> select WEEKDAY(&#39;1997-10-04 22:23:00&#39;); &#160;-> 5 &#160;mysql> select WEEKDAY(&#39;1997-11-05&#39;); &#160;-> 2 &#160;DAYOFMONTH(date) &#160;返回date的月份中日期，在1到31范围内。 &#160;mysql> select DAYOFMONTH(&#39;1998-02-03&#39;); &#160;-> 3 &#160;DAYOFYEAR(date) &#160;返回date在一年中的日数, 在1到366范围内。 &#160;mysql> select DAYOFYEAR(&#39;1998-02-03&#39;); &#160;-> 34 &#160;MONTH(date) &#160;返回date的月份，范围1到12。 &#160;mysql> select MONTH(&#39;1998-02-03&#39;); &#160;-> 2 &#160;DAYNAME(date) &#160;返回date的星期名字。 [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/112.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

