mysql_安装与配置_第1页
mysql_安装与配置_第2页
mysql_安装与配置_第3页
mysql_安装与配置_第4页
mysql_安装与配置_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Mysql数据库使用基础1. 安装参数说明:./configure -prefix=/web/mysql 指定安装目录-without-debug 去除debug模式-with-extra-charsets=gb2312 添加gb2312中文字符支持-with -charsets=默认中文字符支持-enable-assembler 使用一些字符函数的汇编版本-without-isam 去掉isam表类型支持 现在很少用了 isam表是一种依赖平台的表-without-innodb 去掉innodb表支持 innodb是一种支持事务处理的表,适合企业级应用-with-pthread 强制使用pt

2、hread库(posix线程库)-enable-thread-safe-client 以线程方式编译客户端-with-client-ldflags=-all-static -with-mysqld-ldflags=-all-static 以纯静态方式编译服务端和客户端-with-tcp-port=3306 端口号-with-mysqld-user=work 用户-with-unix-socket-path将MYSQL_UNIX_PORT环境变量设置为Unix套接字文件的路径 ,localhost的连接通常是通过UNIX域的套接字文件进行的,在Unix中,如果你在同一台机器上运行服务器和客户端,

3、连接到localhost。连接到的localhost的Unix连接使用Unix套接字文件而不是TCP/IP2. f配置文件说明mysqldport = 3306serverid = 1 socket = /tmp/mysql.sockskip-locking# 避免MySQL的外部锁定,减少出错几率增强稳定性。skip-name-resolve禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! back_log = 384指定MySQL可能的连

4、接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。 back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。 key_buffer_size = 256M# key_buffer_size指定用于索引的缓

5、冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低! max_allowed_packet = 4Mthread_stack = 256Ktable_cache = 128Ksort_buffer_size = 6M查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 6 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。 read_buffer_size = 4M读查询操作所能使用的缓冲区大小。

6、和sort_buffer_size一样,该参数对应的分配内存也是每连接独享! join_buffer_size = 8M联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享!myisam_sort_buffer_size = 64Mtable_cache = 512thread_cache_size = 64query_cache_size = 64M指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察: 代码:# SHOW VARIABLES LIKE %query_cache%;# SHOW STATUS LIK

7、E Qcache%;如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。 tmp_table_size = 256Mmax_connections = 768指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提 示,则需要增大该参数值。 max_connect_errors = 10000000wait_tim

8、eout = 10指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。 thread_concurrency = 8该参数取值为服务器逻辑CPU数量2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 2 8 skip-networking开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!3. phpMyAdmin解压phpMyAdmin-*.*.*.tar.gz到apache/htdocs中修改其下的config.inc.php文

9、件中如下内容$cfgServers1host=localhost;(系统默认主机名为localhost不需要修改)$cfgServers1user=数据库管理员名;$cfgServers1password=密码;$cfgServers1only_db=数据库(数据库管理员名_db);4. innodb和mysiam的区别InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供

10、事务支持已经外部键等高级数据库功能。MyIASM是IASM表的新版本,有如下扩展: 二进制层次的可移植性。 NULL列索引。 对变长行比ISAM表有更少的碎片。 支持大文件。 更好的索引压缩。 更好的键吗统计分布。 更好和更快的auto_increment处理。 以下是一些细节和具体实现的差别:1.InnoDB不支持FULLTEXT类型的索引。2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件

11、时,两种表的操作是一样的。3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会

12、锁全表,例如update table set num=1 where name like “%aaa%”任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。5. bin-log的作用使用mysqlbinlog命令查看binlog日志内容,binlog日志为二进制文件,运行过程中会产生 binlog.000001 以及 binlog.index,前面的文件是 mysqld 记录所有对数据的更新操作,后面的文件则是所有 binlog 的索引,都不能轻易删除。6. 索引普通索引:没有唯一性的限制 唯一性索引:索引列必须唯一主健:主键是一种唯一性索引,

13、但它必须指定为“PRIMARY KEY”。每个表只能有一个主键 全文索引:全文索引可以在VARCHAR或者TEXT类型的列上创建 索引的建立是需要磁盘空间的,并且当数据增加、更改、删除时,索引有可能会重建,这样会大幅度会降低数据维护效率7. 数据的导入导出BACK TABLE tbl_name TO /tmp/db_name/;RESTORE TABLE FROM /tmp/db_name/;不推荐使用,不拷贝索引文件,恢复慢SELECT INTO OUTFILE /tmp/db_name/tbl_name.txt FROM tbl_name;LOAD DATA INFILE /tmp/db_

