002AAA Mysql基础文档0924.docx
《002AAA Mysql基础文档0924.docx》由会员分享,可在线阅读,更多相关《002AAA Mysql基础文档0924.docx(14页珍藏版)》请在冰豆网上搜索。
![002AAA Mysql基础文档0924.docx](https://file1.bdocx.com/fileroot1/2023-2/22/bff41ce2-18d8-43bd-8f7d-c5a4ec733eb8/bff41ce2-18d8-43bd-8f7d-c5a4ec733eb81.gif)
002AAAMysql基础文档0924
AAAMysql基础文档
撰写人
王永才
审核人
校对人
产品名称
Mysql基础文档
产品版本
无
文档描述
限制范围
无
撰写时间
2007-9-24
一、Mysql的安装
1、RPM包安装(推荐)
查看当前目录:
[root@lab246Mysql4.1.14.Rhel3]#pwd
/root/Mysql/Mysql4.1.14.Rhel3
显示RPM包信息
[root@lab246Mysql4.1.14.Rhel3]#ls-lh
总计17M
-rw-r--r--1rootroot3.9M06-1810:
06MySQL-client-standard-4.1.14-0.rhel3.i386.rpm
-rw-r--r--1rootroot2.6M06-1810:
06MySQL-devel-standard-4.1.14-0.rhel3.i386.rpm
-rw-r--r--1rootroot8.5M06-1810:
06MySQL-server-standard-4.1.14-0.rhel3.i386.rpm
-rw-r--r--1rootroot1.2M06-1810:
06MySQL-shared-standard-4.1.14-0.rhel3.i386.rpm
使用RPM升级安装Mysql
[root@lab246Mysql4.1.14.Rhel3]#rpm-UvhMysql4.1.14.Rhel3/MySQL-*--nodeps
2、源代码安装(作为交流)
首先下载Mysql合适版本的源代码
解压源码包:
mysql5.0.22.tgz
[root@lab246Mysql]#tarzxvfmysql5.0.22.tgz
Linux下源代码安装软件的基本流程:
configure;make;makeinstall,Mysql的源码安装也一样,
[root@lab246Mysql]#cdmysql5.0.22
[root@lab246Mysql]#./configure–prefix=/usr/local
[root@lab246Mysql]#make
[root@lab246Mysql]#makeinstall
[root@lab246Mysql]#scripts/mysql_install_db
[root@lab246Mysql]#/usr/local/mysql/bin/safe_mysqld&
以上只提供参考,对于平台工作人员可以做为了解。
二、Mysql基本操作
1、Mf
Mf是Mysql的配置文档,里面包括对Mysql的常规参数及不同需求的性能优化调整,这里给出一个示例,可以满足DCBI通常的应用:
由于DCBI在20070517及以后的版本中对Mysql的max_connections要求要大于128,而Mysql默认的max_connections为100,因此在升级或是新安装时请一定要注意。
另:
此文件在安装了Mysql的Linux机器的/usr/share/doc/MySQL-server-standard-4.1.14/目录有相关参考文档。
2、Mysql常用命令
A:
Mysql:
可以用于登录、导入数据。
如:
mysql–uroot–hlocalhost–pdcradius,意思是root用户以localhost主机登录到dcradius数据库,-p是使用密码。
Mysqldcradius<20070517up20070901.sql意思是,把20070517up20070901.sql这个数据库语句导入到dcradius数据库中。
B:
Mysqladmin:
用于对Mysql的简单管理
格式:
mysqladmin[OPTIONS]commandcommand....
常用command:
createdatabasenameCreateanewdatabase
debugInstructservertowritedebuginformationtolog
dropdatabasenameDeleteadatabaseandallitstables
extended-statusGivesanextendedstatusmessagefromtheserver
flush-hostsFlushallcachedhosts
flush-logsFlushalllogs
flush-statusClearstatusvariables
flush-tablesFlushalltables
flush-threadsFlushthethreadcache
flush-privilegesReloadgranttables(sameasreload)
killid,id,...Killmysqlthreads
passwordnew-passwordChangeoldpasswordtonew-password,MySQL4.1hashing.
old-passwordnew-passwordChangeoldpasswordtonew-passwordinoldformat.
pingCheckifmysqldisalive
processlistShowlistofactivethreadsinserver
reloadReloadgranttables
refreshFlushalltablesandcloseandopenlogfiles
shutdownTakeserverdown
statusGivesashortstatusmessagefromtheserver
start-slaveStartslave
stop-slaveStopslave
variablesPrintsvariablesavailable
versionGetversioninfofromserver
其中以红色标记最为常用,
C:
Mysqldump:
Mysql数据库备份命令
如:
mysqldump–optdcradius>2007-9-21.sql
对备份文件的导入:
mysqldcradius<2007-9-21.sql
D:
mysqlshow:
显示系统中已有的数据库
[root@lab246~]#mysqlshow
+-----------+
|Databases|
+-----------+
|dcradius|
|mysql|
|swap|
|test|
|zj|
+-----------+
三、Mysql数据库操作
关于Mysql的查询、更新、删除等操作,请参考《MySQL中文参考手册》第7章MySQL语言参考,这里讲的非常详细。
A、Mysql查询:
格式:
SELECT[STRAIGHT_JOIN][SQL_SMALL_RESULT][SQL_BIG_RESULT][HIGH_PRIORITY]
[DISTINCT|DISTINCTROW|ALL]
select_expression,...
[INTO{OUTFILE|DUMPFILE}'file_name'export_options]
[FROMtable_references
[WHEREwhere_definition]
[GROUPBYcol_name,...]
[HAVINGwhere_definition]
[ORDERBY{unsigned_integer|col_name|formula}[ASC|DESC],...]
[LIMIT[offset,]rows]
[PROCEDUREprocedure_name]]
1、登录到mysql:
[root@lab60root]#mysqldcradius
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis3505toserverversion:
4.1.14-standard
Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.
mysql>
2、查询Mysql中当前的已经存在的数据库:
showdatabases
mysql>showdatabases;
+----------+
|Database|
+----------+
|dcradius|
|mysql|
|test|
+----------+
3rowsinset(0.00sec)
3、打开目标数据库:
userdcradius;
mysql>usedcradius;
Databasechanged
4、显示当前数据库里的各个数据表:
showtables;
mysql>showtables;
+------------------------+
|Tables_in_dcradius|
+------------------------+
|ACCLIST|
|ACCSUBJECT|
|ACLLOG|
|ALERTINFO|
|AUTHORIZATIONGROUP|
………………..
|WEBREGINFO|
+------------------------+
74rowsinset(0.00sec)
5、显示某个数据表的表结构:
descUSERACCOUNT;
mysql>descUSERACCOUNT;
+------------------+-------------+------+-----+---------------------+----------------+
|Field|Type|Null|Key|Default|Extra
+------------------+-------------+------+-----+---------------------+----------------+
|ACCOUNTID|int(11)||PRI|NULL|auto_increment
|FEETYPEID|int(11)|||0|
|NEWFEETYPEID|int(11)|||0|
|ACCOUNTNAME|varchar(50)||MUL||
|LEFTMONEY|double(8,2)|YES||0.00|
|NEXTPAYDATE|datetime|YES|MUL|2099-12-3100:
00:
00|
|ACCSTAT|tinyint(4)||MUL|0|
|PREDAYTIME|datetime|YES||1900-01-0100:
00:
00|
|NPREDAY|tinyint(4)|YES||0|
|ISCHECKQUOTA|tinyint(4)|YES||0|
|ALLOW_LOCAL|tinyint(4)|YES||0|
|ISLOCKNEWFEETYPE|tinyint(4)|||0|
|PROHIBITDATE|datetime|YES||1900-01-0100:
00:
00|
+------------------+-------------+------+-----+---------------------+----------------+
13rowsinset(0.00sec)
6、常用数据查询语句:
select
查询USERACCOUNT表中所有数据条目
mysql>select*fromUSERACCOUNT;
查询USERACCOUNT表中所有数据条目,返回前10条数据
mysql>select*fromUSERACCOUNTlimit10;
查询USERACCOUNT表中所有数据条目,返回第10条以后的100条数据
mysql>select*fromUSERACCOUNTlimit10,100;
附加条件的具体查询
mysql>select*fromUSERACCOUNTwhereACCOUNTID=10;
mysql>select*fromUSERACCOUNTwhereACCOUNTID=10andFEETYPEID=2;
mysql>select*fromUSERACCOUNTwhereLEFTMONEY>10;
统计USERACCOUNT中所有数据条目
mysql>selectcount(*)fromUSERACCOUNT;
模糊查询,查询USERPARAM表中USERNAME字段以“wang”开头的所有用户
mysql>select*fromUSERPARAMwhereUSERNAMElike'wang%';
mysql>select*fromUSERPARAMwhereUSERNAMElike'wang%';
将查询输出到文本:
mysql>SELECT...INTOOUTFILE'file_name'(文件保存在当前数据库目录下)
B、数据插入:
INSERT
格式:
insertintotablename(字段A,字段B,字段C)values(‘数值A’,’数值B’,’数值C’);
1、增加admin的登录许可IP
mysql>insertintoOPLIMITIP(OPNAME,IPADDRESS)VALUES(‘admin’,’0.0.0.0/0’);
注意、关于INSERT语句,请参考《MySQL中文参考手册》第7章,在进行数据操作前请先备份数据,在确认无误后再进行相关操作。
C、数据更新:
UPDATE
格式:
UPDATE[LOW_PRIORITY]tbl_nameSETcol_name1=expr1,col_name2=expr2,...
[WHEREwhere_definition][LIMIT#]
UPDATE用新值更新现存表中行的列,SET子句指出哪个列要修改和他们应该被给定的值,WHERE子句,如果给出,指定哪个行应该被更新,否则所有行被更新。
如果你指定关键词LOW_PRIORITY,执行UPDATE被推迟到没有其他客户正在读取表时。
如果你从一个表达式的tbl_name存取列,UPDATE使用列的当前值。
例如,下列语句设置age为它的当前值加1:
mysql>UPDATEpersondataSETage=age+1;
UPDATE赋值是从左到右计算。
例如,下列语句两倍age列,然后加1:
mysql>UPDATEpersondataSETage=age*2,age=age+1;
如果你设置列为其它当前有的值,MySQL注意到这点并且不更新它。
D、DELECT
格式:
DELETE[LOW_PRIORITY]FROMtbl_name
[WHEREwhere_definition][LIMITrows]
DELETE从tbl_name表中删除满足由where_definition给出的条件的行,并且返回删除记录的个数。
如果你发出一个没有WHERE子句的DELETE,所有行都被删除。
MySQL通过创建一个空表来完成,它比删除每行要快。
在这种情况下,DELETE返回零作为受影响记录的数目。
(MySQL不能返回实际上被删除的行数,因为进行再创建而不是打开数据文件。
只要表定义文件“tbl_name.frm”是有效的,表才能这样被再创建,即使数据或索引文件破坏了)。
如果你确实想要知道在你正在删除所有行时究竟有对少记录被删除,并且愿意承受速度上的惩罚,你可以这种形式的一个ELETE语句:
mysql>DELETEFROMtbl_nameWHERE1>0;
注意这比没有WHERE子句的DELETEFROMtbl_name慢的多了,因为它一次删除一行。
如果你指定关键词LOW_PRIORITY,DELETE的执行被推迟到没有其他客户读取表后。
四、Mysql数据库复制
MySql数据库同步复制,该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。
主要用于对网络可靠性要求比较高的地方,比如,可以通过在网络中部署两套DCBI_Server,当主DCBI_Server出现问题时,自动跳转到从DCBI_Server进行认证,确保网络中用户正常接入。
环境描述:
系统:
RedhatLinuxAS3update8
Mysql版本:
Mysql4.1.14
复制数据库:
dcradius
服务器两台:
分别安装DCBI_Server(版本任意),DCBI_A(主):
192.168.1.245/24;DCBI_B(备):
192.168.1.246/24
DCBI_A上的配置:
Mysql>GRANTFILEON*.*TOdcradius@'192.168.1.246'IDENTIFIEDBY'digitalchina';
修改DCBI_A上的f文件,增加以下内容:
server-id=1
log-bin
binlog-do-db=dcradius
通过showmasterstatus可以看到master上的一些信息。
DCBI_B上的配置:
Mysql>GRANTFILEON*.*TOdcradius@'192.168.1.245'IDENTIFIEDBY'digitalchina';
修改DCBI_B上的f文件,增加以下内容:
server-id=2
master-host=192.168.1.245
master-user=dcradius
master-password=digitalchina
master-port=3306
master-connect-retry=10
replicate-do-db=dcradius
五、DCBI升级脚本制作
DCBI的升级往往会涉及到对数据库结构的修改,比如对数据库字段的修改、添加、删除等,在这里就要求大家对每个版本之间在数据库结构方面的区别要了解清楚,不能遗漏每一个细节。
否则,在进行DCBI升级的时候都有可能遇到问题。
请大家在制作数据库升级脚本的时候一定要仔细仔细再仔细。
另外一个就是一直强调的数据备份!
1、所需工具(公司FTP中wangyc/tools/目录有相关工具的下载):
文件差异比较工具:
推荐BeyondCompare
文本编辑工具:
推荐EditPlus(可实现文本文档windows和Linux系统之间的转换)
现有DCBI版本的db_radius.sql文件和待升级的DCBI版本的db_radius.sql文件。
2、操作步骤:
A、找到当前DCBI版本的db_radius.sql和待升级的DCBI版本db_radius.sql文件,这里以20070717升级到20070901版本为例:
B、比较两个文件的差异,然后用Mysql语法把当前库结构修改成待升级版本的数据库结构。
关于BeyondCompare的使用,在BeyondCompare的会提示有几处差异、差异的具体位置等,在使用的时候可以多注意这方面的细节。
结合以上信息,制作DCBIV320070717到20070901的升级脚本如下:
ALTERTABLEFEETYPEADDCOLUMNISACCUMULATEtinyintdefault0;
ALTERTABLESTATIONADDCOLUMNFIRSTAUTHCHARGEtinyintNOTNULLdefault0;
ALTERTABLEUSERPARAMADDCOLUMNISFIRSTAUTHtinyintNOTNULLdefault0;
ALTERTABLEUSERPARAMADDCOLUMNACCUMULATION_TOTALdouble(8,2)NOTNULLdefault0;
ALTERTABLEUSERPARAMADDCOLUMNLASTONLINETIMEdatetimedefault'1970-01-0100:
00:
00';
updateOPGROUPsetOPPRIVILEGES='111111111111111111111111111111111111111111111111111111111111111111111111111'whereOPGROUPNAME='admin';
把以上内容保存为一个文本文档0717up0901.sql,通过mysqldcradius<0717up0901.sql升级现有数据库结构。
注意:
升级过程中会涉及到多个管理员的权限更改的问题,上面的脚本只改了默认管理员admin的相关权限,其它操作员的相关权限也需要修改。
关于DCBI的数据库升级方面更详细的可以参考《DCBI数据库升级脚本制作方法--20070802.doc》