间接相应苦丁兄号召,写了一点点文档,欢迎指正1

bnwxf 2003-05-19 10:40:50
简装MySQL入门
本文内容,纯属[编著]
如有雷同,纯属巧合
bnwxf@etang.com

2003-05-19

目标:
为informix esql c开发人员转换到MySQL c api提供最基本的准备,计划分为四个部分
0.MySQL的一些基本概念
1.安装配置MySQL
2.创建库和表
3.用MySQL提供的C API开发一个具有基本功能的数据库程序

0.基本概念
0.1MySQL的版本
MySQL由MySQL AB公司开发,有standard和max两种二进制发行包,只有稳定的功能才能进入standard,max是在standard之上添加了一些没有达到稳定等级的新功能.现阶段MySQL AB推荐使用版本为4.0,与前一个推荐版本3.23相比,InnoDB数据引擎由max发行包转移到standard发行包当中.下面的讨论只针对standard发行包.

0.2MySQL表的类型
MySQL4.0提供了MyISAM和InnoDB两种类型的数据引擎,ISAM是MySQL的原生数据引擎,具有稳定高效工具免费的优点,但不提供事物处理,不支持外键;InnoDB是MySQL新增的数据引擎,支持事物处理行级锁外键等功能,但修复工具需要向MySQL AB公司购买.用于管理的表只能保存为MyISAM表.

0.3常用工具
mysqld,类似oninit,用来启动MySQL服务,但推荐使用经过包装的safe_mysqld脚本来启动服务.
mysqladmin,类似onmoniter,用来监控MySQL服务.
mysql,类似dbaccess,一个交互式客户端工具.
mysqldump,类似dbexport,将数据倒入文本文件中.
mysqlimport,类似dbimport,将文本文件倒入数据库.

0.4目录结构
缺省数据库的位置编译在服务器中,使用RPM包安装,这个位置是/var/lib/mysql目录.
基于MyISAM数据引擎数据库,结构和VFP相似,库是一个目录,每个表是三个文件,后缀名为.frm的文件保存表结构,
后缀名为MYD的文件保存数据,后缀名为MYI的文件保存索引.
基于InnoDB数据引擎的库,结构和informix相似,引入了数据空间的概念,一个库由几个文件组成.
下面是我的mysqld创建默认的InnoDB库文件:
ib_arch_log_0000000000 ibdata1 ib_logfile0 ib_logfile1



1.安装配置

1.1下载

可以在www.mysql.com下载4.0.12版的standardRPM包,包括SERVER和CLIENT两个部分.网站上提供了md5checksum,可以在下载后,用md5sum验证.

1.2安装
如果安装red hat 7.3时已经安装了3.23.49-3版的MySQL,请先用下列命令卸载:
rpm -e mysql-server-3.23.49-3
rpm -e mysql-devel-3.23.49-3
rpm -e MySQL-python-0.9.1-1
rpm -e php-mysql-4.1.2-7
rpm -e libdbi-dbd-mysql-0.6.4-2
rpm -e mod_auth_mysql-1.11-1
rpm -e MyODBC-2.50.39-4
rpm -e perl-DBD-MySQL-1.2219-6
rpm -e qt-MySQL-3.0.3-11
rpm -e tora-1.2.3-2
rpm -e mysql-3.23.49-3

用下列命令安装4.0.12:
rpm -ihv MySQL-server-4.0.12-0.i386.rpm
rpm -ihv MySQL-client-4.0.12-0.i386.rpm
...全文
41 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fatboyslim 2003-05-28
  • 打赏
  • 举报
回复
up
bnwxf 2003-05-27
  • 打赏
  • 举报
回复
2003-05-27
C API
3.1下载
www.mysql.com 下载Libraries and header files RPM包
在文档写过程中,版本从4.0.12 变成了 4.0.13
用rpm -q -p -l MySQL-devel-4.0.13-0.i386.rpm 命令查看下载的软件包,其中库文件如下:
/usr/lib/mysql/libdbug.a
/usr/lib/mysql/libheap.a
/usr/lib/mysql/libmerge.a
/usr/lib/mysql/libmyisam.a
/usr/lib/mysql/libmyisammrg.a
/usr/lib/mysql/libmysqlclient.a
/usr/lib/mysql/libmysqlclient.la
/usr/lib/mysql/libmysqlclient_r.a
/usr/lib/mysql/libmysqlclient_r.la
/usr/lib/mysql/libmystrings.a
/usr/lib/mysql/libmysys.a
/usr/lib/mysql/libnisam.a
/usr/lib/mysql/libvio.a
3.2安装
rpm -ihv MySQL-devel-4.0.13-0.i386.rpm

