Posts Tagged mysql

让Openoffic与你的数据库对接

Openoffice从2.0版本开始,增加了Openoffic Base组件。这个组件功能类似于MS Access,同样允许你通过ODBC 或 JDBC 连接到外部数据库。本文就Ubuntu下的ODBC连接mysql为例。

安装 unixODBC 和 MyODBC :
#sudo apt-get install unixodbc unixodbc-bin libmyodbc
其中“unixodbc-bin”是一系列图形化的工具,可以不安装。

设置unixODBC:
#sudo ODBCConfig
开启ODBC的控制面板,与windows的几乎一样的布局。

System DSN->ADD…按钮

继续ADD

这里的Name和Description随便写就可以了,Driver 为 /usr/lib/odbc/libmyodbc.so
Setup 为 /usr/lib/odbc/libodbcmyS.so ,其余的默认就好了。对于其它不是Ubuntu的用户,只要确保安装了MyODBC,不妨直接搜索文件名将路径贴过来就可。结束后“对勾”按钮保存结束。

到了这一步就没有太大难度了,Name随便,Server添数据库服务器的IP地址,Port Mysql的端口,默认3306,Database下拉列表中选择需要连接的数据库。其余空着,对勾。

设置成功!OK结束。

设置OpenOffice Base:

这里选择“连接到现有数据库”下拉列表选择ODBC,我试过选择Mysql不过到头来还是通过了ODBC连接。

如果前面ODBC设置正确,这里会出现数据源列表。

数据库的用户名、密码,同时还有测试按钮。

OK,搞定!

现在就可以利用OpenOffice Base来直接向数据库中导入、导出数据了,对于数据库开发来说,利用图形化的界面搭建数据库是非常惬意的了。

,

No Comments

Samba 3.0.10 的 MySQL 用户表验证

Samba 让 Linux 的灵活性表露无遗。在公司的局域网内部,我十分喜欢 Samba 的自由自在。

  安装和编译的步骤并不复杂,但是需要了解为了支持 MySQL 认证,编译时需要的参数,以及配置时采用正确的参数。

编译命令:

$ ./configure –with-expsam=mysql –with-mysql-prefix=/opt/mysql

如果以上命令成功的话,然后就是 make ; make install 了。
然后拷贝一个 examples 下的 smb.conf 到 /usr/local/samba/lib 。
用 /usr/local/samba/sbin/smbd -D 即可启动。
用 smbstatus 命令可以查看 Samba 服务器的状态。

下面配置 MySQL 的支持。 和 MYSQL 相关的配置有以下几行:

[global]

# passdb backend = plugin:/usr/local/samba/lib/pdb/mysql.so:mysql
passdb backend = mysql:mysql
mysql:mysql host = localhost #主机名
mysql:mysql port = nnnn #端口号,默认3306
mysql:mysql user = samba #mysql用户
mysql:mysql password = password #mysql密码
mysql:mysql database = smb_user #数据库名
mysql:mysql table = user #数据表,似乎没有用处

……
  建立 smb_user.user 表的脚本可以从 examples/pdb/mysql 目录下的 mysql.dump 导入,如果使用的版本是samba3,还需要单独手工增加“logon_hours"键值,这个目录下的 smb.conf 是一个最简单的配置,可以供参考。但是这个文件有几个地方是错的。

  最主要的就是上面注释掉的那行,我发现根据这个 sample 不能使用,后来修改为简单的