14、name/tbl_name.txt INTO TABLE tbl_name;恢复前确认表已经存在Binlog恢复:./mysqlbinlog /tmp/binlog.000001 | mysql -uroot -p db_nameMysqldump常用方式-compatible=name 它告诉 mysqldump,导出的数据将和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、 no_tables_options、no_field_opti

15、ons 等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。 -complete-insert,-c 导出的数据采用包含字段名的完整 INSERT 方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。因此,需要谨慎使用该参数。 -default-character-set=charset 指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1 字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。 -disable-keys 告诉 mysqldump

16、在 INSERT 语句的开头和结尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。 -extended-insert = true|false 默认情况下,mysqldump 开启 -complete-insert 模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。 -hex-blob 使用十六进制格式导出二进制字符串字段。如果有二进

17、制数据就必须使用本选项。影响到的字段类型有 BINARY、VARBINARY、BLOB。 -lock-all-tables,-x 在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 -single-transaction 和 -lock-tables 选项。 -lock-tables 它和 -lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 -single-transaction 选项。 -no-create-info,-t 只导出数

18、据,而不添加 CREATE TABLE 语句。 -no-data,-d 不导出任何数据,只导出数据库表结构。 -opt 这只是一个快捷选项,等同于同时添加 -add-drop-tables -add-locking -create-option -disable-keys -extended-insert -lock-tables -quick -set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 -skip-opt 禁用。注意,如果运行 mysqldump 没有指定 -quick 或 -opt 选项,则会将整个结果

19、集放在内存中。如果导出大数据库的话可能会出现问题。 -quick,-q 该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。 -routines,-R 导出存储过程以及自定义函数。 -single-transaction 该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。本选项和 -lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用

20、-quick 选项。 -triggers 同时导出触发器。该选项默认启用,用 -skip-triggers 禁用它。 ./mysqldump -uroot -opt database db_name db_name.sql./mysql uroot p db_name db_name.sqlmysqlhotcopy它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。mysqlhotcopy 只能用于备份 MyISAM,并且只能运行在 类Unix 和 NetWare 系统上。8. mysql错误码含义1005:创建表失败1006:创

21、建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库文件失败1012:不能读取系统表中的记录1020:记录已被其他用户修改1021:硬盘剩余空间不足,请加大硬盘可用空间1022:关键字重复,更改记录失败1023:关闭时发生错误1024:读文件错误1025:更改名字时发生错误1026:写文件错误1032:记录不存在1036:数据表是只读的,不能对它进行修改1037:系统内存不足,请重启数据库或重启服务器1038:用于排序的内存不足,请增大排序缓冲区10

22、40:已到达数据库的最大连接数,请加大数据库可用连接数1041:系统内存不足1042:无效的主机名1043:无效连接1044:当前用户没有访问数据库的权限1045:不能连接数据库,用户名或密码错误1048:字段不能为空1049:数据库不存在1050:数据表已存在1051:数据表不存在1054:字段不存在1065:无效的SQL语句,SQL语句为空1081:不能建立Socket连接1114:数据表已满,不能容纳任何记录1116:打开的数据表太多1129:数据库出现异常,请重启数据库1130:连接数据库失败,没有连接数据库的权限1133:数据库用户不存在1141:当前用户无权访问数据库1142:当前

23、用户无权访问数据表1143:当前用户无权访问数据表中的字段1146:数据表不存在1147:未定义用户对数据表的访问权限1149:SQL语句语法错误1158:网络错误,出现读错误,请检查网络连接状况1159:网络错误,读超时,请检查网络连接状况1160:网络错误,出现写错误,请检查网络连接状况1161:网络错误,写超时,请检查网络连接状况1062:字段值重复,入库失败1169:字段值重复,更新记录失败1177:打开数据表失败1180:提交事务失败1181:回滚事务失败1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库1205:加锁超时1211:当前用户没有创建用户的权限1216:外键约束检查失败,更新子表记录失败1217:外键约束检查失败,删除或修改主表记录失败1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器1227:权限不足,您无权进行此操作1235:MySQL版本过低,不具有本功能9. mysql常见的一些有用的选项和命令mysqld -开启日志支持-log -log-update-log-long-formartmysqlgrant all on database.* to user identified by password 新建一u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论