<?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>【知行合一】-Poople&#039;s Blog &#187; MySQL数据库</title>
	<atom:link href="http://99dev.net/archives/category/tech/mysqlserv/feed" rel="self" type="application/rss+xml" />
	<link>http://99dev.net</link>
	<description>智巧终归庸俗，雄谋只余虚话</description>
	<lastBuildDate>Wed, 12 Oct 2011 01:19:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Linux Server时间校对 &#8211; 优雅式</title>
		<link>http://99dev.net/archives/871</link>
		<comments>http://99dev.net/archives/871#comments</comments>
		<pubDate>Thu, 15 Jul 2010 08:36:58 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[系统架构]]></category>
		<category><![CDATA[网络管理]]></category>
		<category><![CDATA[databse]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://99dev.net/archives/871</guid>
		<description><![CDATA[在《解决Linux Server时间不准确的问题》一文中，使用了crontab定期执行ntpdate来校对时间。之后恰巧某博客上的文章，提出一个观点“时钟的跃变，有时候会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟，这是一项常见的假定，即，取得的时间是线性的，一些操作，例如数据库事务， 通常会地依赖这样的事实：时间不会往回跳跃。”时间的瞬变，对于crontab等对时间敏感的系统任务，也是很容易造成错乱的。

优雅的解决方案是，在机器刚开机时，执行ntpupdate直接修改系统时间，然后启动ntpd守护进程，渐进式逼近地调整系统时间，基本可以做到分毫不差。
误差小的时候，ntpd不会直接修改系统时间的，只是对时钟频率进行校正。这种方式好处是系统时间不会有跳变，不会影响像crontab这样程序的运行，缺点是校正需要一定的时间。
<span class="readmore"><a href="http://99dev.net/archives/871" title="Linux Server时间校对 &#8211; 优雅式" target="_blank">阅读全文——共585字</a></span>]]></description>
			<content:encoded><![CDATA[<p>在《解决Linux Server时间不准确的问题》一文中，使用了crontab定期执行ntpdate来校对时间。之后恰巧某博客上的文章，提出一个观点“时钟的跃变，有时候会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟，这是一项常见的假定，即，取得的时间是线性的，一些操作，例如数据库事务， 通常会地依赖这样的事实：时间不会往回跳跃。”时间的瞬变，对于crontab等对时间敏感的系统任务，也是很容易造成错乱的。<br />
<span id="more-871"></span><br />
优雅的解决方案是，在机器刚开机时，执行ntpupdate直接修改系统时间，然后启动ntpd守护进程，渐进式逼近地调整系统时间，基本可以做到分毫不差。</p>
<p>误差小的时候，ntpd不会直接修改系统时间的，只是对时钟频率进行校正。这种方式好处是系统时间不会有跳变，不会影响像crontab这样程序的运行，缺点是校正需要一定的时间。</p>
<p>RHEL系统上，我们常用ntpd来完成该任务；而在Ubuntu系统里，我们则用openntpd来替代它。相对ntpd，openntpd是轻量级的网络时间协议，设置比较简单。<br />
关于ntpd和openntpd的设置，参考以下2篇文章</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">NTP 時間伺服器 &nbsp; &nbsp; http://linux.vbird.org/linux_server/0440ntp.php<br />
设定 OpenNTPD &nbsp; &nbsp; http://wiki.debian.org.hk/w/Setup_OpenNTPD</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/871/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Original]Linux MySQL备份策略</title>
		<link>http://99dev.net/archives/699</link>
		<comments>http://99dev.net/archives/699#comments</comments>
		<pubDate>Fri, 30 Oct 2009 06:07:16 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[其他Linux技术]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://99dev.net/archives/699</guid>
		<description><![CDATA[MySQL在Linux应用环境中，一般都是最重要的业务，定期备份是必须的。一般有如下几种策略：
1.拷贝文件系统 &#8211; 停止服务，copy 数据库目录；启动服务      (需要停止服务一段时间，期间不接受写入操作)
2.MySQL自带工具mysqldump，这也是最常用的方式      (能在备份的过程lock tables，一定程度上保证数据的一致性)
3.MySQL自带工具mysqlhotcopy      (文件系统级拷贝工具，能在备份过程lock tables，只对MyISAM表格有效)
<span class="readmore"><a href="http://99dev.net/archives/699" title="[Original]Linux MySQL备份策略" target="_blank">阅读全文——共2456字</a></span>]]></description>
			<content:encoded><![CDATA[<p>MySQL在Linux应用环境中，一般都是最重要的业务，定期备份是必须的。一般有如下几种策略：</p>
<blockquote><p>1.拷贝文件系统 &#8211; 停止服务，copy 数据库目录；启动服务      <br />(需要停止服务一段时间，期间不接受写入操作)</p>
<p>2.MySQL自带工具mysqldump，这也是最常用的方式      <br />(能在备份的过程lock tables，一定程度上保证数据的一致性)</p>
<p>3.MySQL自带工具mysqlhotcopy      <br />(文件系统级拷贝工具，能在备份过程lock tables，只对MyISAM表格有效)</p>
<p>4.热备(未跑在生产环境中，等做完发上来)</p>
</blockquote>
<p> <span id="more-699"></span>
<p>· mysql库不支持lock，详细请参考<a title="http://planet.mysql.com/entry/?id=17913" href="http://planet.mysql.com/entry/?id=17913">http://planet.mysql.com/entry/?id=17913</a>     <br />只能使用mysqldump+”&#8211;lock-tables=0”来实现</p>
<p><strong>· UUD*</strong>库使用mysqldump备份有问题，只能采用mysqlhotcopy</p>
<p>· 其他的采用mysqldump和mysqlhotcopy，就看个人习惯</p>
<p>&#160;</p>
<p><strong><font size="2">附上利用python语言写的备份脚本 &#8211; backup_mysql.py        <br />支持备份到本地和远程FTP</font></strong></p>
<blockquote><p>#!/usr/bin/python      <br /># coding=gb2312 </p>
<p>import os      <br />import time       <br />import ftplib       <br />import traceback </p>
<p>#config vars      <br />systempathchr=&quot;/&quot; #路径分割符，*nix用&quot;/&quot; win32用&quot;\\&quot;       <br />dbuser=&quot;mysqlhotcopy&quot; #数据库用户名       <br />dbpwd=&quot;8jsu0uo2dx9d&quot; #数据库密码       <br />dbnamelist=[&quot;fb555&quot;,&quot;114la&quot;] #需要备份那些数据库 </p>
<p>workdir=&quot;/data1/backup_zone/data_mysql&quot; #本地备份文件夹      <br />errlogfile=&quot;databack.log&quot; #错误日志名       <br />ftp_addr=&quot;192.168.0.2&quot; #ftp地址       <br />ftp_port=&quot;2102&quot; #ftp端口       <br />ftp_user=&quot;databack&quot; #ftp用户名       <br />ftp_pwd=&quot;backpwd&quot; #ftp密码       <br />ftp_path=&quot;/&quot; #存放到ftp路径 </p>
<p>ftpqueue=[] </p>
<p>def ftpstor():      <br />&#160;&#160;&#160; #login       <br />&#160;&#160;&#160; bufsize=1024       <br />&#160;&#160;&#160; ftp=ftplib.FTP()       <br />&#160;&#160;&#160; try:       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ftp.connect(ftp_addr,ftp_port)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ftp.login(ftp_user,ftp_pwd)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ftp.cwd(ftp_path)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; for filepath in ftpqueue:       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #open file for input as binary       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; f=open(filepath,&quot;rb&quot;)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; #store file as binary       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; print getfilename(filepath)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ftp.storbinary(&quot;STOR &quot;+getfilename(filepath),f,bufsize)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; f.close()       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ftp.quit()       <br />&#160;&#160;&#160; except:       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; path=os.path.join(workdir,errlogfile)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; traceback.print_exc(file=open(path,&quot;a&quot;)) </p>
<p>def dumpdb(dbname):      <br />&#160;&#160;&#160; global ftpqueue       <br />&#160;&#160;&#160; timeformat=&quot;%Y%m%d&quot;       <br />&#160;&#160;&#160; sqlvalformat=&quot;mysqldump &#8211;socket=/tmp/mysql.sock -u%s -p\&quot;%s\&quot; \&quot;%s\&quot; &gt;\&quot;%s\&quot;&quot;       <br />&#160;&#160;&#160; tarvalformat=&quot;tar &#8211;directory=\&quot;%s\&quot; -zcf \&quot;%s\&quot; \&quot;%s\&quot;&quot;       <br />&#160;&#160;&#160; nowdate=time.strftime(timeformat)       <br />&#160;&#160;&#160; dumpfile=os.path.join(workdir,dbname+&quot;.dump&quot;)       <br />&#160;&#160;&#160; zipfile=os.path.join(workdir,dbname+&quot;_&quot;+nowdate+&quot;.tar.gz&quot;)       <br />&#160;&#160;&#160; sqlval=sqlvalformat % (dbuser,dbpwd,dbname,dumpfile)       <br />&#160;&#160;&#160; result=os.system(sqlval)       <br />&#160;&#160;&#160; tarval=tarvalformat % (workdir,zipfile,dbname+&quot;.dump&quot;) </p>
<p>&#160;&#160;&#160; result=os.system(tarval)      <br />&#160;&#160;&#160; os.remove(dumpfile)       <br />&#160;&#160;&#160; ftpqueue.append(zipfile) </p>
<p>def getfilename(path):      <br />&#160;&#160;&#160; pt=path.rfind(systempathchr)       <br />&#160;&#160;&#160; return path[pt+1:]       <br />def main():       <br />&#160;&#160;&#160; for dbname in dbnamelist:       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; dumpdb(dbname)       <br />#&#160;&#160;&#160; ftpstor() </p>
<p>main() </p>
<p>#from <a href="https://d4e.org/showthread.php?t=76803&amp;highlight=mysql+%E5%A4%87%E4%BB%BD">https://d4e.org/showthread.php?t=76803&amp;highlight=mysql+%E5%A4%87%E4%BB%BD</a></p>
</blockquote>
<p><strong></strong></p>
<p><strong>Tips      <br /></strong><strong>·创建用于操作备份过程的mysql账户mysqlhotcopy</strong></p>
<blockquote><p><font size="1">GRANT SELECT ,        <br />RELOAD ,         <br />SHOW DATABASES ,         <br />LOCK TABLES ON * . * TO &#8216;mysqlhotcopy&#8217;@'localhost&#8217; WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;</font></p>
</blockquote>
<p>*UUD=UCenter+UChome+Discuz三者搭配的应用</p>
<p>·执行脚本需要用户有登录shell，空密码即可(保障安全，禁止ssh登陆)   </p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/699/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[original]Ubuntu Server中自定义Mysql dbdir路径</title>
		<link>http://99dev.net/archives/654</link>
		<comments>http://99dev.net/archives/654#comments</comments>
		<pubDate>Tue, 08 Sep 2009 11:59:17 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://99dev.net/archives/654</guid>
		<description><![CDATA[依赖RHEL的使用习惯，以为直接在/etc/my.cnf修改”dbdir=/var/lib/mysql”即可。事实证明，此经验是行不通的。在Ubuntu Server中，只要按此修改，再启动mysqld’’/etc/init.d/mysql start’’，执行结果一定是failed。
Ubuntu Server采取了Suse的杀手级应用AppArmor，对一些关键业务的读写权限有严格限制。需要改动这些业务，需要在AppArmor模块中加入Allow规则。

具体操作流程如下：
<span class="readmore"><a href="http://99dev.net/archives/654" title="[original]Ubuntu Server中自定义Mysql dbdir路径" target="_blank">阅读全文——共612字</a></span>]]></description>
			<content:encoded><![CDATA[<p>依赖RHEL的使用习惯，以为直接在/etc/my.cnf修改”dbdir=/var/lib/mysql”即可。事实证明，此经验是行不通的。在Ubuntu Server中，只要按此修改，再启动mysqld’’/etc/init.d/mysql start’’，执行结果一定是failed。</p>
<p>Ubuntu Server采取了Suse的杀手级应用<a href="http://www.linux-cn.com/html/linux/publish/suse/20070411/1153.html">AppArmor</a>，对一些关键业务的读写权限有严格限制。需要改动这些业务，需要在AppArmor模块中加入Allow规则。</p>
<p><span id="more-654"></span></p>
<p>具体操作流程如下：</p>
<p>1.修改MySQL dbdir参数</p>
<blockquote><p>#vim /etc/my.cnf<br />
dbdir = /data0/data_mysql</p></blockquote>
<p>2.在AppArmor中加入Allow规则</p>
<blockquote><p>vim /etc/apparmor.d/usr.sbin.mysqld<br />
/var/lib/mysql/ r,<br />
/var/lib/mysql/** rwk,</p></blockquote>
<p>修改为</p>
<blockquote><p>/data0/data_mysql/ r,<br />
/data0/data_mysql/** rwk,</p></blockquote>
<p>3.重新建立mysql数据库</p>
<blockquote><p>sudo mysql_install_db</p></blockquote>
<p>4.启动mysql服务</p>
<blockquote><p>sudo /etc/init.d/mysql start</p></blockquote>
<p>5.设置数据库密码</p>
<blockquote><p>mysqladmin –u root password ‘newpassword’</p></blockquote>
<p>6.在/etc/mysql/debian.cnf中找到你的debian-sys-maint用户密码，在mysql中重新建立这个用户。</p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/654/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Original]UCHome+UCenter+Discuz迁移指南</title>
		<link>http://99dev.net/archives/614</link>
		<comments>http://99dev.net/archives/614#comments</comments>
		<pubDate>Mon, 31 Aug 2009 07:10:51 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[Web服务器]]></category>
		<category><![CDATA[其他]]></category>
		<category><![CDATA[其他Linux技术]]></category>

		<guid isPermaLink="false">http://99dev.net/archives/614</guid>
		<description><![CDATA[1.www目录备份
分别进各个站点的后台，关闭站点，不要再有数据写入。
打包www目录，下载到本机备用。
2.数据库备份
<span class="readmore"><a href="http://99dev.net/archives/614" title="[Original]UCHome+UCenter+Discuz迁移指南" target="_blank">阅读全文——共1118字</a></span>]]></description>
			<content:encoded><![CDATA[<p>1.www目录备份<br />
分别进各个站点的后台，关闭站点，不要再有数据写入。</p>
<p>打包www目录，下载到本机备用。</p>
<p>2.数据库备份</p>
<p><span id="more-614"></span></p>
<p>经测试，使用phpmyadmin备份出来的数据不完整。<br />
因此，备份请使用程序后台自带的备份程序。</p>
<blockquote><p>备份数据库的顺序应该是UCHome-UCenter-Discuz。</p></blockquote>
<p>将备份数据库下载到本机备用。</p>
<p>3.逐一导入sql文件到新的数据库，顺序为UCHome-UCenter-Discuz。数据库编码类型选gbk-chinese-ci。</p>
<blockquote><p>注意：在有条件的情况下，尽量使用Linux shell来还原数据库，在出错的时候，能提供错误报告，方便排查；如果使用phpmyadmin导入，请记得修改”php.ini”中”Post_max_size”和”upload_max_filesize”两个值到适当大小。</p></blockquote>
<p>4.上传备份的www目录，修改各个config文件</p>
<blockquote><p>Discuz! 的配置文件为程序根目录下的 config.inc.php</p>
<p>UCenter Home 的配置文件为程序根目录下的config.php</p>
<p>UCenter 的配置文件为程序 data 目录下的config.inc.php</p></blockquote>
<p>配置文件里记录的数据库地址、访问用户名、密码都要根据你的新服务器的相应信息进行修改，同时，如果你的域名发生变化，要修改配置文件中相应的域名信息。</p>
<blockquote><p>注意：BBS导入之后，有可能打开的时候会乱码，请修改config.inc,php中$headercharset = 1;强制使用GBK字符集。</p></blockquote>
<p><span style="color: #000040;">·UCHome导入后，有可能也会乱码，请在apache配置文件中的VirtualHost之间添加如下代码</span></p>
<blockquote><p>&lt;IfModule mod_mime.c&gt;<br />
AddDefaultCharset gbk<br />
&lt;/IfModule&gt;</p>
<p>#gbk处的参数为gbk,gb2312,uft8任选一,测试到成功为止</p></blockquote>
<p><span style="color: #000040;">·数据导入后，可能出现UCHome和Discuz不能同步登陆的问题，提示如下</span></p>
<blockquote><p>/uc/index.php was not found on this server.<br />
请修改UChome的config文件以及Discuz的config.inc.php文件中的UC_API至一致</p>
<p>*我使用的web server是nginx，在虚拟主机上加了两个主机头：54consultant.com和www.54consultant.com<br />
默认使用54consultant.com访问，cookies中的域名也就是这个，导致了UChome和Dicuz之间不能同步登陆，将www.54consultant.com放到server_name首位，解决问题。</p></blockquote>
<p><span style="color: #000080;">·论坛更新补丁后，进入后台，安全补丁提示仍存在</span></p>
<blockquote><p><a href="http://99dev.net/wp-content/uploads/2009/09/xiubu1.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="xiubu" src="http://99dev.net/wp-content/uploads/2009/09/xiubu-thumb1.png" border="0" alt="xiubu" width="526" height="346" /></a></p>
<p>请用FTP工具，核对所替换的文件权限是否为777。</p></blockquote>
<p>5.上线测试</p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/614/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Collection]如何导入导出MySQL数据库</title>
		<link>http://99dev.net/archives/398</link>
		<comments>http://99dev.net/archives/398#comments</comments>
		<pubDate>Mon, 05 Jan 2009 13:04:39 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://99dev.net/archives/398</guid>
		<description><![CDATA[1. 概述
MySQL数据库的导入，有两种方法：
1) 先导出数据库SQL脚本，再导入；
2) 直接拷贝数据库目录和文件。
<span class="readmore"><a href="http://99dev.net/archives/398" title="[Collection]如何导入导出MySQL数据库" target="_blank">阅读全文——共1239字</a></span>]]></description>
			<content:encoded><![CDATA[<p>1. 概述<br />
MySQL数据库的导入，有两种方法：<br />
1) 先导出数据库SQL脚本，再导入；<br />
2) 直接拷贝数据库目录和文件。</p>
<p>在不同操作系统或MySQL版本情况下，直接拷贝文件的方法可能会有不兼容的情况发生。<br />
所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。</p>
<p><span id="more-398"></span></p>
<h1>2. 方法一 SQL脚本形式</h1>
<p>操作步骤如下：<br />
2.1. 导出SQL脚本<br />
在原数据库服务器上，可以用phpMyAdmin工具，或者mysqldump(mysqldump命令位于mysql/bin/目录中)命令行，导出SQL脚本。<br />
2.1.1 用phpMyAdmin工具<br />
导出选项中，选择导出“结构”和“数据”，不要添加“Drop DATABASE”和“Drop TABLE”选项。<br />
选中“另存为文件”选项，如果数据比较多，可以选中“gzipped”选项。<br />
将导出的SQL文件保存下来。</p>
<p>2.1.2 用mysqldump命令行<br />
命令格式<br />
mysqldump -u用户名 -p 数据库名 &gt; 数据库名.sql<br />
范例：<br />
mysqldump -uroot -p abc &gt; abc.sql<br />
（导出数据库abc到abc.sql文件）</p>
<p>提示输入密码时，输入该数据库用户名的密码。</p>
<p>2.2. 创建空的数据库<br />
通过主控界面/控制面板，创建一个数据库。假设数据库名为abc，数据库全权用户为abc_f。</p>
<p>2.3. 将SQL脚本导入执行<br />
同样是两种方法，一种用phpMyAdmin（mysql数据库管理）工具，或者mysql命令行。<br />
2.3.1 用phpMyAdmin工具<br />
从控制面板，选择创建的空数据库，点“管理”，进入管理工具页面。<br />
在”SQL”菜单中，浏览选择刚才导出的SQL文件，点击“执行”以上载并执行。</p>
<p>注意：phpMyAdmin对上载的文件大小有限制，php本身对上载文件大小也有限制，如果原始sql文件<br />
比较大，可以先用gzip对它进行压缩，对于sql文件这样的文本文件，可获得1:5或更高的压缩率。<br />
gzip使用方法：<br />
# gzip xxxxx.sql<br />
得到<br />
xxxxx.sql.gz文件。</p>
<p>2.3.2 用mysql命令行<br />
命令格式<br />
mysql -u用户名 -p 数据库名 &lt; 数据库名.sql<br />
范例：<br />
mysql -uabc_f -p abc &lt; abc.sql<br />
（导入数据库abc从abc.sql文件）</p>
<p>提示输入密码时，输入该数据库用户名的密码。</p>
<h1>3 方法二 直接拷贝</h1>
<p>如果数据库比较大，可以考虑用直接拷贝的方法，但不同版本和操作系统之间可能不兼容，要慎用。<br />
3.1 准备原始文件<br />
用tar打包为一个文件</p>
<p>3.2 创建空数据库</p>
<p>3.3 解压<br />
在临时目录中解压，如：<br />
cd /tmp<br />
tar zxf mydb.tar.gz</p>
<p>3.4 拷贝<br />
将解压后的数据库文件拷贝到相关目录<br />
cd mydb/<br />
cp * /var/lib/mysql/mydb/</p>
<p>对于FreeBSD:<br />
cp * /var/db/mysql/mydb/</p>
<p>3.5 权限设置<br />
将拷贝过去的文件的属主改为mysql:mysql，权限改为660<br />
chown mysql:mysql /var/lib/mysql/mydb/*<br />
chmod 660 /var/lib/mysql/mydb/*</p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/398/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Original]MySQL4平滑升级到MYSQL5(无中文乱码)</title>
		<link>http://99dev.net/archives/273</link>
		<comments>http://99dev.net/archives/273#comments</comments>
		<pubDate>Tue, 28 Oct 2008 08:51:09 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://99dev.net/?p=273</guid>
		<description><![CDATA[查询目前活动的MySQL数据库，清除废弃的数据库（直接在var/lib/mysql中直接删除对应的目录即可）
关闭MySQL Service，备份/var/lib/mysql目录下的活动数据库（用tar打包并存到其他位置）
卸载MySQL 4.1，并清除mysql数据库（清空/var/lib/mysql/mysql）
安装MySQL 5，并启动
<span class="readmore"><a href="http://99dev.net/archives/273" title="[Original]MySQL4平滑升级到MYSQL5(无中文乱码)" target="_blank">阅读全文——共206字</a></span>]]></description>
			<content:encoded><![CDATA[<p>查询目前活动的MySQL数据库，清除废弃的数据库（直接在var/lib/mysql中直接删除对应的目录即可）</p>
<p>关闭MySQL Service，备份/var/lib/mysql目录下的活动数据库（用tar打包并存到其他位置）</p>
<p>卸载MySQL 4.1，并清除mysql数据库（清空/var/lib/mysql/mysql）</p>
<p>安装MySQL 5，并启动</p>
<p>利用phpMyAdmin重建所有数据库授权用户</p>
<p>将原有数据迁移回去，即可正常运行</p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/273/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Original]重启MySQL的正确方法</title>
		<link>http://99dev.net/archives/264</link>
		<comments>http://99dev.net/archives/264#comments</comments>
		<pubDate>Thu, 16 Oct 2008 02:45:35 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://99dev.net/archives/264</guid>
		<description><![CDATA[修改了my.cnf，需要重启MySQL服务
由于是从源码包安装的Mysql，所以系统中是没有红帽常用的servcie mysqld restart这个脚本

只好手工重启
<span class="readmore"><a href="http://99dev.net/archives/264" title="[Original]重启MySQL的正确方法" target="_blank">阅读全文——共260字</a></span>]]></description>
			<content:encoded><![CDATA[<p>修改了my.cnf，需要重启MySQL服务</p>
<p>由于是从源码包安装的Mysql，所以系统中是没有红帽常用的servcie mysqld restart这个脚本</p>
<p><span id="more-264"></span></p>
<p>只好手工重启</p>
<p>有人建议Killall mysql。这种野蛮的方法其实是不行的，强制终止的话，如果造成表损坏，损失是巨大的。</p>
<p>这里推荐安全的重启方法</p>
<p><span style="color: #ff0000;">$mysql_dir/bin/mysqladmin -u root -p shutdown<br />
$mysql_dir/bin/safe_mysqld &amp;</span></p>
<p>mysqladmin和mysqld_safe位于Mysql安装目录的bin目录下，很容易找到的。</p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/264/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Original]mysql如何才能远程控制</title>
		<link>http://99dev.net/archives/246</link>
		<comments>http://99dev.net/archives/246#comments</comments>
		<pubDate>Mon, 06 Oct 2008 08:34:49 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://99dev.net/?p=246</guid>
		<description><![CDATA[允许客户从远程连接，要保证两个条件：    1. mysql的身份认证信息中要允许客户从远程连接；     2. 防火墙打开mysql的端口(3306)
远程工具管理工具，推荐SQLyog企业版，一直用它，感觉还不错。
一般我们只允许用户从本机连接，不建议允许远程连接，这可能会带来额外的安全问题，以及增加网络流量。
 如果客户一定要求，首先要知道对方从哪个IP过来，然后通过supervisor管理界面的MySQL数据库工具，点击左边的mysql数据库，点击User表，   在出现的SQL语句输入框内输入：   grant select, insert, update, delete on testdb001.* to testdb001_f@192.168.0.60 identified by &#8216;changeme&#8217;;   （其中，数据库名是testdb001，用户名：testdb001_f，192.168.0.60是远程ip，changeme是密码。）   执行之后，再执行flush privileges，即生效。
<span class="readmore"><a href="http://99dev.net/archives/246" title="[Original]mysql如何才能远程控制" target="_blank">阅读全文——共715字</a></span>]]></description>
			<content:encoded><![CDATA[<p>允许客户从远程连接，要保证两个条件：    <br />1. mysql的身份认证信息中要允许客户从远程连接；     <br />2. 防火墙打开mysql的端口(3306)</p>
<p>远程工具管理工具，推荐SQLyog企业版，一直用它，感觉还不错。</p>
<p>一般我们只允许用户从本机连接，不建议允许远程连接，这可能会带来额外的安全问题，以及增加网络流量。</p>
<p> <span id="more-246"></span>如果客户一定要求，首先要知道对方从哪个IP过来，然后通过supervisor管理界面的MySQL数据库工具，点击左边的mysql数据库，点击User表，   <br />在出现的SQL语句输入框内输入：   <br />grant select, insert, update, delete on testdb001.* to testdb001_f@192.168.0.60 identified by &#8216;changeme&#8217;;   <br />（其中，数据库名是testdb001，用户名：testdb001_f，192.168.0.60是远程ip，changeme是密码。）   <br />执行之后，再执行flush privileges，即生效。
</p>
<p>下面列举一个实例</p>
<blockquote><p>mysql&gt; grant all privileges on *.* to root@&#8217;%&#8217; identified by &#8216;iampassword&#8217;;      <br />Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql&gt; flush privileges;      <br />Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql&gt; quit      <br />Bye</p>
</blockquote>
<blockquote><p>如果是Ubuntu Server，则需要添加以下额外的操作</p>
<ul>
<li>注释掉my.cnf中&quot;bind_port = 127.0.0.1&quot;一行</li>
<li>重启MySQL服务</li>
</ul>
</blockquote>
<p>&#160;</p>
<p>参考文章：<a href="http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html" target="_blank">How Do I Enable Remote Access To MySQL Database Server?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/246/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Original]MySQL5数据库的默认属性</title>
		<link>http://99dev.net/archives/219</link>
		<comments>http://99dev.net/archives/219#comments</comments>
		<pubDate>Wed, 01 Oct 2008 13:53:08 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>

		<guid isPermaLink="false">http://99dev.net/?p=219</guid>
		<description><![CDATA[昨夜，导完庞大的数据库，连接上了，才发现数据库表和库的字符集有差异。表的字符集全是utf-8,库的属性却是莫名其妙的latin1_swedish_ci。听都没听过的字符集，Google了一下，原来是瑞典语。MySQL默认建立的数据库怎么会是瑞典语，好歹也应该是英语。
这得从MySQL的起源讲起：1979年，一家瑞典公司Tcx欲开发一个快速的多线程、多用户数据库系统。Tcx 公司起初想利用mSQL和他们自己的快速低级例程(Indexed Sequential Access Method,ISAM)去连接数据库表。然而，在一些测试以后得出结论：mSQL对其需求来说不够快速和灵活。这就产生了一个连接器数据库的新SQL接口，它使用几乎和mSQL一样的API接口。这个API被设计成可以使那些由mSQL而写的第三方代码更容易地移植MySQL。
<span class="readmore"><a href="http://99dev.net/archives/219" title="[Original]MySQL5数据库的默认属性" target="_blank">阅读全文——共459字</a></span>]]></description>
			<content:encoded><![CDATA[<p>昨夜，导完庞大的数据库，连接上了，才发现数据库表和库的字符集有差异。表的字符集全是utf-8,库的属性却是莫名其妙的latin1_swedish_ci。听都没听过的字符集，Google了一下，原来是<span style="color: #000080;">瑞典语</span>。MySQL默认建立的数据库怎么会是瑞典语，好歹也应该是英语。</p>
<p><span id="more-219"></span>这得从MySQL的起源讲起：1979年，一家瑞典公司Tcx欲开发一个快速的多线程、多用户数据库系统。Tcx 公司起初想利用mSQL和他们自己的快速低级例程(Indexed Sequential Access Method,ISAM)去连接数据库表。然而，在一些测试以后得出结论：mSQL对其需求来说不够快速和灵活。这就产生了一个连接器数据库的新SQL接口，它使用几乎和mSQL一样的API接口。这个API被设计成可以使那些由mSQL而写的第三方代码更容易地移植MySQL。</p>
<p>从那开始，MySQL就使用瑞典语（开发人员的母语）作为默认语言了。</p>
<p>字符集是比较恼人的存在，所以特别提醒；新建MYSQL类型的数据库，一定要先指定字符集，否则瑞典人先入为主，你就得再费神了！</p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/219/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Collection]MySQL的root密码恢复方法</title>
		<link>http://99dev.net/archives/215</link>
		<comments>http://99dev.net/archives/215#comments</comments>
		<pubDate>Wed, 01 Oct 2008 13:44:18 +0000</pubDate>
		<dc:creator>蒼</dc:creator>
				<category><![CDATA[MySQL数据库]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://99dev.net/?p=215</guid>
		<description><![CDATA[#/etc/rc.d/init.d/mysqld stop //停止MYSQL
#/bin/mysqld_safe &#8211;skip-grant-tables&#38; //使用“-skip-grant-tables”参数来启动MySQL。
# /usr/bin/mysql -u root
mysql&#62; use mysql
<span class="readmore"><a href="http://99dev.net/archives/215" title="[Collection]MySQL的root密码恢复方法" target="_blank">阅读全文——共275字</a></span>]]></description>
			<content:encoded><![CDATA[<p>#/etc/rc.d/init.d/mysqld stop //停止MYSQL</p>
<p>#/bin/mysqld_safe &#8211;skip-grant-tables&amp; //使用“-skip-grant-tables”参数来启动MySQL。</p>
<p><span id="more-215"></span># /usr/bin/mysql -u root</p>
<p>mysql&gt; use mysql</p>
<p>mysql&gt; UPDATE user SET password=password(&#8216;newpassword&#8217;) WHERE user=&#8217;root&#8217;;</p>
<p>mysql&gt; FLUSH PRIVILEGES;</p>
<p>mysql&gt;quit</p>
<p>#/etc/rc.d/init.d/mysqld restart</p>
]]></content:encoded>
			<wfw:commentRss>http://99dev.net/archives/215/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