mysql:mysql 后就能使用了。

  具体的调试还是必须看相关的日志文件,如果是数据库连接错误,相关的日志文件会报告数据库不能连接的错误。

  这样,一个基于 MySQL 用户的 Samba 系统建立了起来。
       如果安装了swat,可以运行一下,重新格式化一下配置文件,这样看起来更方便一些。

   但是,目前没有现成的完全基于 PHP 的针对 Samba 口令的修改程序。因为 user 表中的 lm_pw 和 nt_pw 分别代表口令的散列,其算法相对比较复杂, 远远不是 PHP 和 MySQL 提供的 encrypt() md5() 之类的函数能解决的。

  如果有读者已经发现或者已经研发出纯 PHP 的修改 lm_pw 和 nt_[pw 字段的程序,欢迎一起交流。

,

No Comments

mysql在不同操作系统下的性能

网上有很多关于硬件的测评,前不久,我找到了不同操作系统下Mysql的测评,比较有趣。不过讲老实话,由于我刚刚经历了数月的mysql折磨—传说中mysql的极限竟然被我遇上了(话外音:应该买彩票)。我现在似乎已经不太敢用mysql做项目了。

操作系统:
    gentoo (kernel 2.4.28)
    gentoo (kernel 2.6.10)
    NetBSD 2.0
    FreeBSD 5.3 KSE
    FreeBSD 5.3 LT
    FreeBSD 4.11 (libc_r)
    FreeBSD 4.11 LT
    OpenBSD 3.6
    Solaris 10 (b69)

Super Smack 1.2测试1,2cpu下的SELECT-KEY和UPDATE-KEY的效能:

命令:
super-smack /usr/share/smacks/select-key.smack 10 10000

super-smack /usr/share/smacks/update-select.smack 10 10000

v2graphs_1-CPU-select-key.gif
v2graphs_2-CPU-select-key.gif
v2graphs_1-CPU-update-select.gif
v2graphs_2-CPU-update-select.gif

SysBench 0.3.1 1M 的数据Rows测试数据库性能,同样也是1,2CPU的资料:

命令:
To setup:

sysbench –num-threads=10 –test=oltp –mysql-host=172.16.3.7 –mysql-user=root –mysql-password=mysql –oltp-table-size=1000000 prepare

To run:

sysbench –num-threads=10 –test=oltp –mysql-host=172.16.3.7 –mysql-user=root –mysql-password=mysql –oltp-table-size=1000000 run

To cleanup:

sysbench –num-threads=10 –test=oltp –mysql-host=172.16.3.7 –mysql-user=root –mysql-password=mysql –oltp-table-size=1000000 cleanup

10M Rows:

To setup:

sysbench –num-threads=10 –test=oltp –mysql-host=172.16.3.7 –mysql-user=root –mysql-password=mysql –oltp-table-size=10000000 prepare

To run:

sysbench –num-threads=10 –test=oltp –mysql-host=172.16.3.7 –mysql-user=root –mysql-password=mysql –oltp-table-size=10000000 run

To cleanup:

sysbench –num-threads=10 –test=oltp –mysql-host=172.16.3.7 –mysql-user=root –mysql-password=mysql –oltp-table-size=10000000 cleanup


v2graphs_1-CPU-1M-rows.gif
v2graphs_2-CPU-1M-Rows.gif

同上,只是 10M 的Row

v2graphs_1-CPU-10M-Rows.gif
v2graphs_2-CPU-10M-Rows.gif

Super Smack的综合

v2graphs-Delta-Super-Smack.gif

SysBench 的综合:


v2graphs_Delta-1M-Rows.gif
v2graphs_Detla-10M-Rows.gif

该测评的最终结论:
Linux2.4 2.6 以及Solaris比较适合运行mysql, FreeBSD 5.3 (KSE and linuxthreads), and FreeBSD 4.11 表现一般,而其余的很不适合多处理器,而个别案例说明他对于单个处理器还是有优势可言的。

后面的还有很多评语,苦于本人的英语水平有限,只等说看出大概。(原文在 http://www.newsforge.com/article.pl?sid=04/12/27/1243207)

其实本人对某些测试结果持怀疑态度:
    1.其实操作系统内核是可以根据需要进行优化和重编的,
    2.而且对于FreeBSD的测试都是基于Linux模拟方式进行的,对于FreeBSD评价有失公平。
    3.Solaris的磁盘格式非常适合数据库存储,本人就有采用Solairs的磁盘格式优化linux下mysql的经历。

No Comments

启动多个mysqld

为达到启动多个mysqld服务,只要启动时使用不同pid-file,datadir,socket,port是完全的可行。

步骤:
1、准备目录
mkdir /mysql1
chown mysql:mysql /mysql1
chmod 755 mysql /mysql1
2、准备新的服务要读取的数据库
cp /path/to/mysql/var /mysql1
3、创建mysqld启动脚本
#start_msyql
#!/bin/sh
rundir="$1"
port="$2"
echo "$rundir"
/www/mysql/bin/safe_mysqld –user=mysql –pid-file="$rundir"/mysql.pid 

–datadir="$rundir"/var -O max_connections=500 -O wait_timeout=600 -O key_buffer=32M 

–port="$port" –socket="$rundir"/mysql.sock &
说明:
脚本使用方法./start_mysql /mysql1 3307
./start_mysql dir port
dir:指的是mysql数据库及运行时产生的文件所在目录
port:指新的mysqld监听的端口

4、创建mysqld的停止脚本
#stop_mysql
#!/bin/sh
rundir="$1"
echo "$rundir"
/www/mysql/bin/mysqladmin -u root -p -S"$rundir"/mysql.sock shutdown

No Comments

用FreeBSD的ports安装apache+php+mysql

看到网上有很多介绍apache+php+mysql安装的教程,但大多都是基于源代码编译或者给予RPM包的方式,对于FreeBSD自带的ports安装却鲜有提及,有方便的干嘛弄得复杂呢?

首先确定主机联网

cvsup -h cvsup.freebsd.org /usr/share/example/cvsup/ports-supfile #同步ports

Read the rest of this entry »

, , ,

2 Comments