MySQL源码包在Linux上安装和配置.doc

上传人:仙人指路1688 文档编号:2388060 上传时间:2023-02-17 格式:DOC 页数:30 大小:67KB
返回 下载 相关 举报
MySQL源码包在Linux上安装和配置.doc_第1页
第1页 / 共30页
MySQL源码包在Linux上安装和配置.doc_第2页
第2页 / 共30页
MySQL源码包在Linux上安装和配置.doc_第3页
第3页 / 共30页
MySQL源码包在Linux上安装和配置.doc_第4页
第4页 / 共30页
MySQL源码包在Linux上安装和配置.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《MySQL源码包在Linux上安装和配置.doc》由会员分享,可在线阅读,更多相关《MySQL源码包在Linux上安装和配置.doc(30页珍藏版)》请在三一办公上搜索。

1、1.1 MySQL简介MySQL服务概述 E=GM_w MySQL是当前开源数据库中最受欢迎SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。 :PK (X MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。 8m j gs 许可费用方面,MySQL的普及很大程度上源于它的宽松,除了略

2、显不寻常的许可费用。MySQL的价格随平台和安装方式变化。MySQL的Windows版本(NT和9X)在任何情况下都不免费,而任何Unix变种(包括Linux)的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方安装则必须付许可费。 d vrPv c!u7xSf) 1.2 MySQL服务安装与配置 Y%+m& 这里将以MySQL源码包在RedHat AS4上安装配置来进行讲解,在其他操作系统上的源码包安装都与此类似。 m1n5 UE 1.2.1 获取MySQL R5w lC1L 目前MySQL的最新稳定发行版本是5.0.33,可以在其官方下载地址 8m=/6 注意:要找到页

3、面最下方的源码包(Source downloads)Tarball (tar.gz) aN4h*aX 在这个页面我们还可以看到许多其他为特定操作系统版本编译好的MySQL安装包,可以针对特定操作系统无需安装直接运行。 IxDX2gA1x compat-gcc-32-c+-3.2.3-47.3 F4$m/ libgcc-3.4.3-9.EL4 Xdd gcc-3.4.3-9.EL4 53W b6 |-G3Ik 此外,还要防止操作系统原有的MySQL包对新安装的MySQL造成影响,因此不要让系统自带的MySQL影响到新安装的MySQL,首先要卸载系统自带的MySQL(注意:一般来说RedHat的发

4、行版中带的MySQL都不是最新版本)。我们可以通过以下步骤卸载系统自带的MySQL。 b+Q.uLK 1)rootas4 /# rpm -aq|grep mysql &pR$ z0yiTF rootas4 /# useradd mysql -d /opt/mysql-5.0. 33 N)fN.yz+ rootas4 /# chown -R mysql.mysql /opt/mysql-5.0. 33 /Fj4ftv= 数据目录用于存放MySQL的所有数据,而连接目录是存放MySQL运行时的socket文件 C!gv rootas4 /# su mysql 先切换到mysql用户 8mWwQ1_

5、 mysqlas4 $ mkdir ./data kdKA N3 mysqlas4 $ mkdir ./tmp A 8V= l_W|Mx 开始预编译 d60Rc_/ mysqlas4 $ ./configure -prefix=/opt/mysql-5.0.33 -localstatedir=/opt/mysql-5.0.33/data -with-unix-socket-path=/opt/mysql-5.0.33/tmp/mysql.sock -with-mysqld-user=mysql -enable-large-files -with-big-tables -with-charset

6、=utf8 -with-extra-charsets=latin1,latin2,latin5,latin7,gb2312,gbk #eV|P &? -prefix参数是指定mysql的安装目录 BlpU -localstatedir是指定mysql数据的存放目录 MfVh %rh;R -with-unix-socket-path是指定socket文件的存放路径 P2p P|- -with-mysqld-user是指定使用用户 o;82um0x 可以用configure help查看可以使用的所有参数 d nY!=Y 开始编译 UidPZz mysqlas4 $ make s-jI:I 此过程

