<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>wolfg&#039;s Weblog &#187; mysql</title>
	<atom:link href="http://guoyong.me/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://guoyong.me</link>
	<description>wolfg&#039;s journey with open source, linux, programming, sysadm ...</description>
	<lastBuildDate>Wed, 04 Apr 2012 12:42:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/cn/</creativeCommons:license>		<item>
		<title>一个Python脚本，让OpenVPN使用postfix邮箱帐号进行身份认证</title>
		<link>http://guoyong.me/linux/sysadm/yi-ge-python-jiao-ben-rang-openvpn-shi-yong-postfix-you-xiang-zhang-hao-jin-xing-shen-fen-ren-zheng/</link>
		<comments>http://guoyong.me/linux/sysadm/yi-ge-python-jiao-ben-rang-openvpn-shi-yong-postfix-you-xiang-zhang-hao-jin-xing-shen-fen-ren-zheng/#comments</comments>
		<pubDate>Wed, 14 May 2008 13:27:36 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[md5crypt]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://guoyong.org/?p=359</guid>
		<description><![CDATA[这几天配置OpenVPN，使用了用户名密码的身份认证方式，借助已有的postfix邮箱帐号，省去了再为每个人设置用户名密码的麻烦。 原理很简单，OpenVPN服务器配置里有这样一句： auth-user-pass-verify /etc/openvpn/auth-postfix-mailbox.py via-env 就是说要用/etc/openvpn/auth-postfix-mailbox.py这个脚本来验证用户名和密码。用户名和密码如何传递给它呢？via-env，环境变量。 脚本如下： #!/usr/bin/env python &#160; import&#160;os import&#160;sys from&#160;MySQLdb import * import&#160;md5crypt &#160; def&#160;auth(username, password): &#160; conn = connect&#160;(host = 'localhost', &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; user = 'dbuser', &#160; &#160; &#160; &#8230; <a href="http://guoyong.me/linux/sysadm/yi-ge-python-jiao-ben-rang-openvpn-shi-yong-postfix-you-xiang-zhang-hao-jin-xing-shen-fen-ren-zheng/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这几天配置OpenVPN，使用了用户名密码的身份认证方式，借助已有的postfix邮箱帐号，省去了再为每个人设置用户名密码的麻烦。</p>
<p>原理很简单，OpenVPN服务器配置里有这样一句：</p>
<div class="hl-surround"><div class="hl-main">auth-user-pass-verify /etc/openvpn/auth-postfix-mailbox.py via-env</div></div>
<p>就是说要用/etc/openvpn/auth-postfix-mailbox.py这个脚本来验证用户名和密码。用户名和密码如何传递给它呢？via-env，环境变量。</p>
<p>脚本如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">#!/usr/bin/env python</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">os</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">sys</span></li>
<li><span style="color: Green;">from</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">MySQLdb</span><span style="color: Gray;"> </span><span style="color: Green;">import</span><span style="color: Gray;"> *</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">md5crypt</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">auth</span><span style="color: Olive;">(</span><span style="color: Blue;">username</span><span style="color: Gray;">, </span><span style="color: Blue;">password</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">conn</span><span style="color: Gray;"> = </span><span style="color: Blue;">connect</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">host</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">localhost</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">user</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">dbuser</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">passwd</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">dbpasswd</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">db</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">postfix</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">cursor</span><span style="color: Gray;"> = </span><span style="color: Blue;">conn</span><span style="color: Gray;">.</span><span style="color: Blue;">cursor</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">cursor</span><span style="color: Gray;">.</span><span style="color: Blue;">execute</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;&quot;&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; select password from mailbox </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; where username=%s</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; and active=1</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; </span><span style="color: #8b0000;">&quot;&quot;&quot;</span><span style="color: Gray;">, </span><span style="color: Olive;">(</span><span style="color: Blue;">username</span><span style="color: Olive;">))</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">row</span><span style="color: Gray;"> = </span><span style="color: Blue;">cursor</span><span style="color: Gray;">.</span><span style="color: Blue;">fetchone</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">row</span><span style="color: Gray;"> == </span><span style="color: Green;">None</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">crypt</span><span style="color: Gray;"> = </span><span style="color: Blue;">md5crypt</span><span style="color: Gray;">.</span><span style="color: Blue;">md5crypt</span><span style="color: Olive;">(</span><span style="color: Blue;">password</span><span style="color: Gray;">, </span><span style="color: Blue;">row</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">])</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">cursor</span><span style="color: Gray;">.</span><span style="color: Blue;">execute</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;&quot;&quot;</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; select * from mailbox</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; where username=%s </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; and password=%s</span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; and active=1</span></li>
<li><span style="color: Red;">&nbsp;&nbsp; </span><span style="color: #8b0000;">&quot;&quot;&quot;</span><span style="color: Gray;">, </span><span style="color: Olive;">(</span><span style="color: Blue;">username</span><span style="color: Gray;">,</span><span style="color: Blue;">crypt</span><span style="color: Olive;">))</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">row</span><span style="color: Gray;"> = </span><span style="color: Blue;">cursor</span><span style="color: Gray;">.</span><span style="color: Blue;">fetchone</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">cursor</span><span style="color: Gray;">.</span><span style="color: Blue;">close</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">conn</span><span style="color: Gray;">.</span><span style="color: Blue;">close</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">row</span><span style="color: Gray;"> == </span><span style="color: Green;">None</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">0</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">main</span><span style="color: Olive;">()</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">status</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">try</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">username</span><span style="color: Gray;"> = </span><span style="color: Blue;">os</span><span style="color: Gray;">.</span><span style="color: Blue;">environ</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">username</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">password</span><span style="color: Gray;"> = </span><span style="color: Blue;">os</span><span style="color: Gray;">.</span><span style="color: Blue;">environ</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">password</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">status</span><span style="color: Gray;"> = </span><span style="color: Blue;">auth</span><span style="color: Olive;">(</span><span style="color: Blue;">username</span><span style="color: Gray;">, </span><span style="color: Blue;">password</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">except</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">sys</span><span style="color: Gray;">.</span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">sys</span><span style="color: Gray;">.</span><span style="color: Blue;">exit</span><span style="color: Olive;">(</span><span style="color: Blue;">status</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">__name__</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">__main__</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">main</span><span style="color: Olive;">()</span></li></ol></div>
<p>由于postfix使用md5认证，所以需要用md5crypt这个模块，从<a href="http://www.sabren.net/code/python/crypt/md5crypt.py">这里</a>可以下载到。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.me/linux/sysadm/yi-ge-python-jiao-ben-rang-openvpn-shi-yong-postfix-you-xiang-zhang-hao-jin-xing-shen-fen-ren-zheng/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>同时运行两个mysql实例</title>
		<link>http://guoyong.me/linux/sysadm/%e5%90%8c%e6%97%b6%e8%bf%90%e8%a1%8c%e4%b8%a4%e4%b8%aamysql%e5%ae%9e%e4%be%8b/</link>
		<comments>http://guoyong.me/linux/sysadm/%e5%90%8c%e6%97%b6%e8%bf%90%e8%a1%8c%e4%b8%a4%e4%b8%aamysql%e5%ae%9e%e4%be%8b/#comments</comments>
		<pubDate>Sat, 08 Dec 2007 16:17:05 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>

		<guid isPermaLink="false">http://guoyong.org/2007/12/09/349</guid>
		<description><![CDATA[运行环境： Ubuntu 6.06 server 1. 修改/etc/mysql/my.cnf 加入 [mysqld_multi]mysqld&#160; &#160; &#160;= /usr/bin/mysqld_safemysqladmin = /usr/bin/mysqladminuser&#160; &#160; &#160; &#160;= multi_adminpassword&#160; &#160;= multipass 把原来的[mysqld]改成[mysqld001]，并加入[mysqld002]，分别配置两个实例，主要是下面这些设置要不同： pid-file socket port datadir 2. 设置用户 $ mysql -u root -S /var/run/mysqld/mysqld.sock -p&#62; GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED &#8230; <a href="http://guoyong.me/linux/sysadm/%e5%90%8c%e6%97%b6%e8%bf%90%e8%a1%8c%e4%b8%a4%e4%b8%aamysql%e5%ae%9e%e4%be%8b/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>运行环境： Ubuntu 6.06 server</p>
<p>1. 修改/etc/mysql/my.cnf</p>
<p>加入</p>
<div class="hl-surround"><div class="hl-main">[mysqld_multi]<br />mysqld&nbsp; &nbsp; &nbsp;= /usr/bin/mysqld_safe<br />mysqladmin = /usr/bin/mysqladmin<br />user&nbsp; &nbsp; &nbsp; &nbsp;= multi_admin<br />password&nbsp; &nbsp;= multipass</div></div>
<p>把原来的[mysqld]改成[mysqld001]，并加入[mysqld002]，分别配置两个实例，主要是下面这些设置要不同：</p>
<ul>
<li>pid-file</li>
<li>socket</li>
<li>port</li>
<li>datadir</li>
</ul>
<p>2. 设置用户</p>
<div class="hl-surround"><div class="hl-main">$ mysql -u root -S /var/run/mysqld/mysqld.sock -p<br />&gt; GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';<br />$ mysql -u root -S /var/run/mysqld/mysqld2.sock -p<br />&gt; GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';</div></div>
<p>3. 测试启动停止命令</p>
<div class="hl-surround"><div class="hl-main">$ mysqld_multi --no-log --config-file=/etc/mysql/my.cnf start 001,002<br />$ mysqld_multi --no-log --config-file=/etc/mysql/my.cnf stop 001,002<br />$ mysqld_multi --no-log --config-file=/etc/mysql/my.cnf report 001,002</div></div>
<p>4. 新建启动脚本 /etc/init.d/mysql-multi替换原来的启动脚本/etc/init.d/mysql</p>
<p>5. 修改/etc/phpmyadmin/config.inc.php，配置如何连接这两个服务器</p>
<div class="hl-surround"><div class="hl-main">$i = 0;<br />$i++;<br />$cfg['Servers'][$i]['host']&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 'localhost'; <br />$cfg['Servers'][$i]['socket']&nbsp; &nbsp; &nbsp; &nbsp; = '/var/run/mysqld/mysqld.sock';&nbsp; <br />$cfg['Servers'][$i]['connect_type']&nbsp; = 'socket'; <br />$cfg['Servers'][$i]['verbose']&nbsp; &nbsp; &nbsp; &nbsp;= 'localhost:3306'; <br />$i++;<br />$cfg['Servers'][$i]['host']&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 'localhost'; <br />$cfg['Servers'][$i]['socket']&nbsp; &nbsp; &nbsp; &nbsp; = '/var/run/mysqld/mysqld2.sock';&nbsp; <br />$cfg['Servers'][$i]['connect_type']&nbsp; = 'socket'; <br />$cfg['Servers'][$i]['verbose']&nbsp; &nbsp; &nbsp; &nbsp;= 'localhost:3307';</div></div>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.me/linux/sysadm/%e5%90%8c%e6%97%b6%e8%bf%90%e8%a1%8c%e4%b8%a4%e4%b8%aamysql%e5%ae%9e%e4%be%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows下mysql命令行工具插入和显示中文数据</title>
		<link>http://guoyong.me/dev/windows%e4%b8%8bmysql%e5%91%bd%e4%bb%a4%e8%a1%8c%e5%b7%a5%e5%85%b7%e6%8f%92%e5%85%a5%e5%92%8c%e6%98%be%e7%a4%ba%e4%b8%ad%e6%96%87%e6%95%b0%e6%8d%ae/</link>
		<comments>http://guoyong.me/dev/windows%e4%b8%8bmysql%e5%91%bd%e4%bb%a4%e8%a1%8c%e5%b7%a5%e5%85%b7%e6%8f%92%e5%85%a5%e5%92%8c%e6%98%be%e7%a4%ba%e4%b8%ad%e6%96%87%e6%95%b0%e6%8d%ae/#comments</comments>
		<pubDate>Thu, 17 May 2007 17:33:00 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://guoyong.org/2007/05/18/322</guid>
		<description><![CDATA[my.ini里client和mysqld都设置了default-character-set=utf8 数据库和表的默认字符集也都是utf8，用MySQL Query Browser工具插入和查询中文输入没有问题，但直接在命令提示符里用mysql工具插入和查询有中文乱码。 与 http://www.javaworld.com.tw/jute/post/view?bid=21&#038;id=128513&#038;sty=1&#038;tpg=1&#038;age=0 里说的一样，好像win下mysql命令行工具不认。 解决办法： 插入数据前，set names utf8; 执行查询前，set name gbk;]]></description>
			<content:encoded><![CDATA[<p>my.ini里client和mysqld都设置了default-character-set=utf8<br />
数据库和表的默认字符集也都是utf8，用MySQL Query Browser工具插入和查询中文输入没有问题，但直接在命令提示符里用mysql工具插入和查询有中文乱码。</p>
<p>与 http://www.javaworld.com.tw/jute/post/view?bid=21&#038;id=128513&#038;sty=1&#038;tpg=1&#038;age=0 里说的一样，好像win下mysql命令行工具不认。</p>
<p>解决办法：<br />
插入数据前，set names utf8;<br />
执行查询前，set name gbk;</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.me/dev/windows%e4%b8%8bmysql%e5%91%bd%e4%bb%a4%e8%a1%8c%e5%b7%a5%e5%85%b7%e6%8f%92%e5%85%a5%e5%92%8c%e6%98%be%e7%a4%ba%e4%b8%ad%e6%96%87%e6%95%b0%e6%8d%ae/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Windows XP下安装MySQL遇到的两个问题</title>
		<link>http://guoyong.me/dev/windows-xp%e4%b8%8b%e5%ae%89%e8%a3%85mysql%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%a4%e4%b8%aa%e9%97%ae%e9%a2%98/</link>
		<comments>http://guoyong.me/dev/windows-xp%e4%b8%8b%e5%ae%89%e8%a3%85mysql%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%a4%e4%b8%aa%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Mon, 14 May 2007 16:39:50 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://guoyong.org/2007/05/15/320</guid>
		<description><![CDATA[原来的安装用的是直接解压zip包的方式，安装情况如下： 1. 安装目录为C:\mysql-4.1.22-win32 2. my.ini从my-medium.ini修改而来，放在了C:\WINDOWS下 3. 安装Windows服务用的命令是 mysqld-nt &#8211;install 4. net start MySQL启动服务没有问题 但用MySQL Administrator工具连接时总是先弹出一个对话框，报告 Either the server service or the configuration file could not be found. Startup variables and service section are therefore disalbed. 点“确定”后才进入主界面，正如它所说，Service Control和Startup Variables功能都被禁用了，界面上有红色的提示信息 This section &#8230; <a href="http://guoyong.me/dev/windows-xp%e4%b8%8b%e5%ae%89%e8%a3%85mysql%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%a4%e4%b8%aa%e9%97%ae%e9%a2%98/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>原来的安装用的是直接解压zip包的方式，安装情况如下：<br />
1. 安装目录为C:\mysql-4.1.22-win32<br />
2. my.ini从my-medium.ini修改而来，放在了C:\WINDOWS下<br />
3. 安装Windows服务用的命令是 mysqld-nt &#8211;install<br />
4. net start MySQL启动服务没有问题</p>
<p>但用MySQL Administrator工具连接时总是先弹出一个对话框，报告</p>
<div class="hl-surround"><div class="hl-main">Either the server service or the configuration file could not be found. Startup variables and service section are therefore disalbed.</div></div>
<p>点“确定”后才进入主界面，正如它所说，Service Control和Startup Variables功能都被禁用了，界面上有红色的提示信息</p>
<div class="hl-surround"><div class="hl-main">This section is only available when connected to localhost.</div></div>
<p>换用msi安装包，重新安装MySQL，目录还是选择C:\mysql-4.1.22-win32（除了data目录之外，其他目录都已删除），最后配置实例时出现无法启动服务的问题。尝试逐个关闭my.ini中选项的方法，试验到底是那个选项导致不能启动。最后发现是innodb_log_file_size这个选项的问题。原来实际的log文件ib_logfile0和ib_logfile1的大小是5M，是由刚才的那个my.ini（即有zip包中my-medium.ini手工修改而来的）指定的，而现在的my.ini（由MySQL Server Instance Config Wizard生成）中同样的选项指定的却是17M，结果导致MySQL无法启动。解决办法是要么删除原来的那两个log文件，要么修改innodb_log_file_size。</p>
<p>现在可以正常启动MySQL服务，MySQL Administrator也可以正常使用。在注册表里查看MySQL Server Instance Config Wizard生成的MySQL服务，发现ImagePath的值是</p>
<div class="hl-surround"><div class="hl-main">C:\mysql-4.1.22-win32\bin\mysqld-nt --defaults-file=C:\mysql-4.1.22-win32\my.ini MySQL</div></div>
<p>说明之前MySQL Administrator报错的原因是服务由mysqld-nt &#8211;install命令创建，导致它找不到my.ini。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.me/dev/windows-xp%e4%b8%8b%e5%ae%89%e8%a3%85mysql%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%a4%e4%b8%aa%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让Postfix使用保存在MySQL中的加了密的密码字段(Ubuntu 6.06 TLS)</title>
		<link>http://guoyong.me/linux/sysadm/%e8%ae%a9postfix%e4%bd%bf%e7%94%a8%e4%bf%9d%e5%ad%98%e5%9c%a8mysql%e4%b8%ad%e7%9a%84%e5%8a%a0%e4%ba%86%e5%af%86%e7%9a%84%e5%af%86%e7%a0%81%e5%ad%97%e6%ae%b5ubuntu-606-tls/</link>
		<comments>http://guoyong.me/linux/sysadm/%e8%ae%a9postfix%e4%bd%bf%e7%94%a8%e4%bf%9d%e5%ad%98%e5%9c%a8mysql%e4%b8%ad%e7%9a%84%e5%8a%a0%e4%ba%86%e5%af%86%e7%9a%84%e5%af%86%e7%a0%81%e5%ad%97%e6%ae%b5ubuntu-606-tls/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 17:49:45 +0000</pubDate>
		<dc:creator>wolfg</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://guoyong.org/2006/12/02/293</guid>
		<description><![CDATA[这两天在Ubuntu下折腾Postfix + Courier-IMAP + Cyrus-SASL + MySQL + PostfixAdmin，主要参考这个Howto(http://flurdy.com/docs/postfix/) 配置了Postfix Admin，所以邮件用户的密码用了md5的加密方式存放在MySQL数据库中的（不想用明文）。这样一来，IMAP服务器可以支持加密的密码字段，认证没有问题，但SMTP服务器不行。 Google了好久，发现网上大多数都是使用明文密码的，也有用saslauthd的pam认证方式来做的。我一开始是用明文的，觉得不好（能看到用户的密码，心里不安），又试了pam方式但没成功（不知道为什么，没深究）。最后终于找到牛人给Cyrus-SASL写的patch（针对2.1.19版本的），安装步骤参考 http://blog.matroid.org/display/26 $ cd ~$ apt-get source libsasl2$ sudo apt-get build-dep libsasl2下载这个为Debian修改过的patch文件$ wget http://blog.matroid.org/files/20060116-crypted-passwords-for-couriour-and-postfix-in-mysql/cyrus-sasl-2.1.19-checkpw.c.patch_mgr$ cd cyrus-sasl-2.1.19.dfsg1$ tar xvzf cyrus-sasl-2.1.19.dfsg1.tar.gz$ ln -s cyrus-sasl-2.1.19.dfsg1 cyrus-sasl-2.1.19.orig$ cp ../cyrus-sasl-2.1.19-checkpw.c.patch_mgr debian/patches/28_cyrus-sasl-2.1.19-checkpw.c.patch做些修改，将patch文件里的cyrus-sasl-2.1.19.org替换为cyrus-sasl-2.1.19.dfsg1，不然会patch会失败。改好后，编译$ fakeroot debian/rules binary成功后，安装生成的deb包$ &#8230; <a href="http://guoyong.me/linux/sysadm/%e8%ae%a9postfix%e4%bd%bf%e7%94%a8%e4%bf%9d%e5%ad%98%e5%9c%a8mysql%e4%b8%ad%e7%9a%84%e5%8a%a0%e4%ba%86%e5%af%86%e7%9a%84%e5%af%86%e7%a0%81%e5%ad%97%e6%ae%b5ubuntu-606-tls/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这两天在Ubuntu下折腾Postfix + Courier-IMAP + Cyrus-SASL + MySQL + PostfixAdmin，主要参考这个Howto(http://flurdy.com/docs/postfix/)<br />
配置了Postfix Admin，所以邮件用户的密码用了md5的加密方式存放在MySQL数据库中的（不想用明文）。这样一来，IMAP服务器可以支持加密的密码字段，认证没有问题，但SMTP服务器不行。</p>
<p>Google了好久，发现网上大多数都是使用明文密码的，也有用saslauthd的pam认证方式来做的。我一开始是用明文的，觉得不好（能看到用户的密码，心里不安），又试了pam方式但没成功（不知道为什么，没深究）。最后终于找到牛人给Cyrus-SASL写的patch（针对2.1.19版本的），安装步骤参考 http://blog.matroid.org/display/26</p>
<div class="hl-surround"><div class="hl-main">$ cd ~<br />$ apt-get source libsasl2<br />$ sudo apt-get build-dep libsasl2<br />下载这个为Debian修改过的patch文件<br />$ wget http://blog.matroid.org/files/20060116-crypted-passwords-for-couriour-and-postfix-in-mysql/cyrus-sasl-2.1.19-checkpw.c.patch_mgr<br />$ cd cyrus-sasl-2.1.19.dfsg1<br />$ tar xvzf cyrus-sasl-2.1.19.dfsg1.tar.gz<br />$ ln -s cyrus-sasl-2.1.19.dfsg1 cyrus-sasl-2.1.19.orig<br />$ cp ../cyrus-sasl-2.1.19-checkpw.c.patch_mgr debian/patches/28_cyrus-sasl-2.1.19-checkpw.c.patch<br />做些修改，将patch文件里的cyrus-sasl-2.1.19.org替换为cyrus-sasl-2.1.19.dfsg1，不然会patch会失败。改好后，编译<br />$ fakeroot debian/rules binary<br />成功后，安装生成的deb包<br />$ cd ..<br />$ sudo dpkg -i *.deb</div></div>
<p>配置/etc/postfix/sasl/smptd.conf</p>
<div class="hl-surround"><div class="hl-main">pwcheck_method: auxprop<br />auxprop_plugin: sql<br />allowanonymouslogin: no<br />allowplaintext: yes<br />mech_list: PLAIN LOGIN<br />srp_mda: md5<br /><br />srvtab: /dev/null<br />opiekeys: /dev/null<br /><br />password_format: crypt<br /><br />sql_user: username<br />sql_passwd: password<br />sql_hostnames: sql.example.org<br />sql_database: database_name<br />sql_select: SELECT password FROM mailbox WHERE username = '%u@%r'</div></div>
<p>重启Postfix就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://guoyong.me/linux/sysadm/%e8%ae%a9postfix%e4%bd%bf%e7%94%a8%e4%bf%9d%e5%ad%98%e5%9c%a8mysql%e4%b8%ad%e7%9a%84%e5%8a%a0%e4%ba%86%e5%af%86%e7%9a%84%e5%af%86%e7%a0%81%e5%ad%97%e6%ae%b5ubuntu-606-tls/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.511 seconds -->