swotcoder 2003-05-22
  • 打赏
  • 举报
回复
嗯,踹一脚。。。。。。。
bnwxf 2003-05-22
  • 打赏
  • 举报
回复
2003-05-220.4目录结构
0.4关于InnoDB的部分有误,更正如下:
基于InnoDB数据引擎的库,结构和informix相似,引入了数据空间的概念,一个库仍然表现为一个目录,这个目录下保存frm文件,真正的数据保存在数据空间里面.
下面是我的mysqld创建默认的InnoDB数据空间文件:
ib_arch_log_0000000000 ibdata1 ib_logfile0 ib_logfile1
2.1.4创建proj_doc数据库
mysql --user=root -p

mysql>CREATE DATABASE proj_doc;
mysql>quit

此时进入/var/lib/mysql目录,会发现多了一个proj_doc目录.

2.2建表
编辑create.sql文件,内容如下,注意用TYPE=InnoDB指定表类型:
USE proj_doc;
CREATE TABLE proj_info (proj_id CHAR(7) NOT NULL, engineer VARCHAR(128),
proj_desc VARCHAR(128),PRIMARY KEY (proj_id)) TYPE = InnoDB;
CREATE TABLE doc_info (proj_id CHAR(7) NOT NULL, doc_name VARCHAR(64),
doc_desc VARCHAR(128),engineer VARCHAR(32), INDEX p_id (proj_id), FOREIGN KEY (proj_id) REFERENCES proj_info (proj_id) ON DELETE CASCADE) TYPE = InnoDB;

用下面的命令创建表:
mysql -uroot -pyourpasswd < create.sql > create.out

再进入/var/lib/mysql/proj_doc目录,会发现下面两个文件:
doc_info.frm proj_info.frm
这就是表结构文件.

totyulvxl 2003-05-20
  • 打赏
  • 举报
回复
up
bnwxf 2003-05-20
  • 打赏
  • 举报
回复
2003-05-20

考虑了一下,决定将1的标题该为安装。关于配置的初步说明放在基本概念里面。

0.5配置文件
MySQL的常用工具可以用命令行参数控制其行为,为了减少输入工作,从3.22起,引入了my.cnf配置文件.
my.cnf用[group]标明下面的配置项对哪组工具起作用.型如option的配置项等同于命令行参数--option,
型如option=value的配置项等同于命令行参数--option=value.
查找配置文件的顺序如下:
`/etc/my.cnf' Global options.
`COMPILATION_DATADIR/my.cnf' Server-specific options.
`defaults-extra-file' The file specified with --defaults-extra-file=....
`~/.my.cnf' User-specific options.
对于同一组下的相同的配置项,MySQL采用这样一种策略:特殊覆盖一般,后来覆盖先到.
从上面可以看出,my.cnf和onconfig.ids相似但不相同.
----------------------------------------------------
1.3将路径加入环境变量
cd
vi .bash_profile
PATH=$PATH:/usr/share/mysql;export PATH

2.创建InnoDB数据库和表

2.1建库
2.1.1创建配置文件/var/lib/my.cnf
数据库:proj_doc
位置: /usr/data/proj_doc
大小: 20M
[mysqld]
# You can write your other MySQL server options here
# ...
# Data file(s) must be able to
# hold your data and indexes.
# Make sure you have enough
# free disk space.
innodb_data_home_dir =
innodb_data_file_path = /usr/data/proj_doc/proj_doc:20M:autoextend
# Set buffer pool size to
# 50 - 80 % of your computer's
# memory
innodb_log_group_home_dir=/usr/data/proj_doc
set-variable = innodb_buffer_pool_size=80M
set-variable = innodb_additional_mem_pool_size=10M
# Set the log file size to about
# 25 % of the buffer pool size
set-variable = innodb_log_file_size=20M
set-variable = innodb_log_buffer_size=8M
# Set ..flush_log_at_trx_commit
# to 0 if you can afford losing
# some last transactions
innodb_flush_log_at_trx_commit=1

2.1.2创建数据目录
cd /usr
mkdir data
chown mysql:mysql data
cd data
mkdir proj_doc
chown mysql:mysql proj_doc

2.1.3重启MySQL服务
mysql.server stop
mysql.server start
Remus 2003-05-20
  • 打赏
  • 举报
回复
up...

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