7、相对来说会比较长,当然也跟机器的硬件配置有关 1 G uQ-cAsv 开始安装 :G Eir mysqlas4 $ make install djqN,6 此步骤完成后MySQL软件就安装到系统了,安装过程与Windows下的安装有些不同,由于是源码包安装,因此很多参数都是要手工设置的 &)|: $a hiLk3-hH 安装完的重要设置 MEddsJ2y 进行初始化数据操作 dGc_ssf mysqlas4$ ./scripts/mysql_install_db -datadir=/opt/mysql-5.0.33/data xCL!S+% 6;i%.- 此步骤创建2个系统初始数据库:mysq

8、l和test 7Q;jD% YN_J! !_ 1.3 管理MySQL 0 )jt1n0 在运行数据库系统时, MySQL的使用相当简单,且进行MySQL安装和使用所需的工作也很少。MySQL的简单性可能就是它极为普及的原因,尤其是在非程序员人群中的普及。当然,它对于训练有素的计算机专业人员也是有帮助的,但肯定不是对运行一个成功的MySQL安装程序的需求。 h)es=ryn7 如果有管理其他数据库系统的经验,将会发现:运行MySQL的安装程序在某些方面是类似的,您的经验也是用得着的。但是MySQL的管理有自己独特的需求,本书的这个部分将帮助您熟悉这些内容。 t/*G$,t; wFZ)1(O 管理

9、职责概述 lb9J4b6 mysqladmin,一个管理程序,允许执行诸如关闭服务器以及创建或删除数据库的工作。如果服务器运行不正常,还可以用mysqladmin 来检查服务器的状态。 CDcVu|M isamchk 和my i s a m c h k,这些实用程序帮助您完成表的分析和优化,以及在表损坏时进行崩溃恢复。 ZI$2$+ mysqldump,一个工具,用于备份数据库或将数据库拷贝到另一个服务器中。 k +_9FS 服务器的语言,SQL。有些管理职责只能用mysqladmin 的命令行实用程序来完成,但是,如果还能用服务器自己的语言来同服务器进行对话,那就更好了。没有任何替代品能够参

10、与并与服务器直接通信。可通过使用mysql客户机程序发布能够检验授权表的SQL 查询来做到这一点。如果MySQL版本还未引入GRANT 语句,则需要使用mysql首先设置每个用户的权限。 tjh48 如果不知道SQL 的任何内容,至少必须对SQL要有基本的了解。缺乏对SQL 的熟悉只会带来困惑,而在学习SQL 上所花费的时间将会得到成倍的回报。真正掌握SQL 要花费一些时间,但掌握基本技能则很快。 wFRzg9 MySQL数据目录。数据目录是服务器存储其数据库和状态文件的所在。了解数据目录的结构及内容是很重要的,您可以知道服务器是怎样使用文件系统来表现数据库和表的,以及像日志这样的文件的存放位

11、置和其内容。还应该了解在文件系统中管理磁盘空间分配的选项,当发现放置数据目录的文件系统过满时可以进行调整。 ,_KyJI GjdGx 常规管理 bUnx5 ;U/kT93 服务器的启动和关闭。应该能够从命令行中手工启动和终止服务器,并且在系统启动和关闭时知道怎样进行自动启动和关闭。如果服务器崩溃了或启动不正常的话,了解怎样使服务器再次运行也是重要的。 ubFg&6 - 用户账号维护。应该了解MySQL用户和UNIX 或Windows 用户之间的区别。应该知道怎样通过指定哪些用户可以连接到服务器和从哪里进行连接来建立MySQL用户账号。还应该给新的用户建议合适的连接参数,以使他们成功地连接到服务

12、器。弄清应怎样建立账号不是用户们的工作。 +w.Ls 日志文件维护。应该了解可以维护的日志文件的类型,以及在何时和怎样完成日志文件的维护。日志的循环和终止对于防止日志填满文件系统是必要的。 sMUz8UR 数据库备份和拷贝。数据库备份对服务器系统的崩溃是至关重要的。应该能够将数据库恢复到崩溃时的状态,以便尽可能地减少数据的丢失。请注意,数据库备份与常规的系统备份不同,例如,可通过使用UNIX 的dump 程序来进行。与数据库表相对应的文件在系统备份发生时随服务器活动而变化,因此恢复那些文件将使您的表内部不一致。mysqldump 程序将产生对恢复数据库更有用的备份文件,并允许在不关闭服务器的状

13、态下创建备份。 , +47 如果决定在更快的主机上运行数据库,或者想复制数据库,则需要拷贝其内容到另一台机器上。如果需要的话,应该了解进行这项操作的过程。数据库文件是依赖于系统的,因此您不能只拷贝这些文件。 MJ-! 服务器优化。用户想要服务器以最佳状态运行。提高服务器运行性能的最简单方法是购买更多的内存或使磁盘速度更快。但是,这种直截了当的技术并不能代替对服务器工作的了解。应该了解优化服务器操作所用的参数以及如何将这些参数应用在您的环境中。在某些站点中,大多数查询都是检索。而在另一些站点,插入和更新操作占据着优势。选择对哪些参数进行修改将受到站点查询的影响。 8 ywbr1 多服务器。在某些

14、环境中运行多服务器是有用的。如果保留当前的成品安装程序在适当的位置,或者为不同的用户组提供较好的保密性(后者与ISP 尤其相关),则可以测试新的MySQL版本。对于这些情形,您应该了解怎样建立多个同时发生的安装。 :( :8$ MySQL更新。由于新的MySQL版本频繁出现,应该知道怎样始终跟上这些版本以便利用故障修复和新的特性。需要了解不进行版本升级的理由,并且掌握怎样在稳定版本和开发者版本之间进行选择。 9fpKr#hP mysqlas4 $ mysqladmin shutdown -u root p lSIX|2 -u 是指定用户 IcBEfMf -p 是指定密码 !Sh|=.%X FD

15、KRx 在本机命令行下进入MySQL 6DxhO/+d mysqlas4 $ mysql b/1,& xY Welcome to the MySQL monitor. Commands end with ; or g. LTn0t4f Your MySQL connection id is 2 to server version: 5.0.33 ZS$rS: Type help; or h for help. Type c to clear the buffer. $(/Q=fzv mysql AoVs u- 1.3.3 MySQL用户管理 _ZbR5b MySQL安装好后默认的管理员帐号也是

16、root(与OS的帐号名一样),而密码是空,但是只能从本机访问,该默认帐号可以被删除和修改。 A&23 *8|ej4 一、新增MySQL用户 9p|W 格式:grant select on 数据库.* to 用户名登录主机 identified by 密码 = 0Wo 例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令: w, V;6lX grant select,insert,update,delete on *.* to test1% Identified by abc; U

17、bJ/ou 但例1增加的用户是十分危险的,如果某人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录这台mysql数据库并对数据可以为所欲为了,解决办法见例1。 UyqT O 例1、增加一个用户test2密码为abc,使其只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,也无法从internet上直接访问数据库,只能通过MySQL主机上的web页来访问了。 4r5O! 4y grant select,insert,update,d

18、elete on mydb.* to test2localhost identified by abc; KbE=* r( 如果你不想test2有密码,可以再打一个命令将密码消掉。 o(V4f,TYjB grant select,insert,update,delete on mydb.* to test2localhost identified by ; DmM/t)4 二、修改MySQL用户的方法,这里讲两种方法 pz?7QmW 1) 以root登陆后直接用SQL语句修改系统库mysql中的user表 0A= mysql use mysql; (选择系统数据库) A$uq S mysql

19、update user set password=password(654321) where user=root (将root用户的密码改成654321,注意要加函数password(),因为mysql中密码是采用MD5算法进行加密的,如果不用该函数密码将以明文存储,这样在登陆的时候系统把654321用MD5算法一计算后就跟表user中存出的654321密码不一致了,这样你就登陆不了了) +GLt!.60 mysql flush privileges; (提交你的修改请求) T/w;4sSi/Z KI,f,9xuX 2) 直接在bash shell命令行下用mysqladmin这个命令修改

20、aJ6II mysqlas4 mysql$ mysqladmin -u root -p654321 password 123456 OG$fmZ%|D& (将来root用户的密码从654321修改为123456) =*p#FM ZQVw&+2 J|Qxva 添加一个远程管理MySQL的用户 Um ?_wT# mysqlas4 $ mysql c$ grant all privileges on *.* to mysql192.168.0.0/255.255.0.0 identified by mysql; bzshT);Ns mysql q Q9FUQ64 以上命令可以添加一个可以从192.1

21、68.0.0/16IP段访问MySQL服务器上所有数据库的用户,其中帐号是mysql,口令是mysql KQs:Y.S rakT Dg 三、常用命令行操作 d( $Ruy 1 显示命令 Q=Yk!R%Li 1)显示数据库列表。 0me6:YiK show databases; G;&6jUH: 刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 /QgJWcnOm 2)显示库中的数据表: *l1 _v!P use mysql; /打开库,学过FOXBASE的一定不会陌生吧 |nv) show table

22、s; uv? -O( 3)显示数据表的结构: &o&LbC)m describe 表名; L j7MrOa 4)显示表中的记录: Bq1B.L2?7 select * from 表名; I7YfxKch 2 创建/删除命令 s9Nm16 1) 建库: $0H,3,k create database 库名; IM?=g 2) 建表: q$&j#g use 库名; IG6P.m6 create table 表名 (字段设定列表); +Z!0oi 3) 删库和删表: ?INZ)PF6& drop database 库名; 4Bqkv drop table 表名; W 9bUu0 4) 将表中记录清空

23、: n$,$Xg1jq delete from 表名; dtn insert into storybook values(,MySQL数据库优化,李四,2006-12-15); x(jrWRZ insert into storybook values(,精通PostgreSQL数据库,王五,2006-09-11); dEDn5Sc TJ|+R 注:在建表中 E Q|J1K (1)将id设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key EfI= kYE (2)将name设为长度为10的字符

24、字段 7h00Beg (3)将author设为长度50的字符字段,而且缺省值为张三。varchar和char有什么区别呢,简单说,varchar是不固定长度的字符串,char是固定长度的字符串。 0SU (4)将public_date设为日期字段。 3?jpd* 如果在mysql提示符键入上面的命令也可以,但不方便调试。可以将以上命令原样写入一个文本文件中假设为book.sql,然后复制到/tmp下,并在命令行状态进入目录mysql/bin,然后键入以下命令: +g?BJB mysql u root -p密码 /tmp/book.sql Z6W 如果成功,空出一行无任何显示;如有错误,会有提示

25、。 Z/DF*f T FCy,w 4 将文本数据转到数据库中 EDbj$L 1) 文本数据应符合的格式:字段数据之间用tab键隔开,null值用n来代替. M*4|i 例: (G31j(mA5 5 Linux基础教程 王五 2006-12-21 3 .Z=AD 6 Linux中级教材 张三 2006-12-11 k6ugN$W-z 2) 数据传入命令 |WXBG/ use book; 9 (!JJ;y SELECT * FROM storybook INTO OUTFILE /tmp/myfile_name; $2%4 Qu# 恢复的方法: 790|73Z USE book; uZ+qAw&

26、LOAD DATA INFILE /tmp/myfile_name INTO TABLE book; .eG8LD1 K 注:该导出/导入方法仅仅是操作表中的数据,并且导出表的导入表的字段个数和类型必须完全一样。 JmN,N/ 5T+ Dn, 四、导出/导入数据 |!y771 除了用mysqldump来导出MySQL数据,还可以用 SQL 语法进行备份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用。In

27、nodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,开源的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。 qx#GV4B 1) 导出 VFX ;tU mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。 gVznFL2y 现在来讲一下 mysqldump 的一些主要参数: ;t|Kw-n -compatible=name ;:f)o=u 它告诉 mysqldump,导出的数据将和哪种数据库或

28、哪个旧版本的 MySQL 服务器相兼容。值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。 Pe vt% p g -complete-insert,-c kl | 导出的数据采用包含字段名的完整 INSERT 方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。因

29、此,需要谨慎使用该参数,至少我不推荐。 3 告诉 mysqldump 在 INSERT 语句的开头和结尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。 8KZ c _HU1R2+kb -extended-insert = true|false !tU$Ly7 默认情况下,mysqldump 开启 -complete-insert 模式,因此不想用它的的话

30、,就使用本选项,设定它的值为 false 即可。 Bi Z*l bt2Z( , -hex-blob ?DMe 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 BINARY、VARBINARY、BLOB。 !0 x5$lp e;j Id -lock-all-tables,-x GZsO!OoT# 在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 -single-transaction 和 -lock-tables 选项。 *sSFvHT (v7c| -lock-tables 22qdkd3 它和 -l

31、ock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 -single-transaction 选项。 Vk*q& *?# y. -no-create-info,-t T!;+0 只导出数据,而不添加 CREATE TABLE 语句。 hYi+GwC T#:aK4X% -no-data,-d e)gAptL 不导出任何数据,只导出数据库表结构。 Xz0JVeaQ =) n;nm -opt Fk.I 这只是一个快捷选项,等同于同时添加 -add-drop-tables -add-locking

32、 -create-option -disable-keys -extended-insert -lock-tables -quick -set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 -skip-opt 禁用。注意,如果运行 mysqldump 没有指定 -quick 或 -opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。 4SNI(g Rv N -quick,-q SDW!. 该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它

33、们缓存到内存中。 aNb?d lGl#7 -routines,-R isU c5 导出存储过程以及自定义函数。 Vc2Vyab Sw %CT! -single-transaction WTxuJDh = 该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。 SrTAT+U*ec 本选项和 -lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。 GR?jd: 要想导出大表的话,应结合使用 -quick 选项。 sHQ_I79HW !_f

34、Ax8l -triggers -R -hex-blob -x db_name db_name.sql +/F;d 使用以下 SQL 来备份 Innodb 表: V:oe?/X8 #gI,bNMt /usr/local/mysql/bin/mysqldump -uyejr -pyejr W&ANd_ -default-character-set=utf8 -opt -extended-insert=false #gs|k,yJ -triggers -R -hex-blob -single-transaction db_name db_name.sql M wP 另外,如果想要实现在线备份,还可以

35、使用 -master-data 参数来实现,如下: ;3-)Kn:y HkWP%a /usr/local/mysql/bin/mysqldump -umyuser -pmypasswd 3bE#|w, -default-character-set=utf8 -opt -master-data=1 gj* -single-transaction -flush-logs db_name db_name.sql ih& 它只是在一开始的瞬间请求锁表,然后就刷新binlog了,而后在导出的文件中加入CHANGE MASTER 语句来指定当前备份的binlog位置,如果要把这个文件恢复到slave里去,

36、就可以采用这种方法来做。 +/WhP Z *x=PD% 2)导入 | ,.5%D 用mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。 tGi4Gl 直接用 mysql 客户端 ?sAjF3) 例如: =Lb/w m /usr/local/mysql/bin/mysql -umyuser -pmypasswd db_name db_name.sql ;p )Si4 LIn3 用 SOURCE 语法 k I,w* 其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如: gtF 3)SQL 语法备份 c;oNTvM_ (1)备份 Hifgg,EGW BACKUP TABLE 语法其实和 mysqlhotcopy 的工作原理差不多,都是锁表,然后拷贝数据文件。它能实现在线备份,但是效果不理想,因此不推荐使用。它只拷贝表结构文件和数据文件,不同时拷贝索引文件,因此恢复时比较慢。 4s1lnU 例子: B23zd(6 j;6X3uz BACK TABLE tbl_name TO /tmp/db_name/;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号