|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
欢迎大家来到仓酷云论坛!一:数据库启动/中断
启动
servicemysqldstart
/etc/init.d/mysqldstart
封闭
servicemysqldstop
/etc/init.d/mysqldstart
mysqladmin-uroot-pshutdown
二:mysql数据库修正用户暗码,赋权
2.1修正mysql用户暗码
***1
mysqladmin-u用户名-p就暗码password新暗码
***2
经由过程修正(拔出)数据库mysql中user表纪录到达目标
#/var/mysql5/bin/mysql-hlocalhost-uroot-p
Enterpassword:不输出任何器材(新装数据库root暗码为空,间接回车便可)
mysql>usemysql
mysql>updateusersetpassword=password(新暗码)whereUSER=用户名andHOST=主机名;
依据你的必要修正sql语句的where前提,host能够为%(恣意主机),ip地点,localhost
##修正暗码失效,必定要革新权限哦
mysql>flushprivileges;
或
mysqladmin-hlocalhost-uroot-ppasswordreload
革新体系权限表,这个不克不及少,不然不失效。
***3
经由过程grant赋权下令
#/var/mysql5/bin/mysql-hlocalhost-uroot-p
Enterpassword:不输出任何器材(新装数据库root暗码为空,间接回车便可)
mysql>grant权限1,权限2,…权限non库.表to用户@主机名identifiedby用户暗码;
如:
mysql>grantallon*.*toroot@%identifiedby123456
mysql>grantallon*.*toroot@localhostidentifiedby123456
--------------------------------------
权限1,权限2,…权限n代表:
select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被allprivileges大概all取代,暗示付与用户全体权限。
当数据库称号.表称号被*.*取代,暗示付与用户操纵办事器上一切数据库一切表的权限。
用户地点能够是localhost,也能够是ip地点、呆板名字、域名。也能够用’%暗示从任何地点毗连。
‘毗连口令’不克不及为空,不然创立失利。
-------------------------------------
mysql>flushprivileges;
或
mysqladmin-hlocalhost-uroot-ppasswordreload
革新体系权限表,这个不克不及少,不然不失效。
三:mysql经常使用数据库、表、字段、索引办理操纵
3.1创立数据库下令,建库
#当数据库databasename不存在就增添,并指定字符集utf8和校验字符集utf8_general_ci
createdatabaseIFNOTEXISTSdatabasenamedefaultcharsetutf8COLLATEutf8_general_ci;
#间接创立数据库databasename,字符集是mysql默许设置指定的(取决于my.cnf的设置)
createdatabasedatabasename;
#当数据库databasename不存在就增添,并指定字符集utf8
createdatabaseIFNOTEXISTSdatabasenamedefaultcharsetutf8
3.2建表
#表存在就删除重修(无提醒哦)
DROPTABLEIFEXISTS`表名`;
CREATETABLE`表名`(
`字段值1`int(11)NOTNULLAUTO_INCREMENT,
`字段值2`varchar(30)DEFAULTNULL,
……
PRIMARYKEY(`字段值1`)
)ENGINE=存储引擎(如MyISAM,innodb)AUTO_INCREMENT=1DEFAULTCHARSET=字符集(如utf8);
#间接建表(表存在的话会提醒表已存在)
CREATETABLE`表名`(
`字段值1`int(11)NOTNULLAUTO_INCREMENT,
`字段值2`varchar(30)DEFAULTNULL,
……
PRIMARYKEY(`字段值1`)
)ENGINE=存储引擎(如MyISAM,innodb)AUTO_INCREMENT=1DEFAULTCHARSET=字符集(如utf8);
如:
DROPTABLEIFEXISTS`yuanshi`;
CREATETABLE`yuanshi`(
`goods_no`varchar(30)DEFAULTNULL,
`pid_color`varchar(30)DEFAULTNULL,
`products_no`varchar(30)DEFAULTNULL,
`create_time`datetimeDEFAULTNULL,
PRIMARYKEY(`goods_id`)
)ENGINE=MyISAMAUTO_INCREMENT=724DEFAULTCHARSET=utf8;
CREATETABLE`yuanshi`(
`goods_no`varchar(30)DEFAULTNULL,
`pid_color`varchar(30)DEFAULTNULL,
`products_no`varchar(30)DEFAULTNULL,
`create_time`datetimeDEFAULTNULL,
PRIMARYKEY(`goods_id`)
)ENGINE=INNODBAUTO_INCREMENT=724DEFAULTCHARSET=utf8;
3.3字段办理
##增添字段
altertable表名add字段名字段范例
如
##增添整数性字段
altertabletable_nameaddfiled_nameint(11)DEFAULT0;
##增添日期行字段
altertableyuanshiaddup_timedatetimeDEFAULTNULL;
##增添微整形字段
altertableyuanshiaddis_deltinyint(1)NOTNULLDEFAULT0;
##增添字符串字段
altertableyuanshiaddunitchar(10)DEFAULTNULL;
altertableyuanshiadddescriptionvarchar(255)DEFAULTNULL;
#在end_time字段前面增添一个字段
altertabletable_nameaddfiled_nameint(11)DEFAULT0AFTER`end_time`;
##修正字段point
ALTERTABLE`linuxshizhan`MODIFYCOLUMN`point`int(11)NOTNULLDEFAULT0COMMENT积分;
#修正weight字段前面的这个point字段
ALTERTABLE`linuxshizhan`MODIFYCOLUMN`point`int(11)NOTNULLDEFAULT0COMMENT积分AFTER`weight`;
##删除字段tag_ids
ALTERTABLE`linuxshizhan`DROPCOLUMN`tag_ids`;
3.4createindex给某个字段增添索引
语法:
create[unique|fulltext|spatial]indexindex_name
[usingindex_type]
ontbl_name(index_col_name,...)
个中:
index_name:索引的称号,索引在一个表中称号必需是独一的。
USINGindex_type:部分存储引擎同意在创立索引时指定索引的范例。index_type为存储引擎撑持的索引范例的称号,MySQL撑持的索引范例有BTREE和HASH。假如不指定USING子句,MySQL主动创立一个BTREE索引。
index_col_name:col_name暗示创立索引的列名。length暗示利用列的前length个字符创立索引。利用列的一部分创立索引可使索引文件年夜年夜减小,从而节俭磁盘空间。在某些情形下,只能对列的前缀举行索引。比方,索引列的长度有一个最年夜下限,因而,假如索引列的长度凌驾了这个下限,那末便可能必要使用前缀举行索引。BLOB或TEXT列必需用前缀索引。前缀最长为255字节,但关于MyISAM和InnoDB表,前缀最长为1000字节。别的还能够划定索引按升序(ASC)仍是降序(DESC)分列,默许为ASC。假如一条SELECT语句中的某列依照降序分列,那末在该列上界说一个降序索引能够加速处置速率。
UNIQUE|FULLTEXT|SPATIAL:UNIQUE暗示创立的是独一性索引;FULLTEXT暗示创立全文索引;SPATIAL暗示为空间索引,能够用来索引多少数据范例的列
主要提醒:
CREATEINDEX语句其实不能创立主键。
在一个索引的界说中包括多个列,两头用逗号离隔,可是它们要属于统一个表。如许的索引叫做复合索引。
如:
CREATEINDEXidx_firstLetterontb_drug_base(firstLetter);
3.5经由过程altertable增添索引
1.PRIMARYKEY(主键索引)
ALTERTABLE`table_name`ADDPRIMARYKEY(`column`)
2.UNIQUE(独一索引)
ALTERTABLE`table_name`ADDUNIQUE(`column`)
3.INDEX(一般索引)
ALTERTABLE`table_name`ADDINDEXindex_name(`column`)
4.FULLTEXT(全文索引)
ALTERTABLE`table_name`ADDFULLTEXT(`column`)
5.多列索引
ALTERTABLE`table_name`ADDINDEXindex_name(`column1`,`column2`,`column3`)
3.6检察索引
SHOWINDEXFROMtbl_name[FROMdb_name]
四:设置数据库编码(字符集)
4.1.设置全部数据库编码
a.启动mysql的时分,mysqld_safe下令行到场
--default-character-set=gbk
gbk为字符集编码
b.修正my.cnf,在[mysqld]中到场
default-character-set=gbk
gbk为字符集编码
4.2.改动某个库的编码格局:在mysql提醒符后输出下令
#mysql安装目次/bin/mysql-hlocalhost-uroot-p
mysql>alterdatabase数据库名defaultcharactersetgbk;
gbk为字符集编码
显现字符集编码相干变量
mysql>showvariableslikecollation_%;
+----------------------+-----------------+
|Variable_name|Value|
+----------------------+-----------------+
|collation_connection|utf8_general_ci|
|collation_database|utf8_general_ci|
|collation_server|utf8_general_ci|
………………………………………………
+----------------------+-----------------+
mysql>showvariableslikecharacter_set%
+--------------------------+--------+
|Variable_name|Value|
+--------------------------+--------+
|character_set_client|latin1|
|character_set_connection|latin1|
|character_set_database|latin1|
|character_set_filesystem|binary|
|character_set_results|latin1|
|character_set_server|latin1|
|character_set_system|utf8|
………………………………………………
+--------------------------+--------+
设置字符集相干变量
mysql>SETcharacter_set_client=gbk;
mysql>SETcharacter_set_connection=gbk;
mysql>SETcharacter_set_results=gbk;
5、mysql经常使用办理下令
mysql>shell下
showdatabases;显现一切数据库
showprocesslist;检察mysql历程列表
showfullprocesslist;检察mysql历程列表,含具体SQL
showtables;显现一切表
showvariables;显现变量
usedatabasename;切换数据库
desctablename;检察表布局
showtablestatus;检察表形态
showstatus;检察体系形态
showslavestatus;检察从库形态
FLUSHTABLESWITHREADLOCK;锁定命据库,一样平常实行备份钱大概创建主从快照前
UNLOCKTABLES;排除锁定,一样平常实行完整份的时分大概创建主从快照时
mysqladmin-hlocalhost-uroot-ppasswordprocesslist检察mysql历程列表
6、mysql日记办理
mysql>flushlogs;
#按文件:删除mysql-bin.000354之前的日记,不包括mysql-bin.000354
MYSQL>purgebinarylogstomysql-bin.000354;
QueryOK,0rowsaffected(0.16sec)
#定时间:删除2013-08-1000:00:00之前的日记
MYSQL>purgebinarylogsbefore2013-08-1000:00:00;
#定时间:请理三天之前的日记
MYSQL>purgemasterlogsbeforedate_sub(now(),interval3day);
主动清算日记:
#修正my.cnf文件设置bin-log过时工夫,如日记保存7天
[mysqld]
expire-logs-days=7
固然,做了flushlogs;举措后,间接到mysql数据文件夹,间接用rm-fmysql-bin.相干的文件(最新的谁人日记文件不克不及删除哦!!!)
假定最新的日记文件是mysql-bin.000354这个,那末你就能够间接到mysql数据文件夹
rm-fmysql-bin.000353
rm-fmysql-bin.000352
如你不断定能够经由过程ls-lht确认mysql数据文件夹的最新日记文件究竟是谁人。
固然自己仍是倡议你利用purgebinarylogs往删除对照保险哦
7、经常使用mysql数据库备份
7.1.收费工具
a.间接拷贝数据文件,必要中断数据库,不顺应天生体系。
间接拷贝数据文件最为间接、疾速、便利,但弱点是基础上不克不及完成增量备份。为了包管数据的分歧性,必要在备份文件前,实行以下SQL语句:
mysql>FLUSHTABLESWITHREADLOCK;(大概中断数据库,不顺应临盆体系。)
也就是把内存中的数据都革新到磁盘中,同时锁定命据表,以包管拷贝过程当中不会有新的数据写进。这类***备份出来的数据规复也很复杂,间接拷贝回本来的数据库目次下便可。
b.对mysqlisam存储体例的,可使用hotcopy,mysqldump
c.对innodb存储体例的,利用mysqldump
d.对同时利用innodb和mysqlisam的mysqldump
e.主从复制(当主库数据被不测大概歹意删除后,作为备份的从库也就不克不及用了。)
7.2.贸易软件
IBBackup
7.3mysql数据库物理备份:间接拷贝mysql数据库文件
先中断mysql数据库
servicemysqldstop
运转体系下令
#cp-rmysql数据库的data目次备份文件寄存路径
大概
#tar-cvzf备份文件名.tar.gzmysql数据库的data目次
mysql数据库物理备份的复原:
间接把文件掩盖到响应数据库data目次便可
7.4mysqlhotcopy热备份,只针对mysiam存储引擎
MySQLHotCopy是一个perl剧本,实行时分锁定命据库表,然后利用体系下令cp大概scp做的一种备份。等备份完成的时分,才开释表锁定,并革新日记,他是一种十分快速的体例,可是数据备份只能在通一台呆板上,只合适mysqlisam存储体例
下令
#mysql安装目次/bin/mysqlhotcopy--user=用户--password=暗码-q"数据库名"备份文件寄存目次
复原:
间接把文件掩盖到响应数据库data目次便可
7.5mysqldump备份
合适mysqlisam和innodb存储体例,经常使用于数据备份,迁徙。
mysqldump-hhost-uuser-ppass-B数据库名>数据库备份名.sql
将数据库“数据库名”中的一切表备份到“数据库备份名.sql”文件,
“数据库备份名.sql”是一个文本文件,文件名任取。
该下令备份出来的sql中带有createdabatase信息,就是说备份出来的sql在复原时会把存在的库删除重修
如
mysqldump-uroot-pdcbicc106-Bmysql>mm.sql
##不含建库信息的mysqldump
mysqldump-hhost-uuser-ppass-B数据库名>数据库备份名.sql
如
mysqldump-uroot-pdcbicc106-B-nmysql>mm2.sql
#mysqldump-hhost-uuser-ppass--opt数据库名表1表2表3……表n>数据库备份名.sql
将数据库“数据库名”中的表1表2表3……表n备份到“数据库备份名.sql”文件,
“数据库备份名.sql”是一个文本文件,文件名任取。
#mysqldump-hhost-uuser-ppass--databases数据库1数据库1>数据库备份名.sql
将数据库“数据库1”和“数据库2”备份到“数据库备份名.sql”文件,
“数据库备份名.sql”是一个文本文件,文件名任取。
#mysqldump-hhostname-uusername-ppassword-no-data--databasesdatabasename1databasename2databasename3>multibackupfile.sql
仅仅备份数据库布局
#mysqldump-hhost-uuser-ppass--opt--all-databases>all-databases.sql
将一切数据库备份到all-databases.sql文件,all-databases.sql是一个文本文件,文件名任取。)
复原MySQL数据库
#mysql-hhostname-uusername-ppassworddatabasename<backupfile.sql
#mysql--default-character-set=utf8-uxxx[database]<xxx.sql
复原紧缩的MySQL数据库
#gunzip<backupfile.sql.gz|mysql-uusername-ppassworddatabasename
#gunzip<backupfile.sql.gz|mysql--default-character-set=utf8-uxxx[database]
将数据库转移到新办事器
#mysqldump-uusername-ppassworddatabasename|mysqlChost=*.*.*.*-Cdatabasename
备份有innodb存储体例的
dump参考选项:
--opt--default-character-set=utf8
--triggers-R--hex-blob--all-databases
--flush-logs
--single-transaction
--delete-master-logs
-x
7.6导出表布局
mysqldump-h192.168.1.30-uroot-123456--default-character-set=utf8-Bbackdb-d>/bak/biaojiegou.sql
针对mysql5.6利用了全局事件GTID的库,必要加--set-gtid-purged=OFF参数。不然报错
mysqldump-h192.168.1.30-uroot-123456--default-character-set=utf8--set-gtid-purged=OFF-Bbackdb-d>/bak/biaojiegou.sql
7.7只导出trigger,只备份trigger
mysqldump-h127.0.0.1-uroot-p123456--skip-opt--trigger-d-n-t-Bbackdb>/bak/backdb_trigger
7.8导出函数funtcion和event
mysqldump-h192.168.1.30-uroot-p123456--default-character-set=utf8-n-d-t-R-Edbname>/bak/funcation.sql
针对mysql5.6利用了全局事件GTID的库,必要加--set-gtid-purged=OFF参数。不然报错
mysqldump-h192.168.1.30-uroot-p123456--default-character-set=utf8--set-gtid-purged=OFF-n-d-t-R-Edbname>/bak/funcation.sql
7.9只备份数据库的数据,不带任何表布局和函数,触发器
mysqldump-uroot-pdcbicc106-n-t-Bmysql>mydata.sql
8.0以分表***导出数据,这类体例只合适备份和复原只能在mysql地点的办事器上实行哦,丙炔备份目次{BACKUPDIR}必需有mysql运转用户(通常是mysql用户)的权限,牢记牢记
假如没有请chownmysql:mysql{BACKUPDIR}
分表导出合适:NOTE:Thisonlyworksifmysqldumpisrunonthesamemachineasthemysqldserver.
mysqldump-uroot-p${MYSQLPASSWORD}-T${BACKUPDIR}${DATABASENAME}
mydump-hlocalhost-uroot-ppassword-T备份目次数据库名表名
分表体例的数据复原:
mysqlimport-hlocal-uroot-p`123456`backdb`find/data/backup/database/backdb/2010-02-27/-name"*.txt"`
8、mysql慢查询日记分享工具
mysqldumpslow:perl工具,mysql官方自带
mysqlsla:perl工具功效壮大,数据报表完全,定制化才能强.
mysql-explain-slow-log:perl无
mysql-log-filter:pythonorphp不掉功效的条件下,坚持输入简便
myprofi:php工具,十分精简
这里保举mysql慢查询日记剖析工具mysqlsla
利用举例
将慢日记mysqlslow.log中实行工夫最长的10条sql显现并写到sql_10.log中。
mysqlsla-ltslow-sf"+select"-top10mysqlslow.log>sql_10.log
将慢日记mysqlslow.log中数据库为mydb的一切select和update的慢sql,显现并将查询次数最多的100条写到sql_su100.sql中。
mysqlsla-ltslow-sf"+select,update"-top100-sortc_sum-dbmydbmysqlslow.log>sql_su100.log
mysqlsla-ltslow-sf"+select"-top100-sortc_summysqld_slow_query.log>sql_su100.log
九:binlog日记剖析,经由过程mysqlbinlog工具剖析写操纵的sql语句,经常使用于mysql经由过程binlog日记规复数据。
举例:
进进mysql的数据文件夹,如/var/lib/mysql/
cd/var/lib/mysql/
mysqlbinlog--start-datetime="2013-08-1400:00:00"--stop-datetime="2013-08-1423:59:59"mysql-bin.000098
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们! |
|