在ubuntu下,至少有两个方法可以转换mdb文件到mysql中:
1. 使用knoda进行转换
这个是KDE程序,是图形化界面,非常简单。
sudo aptitude install knoda libhk-classes-mdb
这样安装后就支持MS ACCESS和mysql了。可以非常简单的在二者之间进行转换。
2. 使用mdbtools进行转换
sudo aptiutde install mdbtools
安装完后就可以:
mdb-schema my.mdb mysql
mdb-export -T table
这个是基于console的,二者不能一次性完整转换,需要在table级别上自己写脚本来进行转换。
php4+mysql 4.1的问题
以前的一个考试系统,在PHP4+MYSQL 3的环境下进行开发的。
今天转到XP的APACHE 2 + PHP 4+ MYSQL 4.1环境下居然无法使用。提示PHP4无法连接数据库。
经过GOOGLE才发现是MYSQL 4.1修改了加密算法,需要处理一下才可以:
进入mysql
然后执行,
SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
另外还有一个中文乱码问题:
本来用的是GB2312编码,为了扩大系统的应用范围,想改成UTF8编码。程序改好后,发现从MYSQL提出来的数据都是GB2312编码,然后mysqldump在iconv -f gb2312 -t utf8,但有的数据无法转换,经检查是图像在数据库中的存贮部分,就把那个表单独给dump出来,然后在转换剩下的部分,大功告成。
安装完proftpd-mysql后,
首先创建数据库:
CREATE TABLE `ftpuser` (
`id` int(10) unsigned NOT NULL auto_increment,
`userid` varchar(32) NOT NULL default '',
`passwd` varchar(32) NOT NULL default '',
`uid` smallint(6) unsigned NOT NULL default '65534',
`gid` smallint(6) unsigned NOT NULL default '65534',
`homedir` varchar(255) NOT NULL default '',
`shell` varchar(16) NOT NULL default '/bin/sh',
`count` int(11) NOT NULL default '0',
`accessed` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='ProFTP user table' ;
CREATE TABLE `ftpgroup` (
`groupname` varchar(16) NOT NULL default '',
`gid` smallint(6) unsigned NOT NULL default '65534',
`members` varchar(16) NOT NULL default '',
KEY `groupname` (`groupname`)
) TYPE=MyISAM COMMENT='ProFTP group table';
然后修改/etc/proftpd.conf,在其后面添加
SQLConnectInfo db@localhost mysql-user mysql-pwd
# 数据库认证的类型
SQLAuthTypes Backend Plaintext
# 数据库的鉴别
SQLAuthenticate users* groups*
# 指定用来做用户认证的表的有关信息。
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# 如果home目录不存在,则系统会根据它的home项新建一个目录
SQLHomedirOnDemand on
#目录所有者,nobody为65534.
SQLDefaultGID 65534
SQLDefaultUID 65534
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
然后重新启动proftpd,注意,首先要
/etc/init.d/proftpd stop
/etc/init.d/proftpd start
以后可以直接:
/etc/init.d/proftpd restart
然后就可以在数据库插入用户了,注意shell不能为空,否则会出现不能登陆的错误。(我在SQL把其默认设置为/bin/sh)。
若出现密码错误,可以检查/var/log/auth.log记录。
因为想把WEBWIZ论坛转换为PHPBB论坛,需要把ACCESS数据库转换到MYSQL数据库,从网上找了一些转换软件,也都可以转换。
但存在一些问题:
1、中文转换不完全(部分中文丢失,问题非常严重)
2、转换过来的SQL语句不完全符合MYSQL的SQL语法。
因此,放弃此方案。或许可以自己写转换脚本,使用PEAR直接读ACCESS库,估计没有这个问题。
PHPBB提供的转换方案:http://www.phpbb.com/phpBB/viewtopic.php?t=233799 (试验了其他的转换软件)
已经安装了postfix-mysql。postfix的virtual domain是放在MYSQL中的。
安装mailman:
apt-get install mailman
配置:
1. /etc/postfix/main.cf
owner_request_special = no
alias_maps = hash:/etc/postfix/aliases,
hash:/usr/local/mailman/data/aliases
virtual_alias_maps = ,
hash:/usr/local/mailman/data/virtual-mailman
2. /etc/mailman/mm_cfg.py
MTA = 'Postfix'
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['list.cngis.org', list.mygis.org']
3. 生成两个文件
cd /usr/local/mailman
bin/genaliases
su
chmod 666 data/aliases*
touch data/virtual-mailman
touch data/virtual-mailman.db
chmod 666 data/virtual-mailman*
4、 生成默认的mail list
newlist mailman
5、 重新启动服务
/etc/init.d/postfix reload
/etc/init.d/mailman restart
可能以后新加入的mail list都需要postfix reload。
BTW:可惜目前的mailman不支持中文。
总结: 多看官方的安装文档,检查系统的LOG记录,遇到问题到GOOGLE搜索答案。
虽然已经安装过多次了,还是记录一下这次安装的过程。
cd ~
wget http://apache.freelamp.com/httpd/httpd-2.0.52.tar.gz
tar xzf httpd-2.0.52.tar.gz
wget http://cn.php.net/get/php-4.3.10.tar.gz/from/this/mirror
tar xzf php-4.3.10.tar.gz
cd ~/httpd-2.0.52
#make clean
./configure --enable-rewrite --enable-so
make
make install
cd ~/php-4.3.10
#make clean
./configure --with-apxs2=/usr/local/apache2/bin/apxs
make
make install
cd ~
wget http://dev.mysql.com/get/Downloads/\
MySQL-4.0/mysql-standard-4.0.23-pc-linux-i686.tar.gz/\
from/http://mysql.zawodny.com/
在这儿有一个好的MYSQL自动备份脚本:http://bbs.chinaunix.net/forum/17/041004/418474.html
做了一些简单的修改,以支持同时备份多个数据库。
内容如下:
#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by aspbiz,2004-09
#Modifed by wlx,2004-12
#Setting
DBName=wordpress
DBUser=root
DBPasswd=
BackupPath=/www/backup/
LogFile=/www/backup/"$DBName".log
DBPath=/var/lib/mysql/
BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
NewFile="$BackupPath""$DBName"$(date +%y%m%d).tgz
DumpFile="$BackupPath""$DBName"$(date +%y%m%d)
OldFile="$BackupPath""$DBName"$(date +%y%m%d --date='5 days ago').tgz
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >> $LogFile 2>&1
echo "[$OldFile]Delete Old File Success!" >> $LogFile
else
echo "[$OldFile]No Old Backup File!" >> $LogFile
fi
if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile
else
case $BackupMethod in
mysqldump)
if [ -z $DBPasswd ]
then
mysqldump -u $DBUser --opt $DBName > $DumpFile
else
mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
*)
/etc/init.d/mysqld stop >/dev/null 2>&1
tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
/etc/init.d/mysqld start >/dev/null 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
;;
esac
fi
echo "-------------------------------------------" >> $LogFile