MySQL金典培训
教程
人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程
MySQL的安装
本章要点:
· MySQL的安装布局
· 如何安装MySQL
· 如何为MySQL服务器设定参数
· 如何为一个MySQL安装升级
本章介绍MySQL安装和升级的知识。由于MySQL可以在多种平台上使用,并且即使在同一平台上,也存在多种不同的安装分发,因此,MySQL的安装存在多种
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
供你选择。
相对于其它的多数关系数据库系统,MySQL的安装并不复杂。本章将各种安装的说明详细记载一起,会为你安装系统提供方便。当然,还是建议你仔细阅读安装包中的说明,因为对于不同版本安装可能有的特殊性,本章无法兼顾和预期。另外,安装包中的文档相对也详尽。
MySQL在Linux上最为常用。Linux上提供各种RPM文件,可以非常方便的安装MySQL数据库系统。如果你喜欢编译源代码或者RPM分发无法在你的平台使用,你可以使用源代码安装,或者还有二进制分发可以采用。
2.1 MySQL系统的安装布局
在说明如何安装MySQL数据库系统之前,读者有必要首先了解一下MySQL的安装布局,这样才能有的放矢,更容易理解后面的叙述。这节描述安装二进制代码和源代码分发时创建的缺省目录布局。
2.1.1 二进制安装
二进制分发通过在你选择的安装地点(典型的“/usr/local/mysql”)解压缩来安装,并且在该处创建下列目录:
表2-1 二进制分发的安装布局
目录
目录的内容
Bin
客户程序和mysqld服务器
Data
日志文件, 数据库
include
包含(头)文件
Lib
库文件
scripts
mysql_install_db
share/mysql
错误消息文件
sql-bench
基准程序
2.1.2 RPM安装
rpm安装本质上也属于二进制分发,因此安装布局同上。不同之处在于它将自动安装启动脚本到/etc/rc.local目录中,并且缺省时,MySQL随系统的启动而自动启动,安装十分方便。
对于RPM分发程序、库文件、头文件和配置文件,分别安装Red Hat Linu标准的目录/usr/bin、/usr/lib/mysql、/usr/include/mysql和/etc/mysql等处。
需要特别注意的是数据库目录的位置,缺省时,/var/lib/mysql
2.1.3 源代码安装
源代码分发在你配置并编译后进行安装。缺省地,安装步骤将文件安装在“/usr/local”下的下列子目录:
表2-2 二源代码分发的安装布局
目录
目录的内容
bin
客户程序和脚本
include/mysql
包含(头)文件
Info
Info格式的文档
lib/mysql
库文件
libexec
mysqld服务器
share/mysql
错误消息文件
sql-bench
基准程序和crash-me测试
var
数据库和日志文件
在一个安装目录内,源代码安装的布局在下列方面不同于二进制安装:
· mysqld服务器被安装在“libexec”目录而不是“bin”目录内。
· 数据目录是“var”而非“data”。
· mysql_install_db被安装在“/usr/local/bin”目录而非“/usr/local/mysql/scripts”内。
· 头文件和库目录是“include/mysql”和“lib/mysql”而非“include”和“lib”。
2.1.4总结
本节介绍了MySQL系统的安装布局,对于源代码分发、二进制分发和RPM分发都做了阐述。阅读本章,有利于你对MySQL有一个清楚的概念,在下几节中,对于诸多繁琐的安装过程,就不再详述安装布局的内容,而是直接使用,读者应该不会感到突兀。
2.2 安装MySQL系统的分发
MyS
QL是一个复杂的系统,因此相对于其它普通软件的安装,其过程要复杂、困难一些,本节将指导您完成这一过程。
2.2.1 在Windows下的安装一个二进制分装
在windows下安装一个MySQL的二进制分发十分的容易。首先你必须通过前文所述的方法获得相应的软件包,其文件名应该类似于mysql-x.xx.xx-beta-win.zip或者mysql-x.xx.xx-win.zip。如果你下载的是共享版本,应该类似于mysq-shareware-x.xx.xx-win.zip。由于MySQL的windows版本必修付费使用,共享版本有少许功能限制,因此如果只是用来学习数据库的使用,建议安装测试版本。
安装MySQL首先在某个空目录解压缩安装文件,并且运行Setup.exe程序。
缺省地,MySQL-Win32被配置安装在“C:\mysql”。如果你想要在其它地方安装MySQL,在“C:\mysql”安装它,然后将安装移到你想要的地方。或者你也可以在安装时选择其它目录。如果你真的移走MySQL,你可能需要通过提供选项给mysqld告诉mysqld需要的参数信息,尤其是数据库目录的位置。
使用C:\mysql\bin\mysqld --help显示所有的参数选项的信息。例如,如果你移动MySQL分发到“D:\programs\mysql”,你可以用D:\programs\mysql\bin\mysqld --basedir D:\programs\mysql来启动mysqld。当然有时你不必这么做,服务器也可以正常运作,不过这是一个保险的方法。
用登记的MySQL版本,你也可以创建一个“C:\my.cnf”文件来保存用于MySQL服务器的任何缺省选项。拷贝文件“\mysql\my-example.cnf”到“C:\my.cnf”并且编辑它来适用于你的安装。注意你应该用"/"而不是"\"指定所有的路径。如果你使用“\”,你需要指定两次(“\\”),因为在MySQL中“\”是转义字符。
2.2.2 在Windows NT/2000下安装成系统服务
1、安装成系统服务的方法
对于NT,比较方便的方法是把MySQL安装成NT系统服务。如上小节的方法安装完毕后,为了以系统服务的方式服务器的名字是mysqld-nt:
C:\mysql\bin\mysqld-nt --install
你可以在 NT 上使用mysqld或mysqld-opt服务器,但是那些不能作为一种系统服务启动或使用命名管道。
你可以用下列命令启动和停止MySQL服务:
c:\>net start mysql
c:\>net stop mysql
2、安装选项文件
注意,如果你按照前述方法把MySQL安装成系统服务,在这种情况下,你不能对mysqld-nt使用任何其他选项! 所以如果MySQL没有安装在缺省的位置,那么MySQL不能正确定位数据库目录,将无法启动。
作为一个变通的办法,创建一个“C:\my.cnf”文件来保存用于MySQL服务器的任何缺省选项。拷贝文件“\mysql\my-example.cnf”到“C:\my.cnf”并且编辑它来适用于你的安装。无论什么情况都建议你安装这个选项文件。你需要注意的内容是basedir,作为一个非标准安装,这是必须提供的参数:
[mysqld]
basedir = x:/path/to/mysql/
注意你应该用"/"而不是"\"指定所有的路径。如果你使用“\”,你需要指定两次(“\\”),因为在MySQL中“\”是转义字符。
3、为服务器制定参数
当你独立使用mysqld守护程序时,你可以提供参数,例如,指定一个独立的数据库目录:
c:\mysql\bin>mysqld –datadir=”d:\data\”
如果你把MySQL安装成系统服务,那么你只能在全局选项文件c:\my.cnf中为服务器提供参数。
例如这样
[mysqld]
option1
option2=value
这样相当于用如下参数启动服务器:
c:\mysql\bin>mysqld –option1 –option2=value
4、可能出现的问题
服务用MySql名字被安装,一旦安装,它必须使用服务控制管理器(SCM)实用程序启动服务(在控制面板中的管理工具中找到)或使用NET START MySQL命令。如果需要任何选项,在你启动MySQL服务前必须作为SCM实用程序的“启动参数”指定它们。一旦运行,可使用mysqladmin或从SCM实用程序或使用命令NET STOP MySQL停止mysqld-nt。如果你使用SCM停止mysqld-nt,SCM有一条关于mysqld shutdown normally奇怪的消息,当作为一种服务运行时,mysqld-nt没有控制台的存取权限,所以没有消息可以看见。
在NT上你可以得到下列服务错误消息:
Permission Denied (权限拒绝) 意味着它不能找到mysqld-nt.exe
Cannot Register (不能登记) 意味着路径是不正确的
如果你作为一种服务安装mysqld-nt有问题,尝试用完整的路径启动它:
C:\mysql\bin\mysqld --install
如果你不想作为一种服务启动mysqld-nt,你可以如下启动它:
C:\mysql\bin\mysqld-nt --standalone
或C:\mysql\bin\mysqld-nt --standalone --debug
最新的版本在“C:\mysqld.trace”给你一个调试踪迹。
2.2.3 在Linux下安装一个RPM分发
在写这个部分的时候,我假设你已经对以下提及的有基本认识并拥有相应的环境:
· 懂基本的Unix命令、基本的HTML语言和SQL
· 一个工作正常TCP/IP网络
· 一个工作正常的Linux系统(将作为你安装软件的环境)
· 在Linux环境下编译程序所必须的一些软件包,名字应该类似于:
MySQL-3.22.21-1.i386.rpm中包含了用于i386机器的服务器程序。
MySQL-client-3.22.21-1.i386.rpm包含了用于i386机器的客户端程序。
MySQL-devel-3.22.21-1.i386.rpm包含了用于在i386机器上进行开发用的包含文件和库文件(一般也可以不安装)。
· 系统没有安装MySQL
在Linux下安装一个MySQL分发也不象想象的那么困难,因为现在大多数的发行版都将MySQL打包成rpm并且集成到系统中。如果在安装系统时没有安装MySQL,你必须成为root用户才能使用rpm安装程序,以下是安装过程:
$mount /dev/cdrom /mnt/cdrom
$cd /mnt/cdrom/Redhat/RPMS
$rpm –ihv MySQL*.rpm
rpm包的安装比较简单,因为所有的事情,Red Hat Linux都为你做好了,甚至包括如何启动,以及运行服务器的用户(该方法只在Red Hat Linux系统及其兼容的系统上测试成功,应该试用大多数支持rpm系统的Linux发行版)。
2.2.4 在Linux下安装二进制分发
相对于用RPM安装来讲,用二进制安装是稍微繁琐了点。但是我们可以在安装脚本中可以自定义安装的相关参数,而不用象rpm方式只能安装默认的来安装,具有更大的自由性。
1、安装二进制分发包
如果你下载的是二进制代码,它的名字类似于: mysql-3.22.21-pc-linux-gnu-i686.tar.gz。你必须成为root用户,然后解压到 /usr/local目录,操作步骤如下:
$ cd /usr/local
$ su
# tar -zxvf /tmp/mysql-3.22.21-pc-linux-gnu-i686.tar.gz
2、建立符号链接
在所有文件解压完后,一个名字叫mysql-3.22.21-pc-linux-gnu-i686的目录将被创建出来。我们为这个目录做个符号链接,并给它一个更友好的名字mysql (免得叫mysql-3.22.21-pc-linux-gnu-i686这么长):
# ln -s mysql-3.22.21-pc-linux-gnu-i686 mysql
如果以后有新版本的MySQL的话,你可以仅仅将源码解压到新的路径,然后只需要做个符号链接就可以了。这样非常方便,数据也更加安全。
2.2.5 在Linux下安装源代码分发
挑选一个你要在其下面解包分发的目录,并且进入该目录,这里假设为/tmp。获得MySQL一个分发文件。MySQL源代码分发以压缩的tar档案提供,并且有类似于“mysql-VERSION.tar.gz”的名字,这里的VERSION是一个类似3.23.7-alpha的数字。
1、在当前目录下解包分发:
# gunzip < mysql-VERSION.tar.gz | tar xvf –
or # tar zxvf < mysql-VERSION.tar.gz
这个命令创建名为“mysql-VERSION”的一个目录。
2、进入解包分发的顶级目录:
#cd mysql-VERSION
3、设置发行版本并且编译:
#./configure--prefix=/usr/local/mysql
#make
当你运行configure时,你可能想要指定一些选项,运行./configure --help得到一张选项表。如果configure失败,你将发送包含你认为能帮你解决该问题的“config.log”的邮件,如果configure异常退出,也要包括configure的最后几行输出。用mysqlbug脚本邮寄错误报告。
4、安装所有东西:
#make install
你可能需要root用户来运行这个命令。
2.2.6 总结
本节讲述MySQL安装过程的最初部分,只有你看完下面的各节,MySQL你才能了解MySQL的完整安装过程。对于Windows平台上的安装以及Linux上的RPM安装则比较特殊,本节之后就可以使用了。
源代码安装虽然麻烦,带可以提供更大的自由性和定制性,从而使你的数据库系统更具安全性。对于不被二进制分发或者RPM分发支持的平台,使用源代码安装是唯一的途径。
2.3 安装后期的的设置与测试
本节内容主要适用与在Unix系统上,所有内容都在Red Hat Linux系统上验证通过,应该也是用于其他Linux发行版。但是对于MySQL用户权限和密码等的安全问题,Windows平台上的分发,本节的有关说明也是适用的。对于Red Hat Linux平台上的RPM分发,这些过程已经由系统完成,你也只需注意MySQL的用户安全问题。
2.3.1建立启动MySQL的帐户
为了安全性,你应该避免使用root帐户启动MySQL守护程序,创建一个专门用于启动守护程序的帐户mysql,并且让数据库属于这个帐户。
1、建立帐户mysql
#adduser mysql
2、改变数据库目录的所有者
让我们将MySQL目录和文件的拥有权改成 mysql 用户和root组:
· 对于二进制分发的安装,根据前文所述的安装方法(以缺省位置为例):
# cd /usr/local
# chown -R mysql:root mysql mysql-3.22.21-pc-linux-gnu-i686
· 对于源码安装(以缺省位置为例):
# cd /usr/local
# chown -R mysql:root var
· 对于rpm包的安装,由于实现已经全部做好,就不必处理了。
3、修改mysql.server脚本或者全局选项文件,使守护程序以规定的用户运行
改变mysql.server脚本:(mysql.server可在MySQL安装目录下的“share/mysql”目录里找到,或在MySQL源代码树的“support-files”目录下找到。)
找到行mysql_daemon_user=root,把root改为你设定的用户mysql
或者修改选项文件/etc/my.cnf:
增加选项下述选项
[mysql.server]
user=mysql #add this line
basedir=/usr/local/mysql
2.3.2 初始化授权表
一旦你已经安装了MySQL(从一个二进制代码或源代码分发),你需要初始化授权表,因为此时MySQL权限系统需要的数据库和表并不存在。然后再,启动服务器并且保证服务器正确运行。你也可以希望安排服务器在你的系统开机和关机时自动地被启动和停止。
安装授权表之前,首先请切换到mysql帐户,这也是我们很少使用这一前面建立的帐户的机会。
· 通常,对从源代码分发的安装,你象这样安装授权表并启动服务器:
#su mysql
$cd BASEDIR(缺省为/usr/local/mysql)
$./scripts/mysql_install_db
· 对二进制分发,这样做:
#su mysql
$cd BASEDIR(缺省为/usr/local/mysql)
$./bin/mysql_install_db
· 对于rpm分发,这样做:
#su mysql
$mysql_install_db
对于Win32平台上的分发,由于安装后,授权表已经存在,故没有必要使用mysql_install_db,而且也不存在这个脚本。如果你需要初始化授权表,你可以删除数据库目录中的mysql目录,即删除mysql数据库,然后再运行setup.exe文件,即可初始化授权表。
典型地,mysql_install_db仅在你第一次安装MySQL时需要运行,因此,如果你正在升级现有的安装,你可以跳过这一步。(然而,mysql_install_db的使用相当安全,并且将不更新已经存在的任何表,因此如果你是不能肯定做什么,你总是可以运行mysql_install_db。) mysql_install_db在mysql数据库里创建6个表(user、db、host、tables_priv、columns_priv和func),初始权限的描述在第七章数据库安全中给出。简单地说,这些权限允许MySQL root用户做任何事情,并且允许任何人创建立或使用一个名字以'test'或'test_'开始的数据库。
如果你不设置权限表,当你启动服务器时,下列错误将在日志文件出现:
mysqld: Can't find file: 'host.frm'
2.3.3 测试服务器是否工作
1、象这样启动MySQL服务器
对于Unix下的分发 ,首先切换到mysql用户,否则如果第一次启动服务器是使用的是其他用户,那么收据库文件就为这个用户所有,之后再由用户mysql启动守护程序,就会因为数据库文件权限的问题得到一个错误。
当数据库安装完毕时,我们利用mysql.server脚本,将不必每次启动前切换到mysql用户。如果你再选项文件中指定的合适的选项,也可以不比切换到mysql用户。这一点,将在不久之后提到。
· 在Unix平台
$su mysql
$cd MYSQLD_DIR
$bin/safe_mysqld &
· 对于Win32平台的分发
c:\>cd MYSQLD_DIR
c:\>bin\mysqld –standalone
如果你安装成系统服务,也可以这样:
c:\>net start mysql
MYSQLD_DIR的值,在二进制分发中缺省为/usr/local/mysql,在源代码分发中缺省为/usr/local/libexec
2、使用mysqladmin证实服务器正在运行。
下列命令提供简单的测试来检查服务器启动和连接的应答:
$mysqladmin version
$mysqladmin variables
从mysqladmin version的输出根据你的平台和MySQL版本略有不同,但是应该类似如下显示:
$mysqladmin version
mysqladmin Ver 6.3 Distrib 3.22.9-beta, for pc-linux-gnu on i686
TCX Datakonsult AB, by Monty
Server version 3.22.9-beta
Protocol version 10
Connection Localhost via UNIX socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec
Running threads: 1 Questions: 20 Reloads: 2 Open tables: 3
为了能感受到,你能用mysqladmin做其他事情,用--help选项调用它,查看输出的帮助。
3、测试客户端连接
运行客户端程序:
# mysql
然后你可以看到屏幕显示出以下信息:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.22.21
Type 'help' for help.
mysql>
接着,用show databases命令可以将安装的数据库列出来:
mysql> show databases;
你就可以看到:
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
如果一切正常的话,那说明MySQL可以完全工作了!恭喜你!如果要退出程序,输入exit,显示结果应该类似于:
mysql> exit;
Bye
2.3.4 自动运行和停止MySQL
如果安装一个实用的数据库系统,那么让每次系统重新启动时数据库服务器自动运行是一个好主意。
一、我们现在可以由两种方法启动数据库:
1、 可以用safe_mysqld脚本来启动数据库:
$ safe_mysqld &
safe_mysqld脚本安装在MySQL安装目录的bin目录下,或可在MySQL源代码分发的scripts目录下找到。
2、mysql.server脚本可以被用来启动或停止服务器,通过用start或stop参数调用它:
$ mysql.server start
$mysql.server stop
mysql.server stop通过向服务器发出一个信号停止它。你可手工执行mysqladmin shutdown关闭服务器。
mysql.server可在MySQL二进制分发安装目录下的“share/mysql”目录里找到,或在MySQL源代码树的“support-files”目录下找到。
二、让服务器以指定的Unix用户执行
方法一:修改mysql.server脚本
当然,这样只对使用mysql.server脚本启动系统的方法其作用。
在mysql.server启动服务器之前,它把目录改变到MySQL安装目录,然后调用safe_mysqld。如果你有在一个非标准的地点安装的二进制分发,你可能需要编辑mysql.server。修改它,运行safe_mysqld前,cd到正确的目录。如果你想要作为一些特定的用户运行服务器,你可以改变mysql_daemon_user=root行使用其他用户,你也能修改mysql.server把其他选项传给safe_mysqld。
方法二:使用选项文件
通过使用选项文件,你也可以也可以避免修改mysql.server脚本。使用选项文件也可以使safe_mysqld脚本通过特定用户启动mysqld守护程序。
你也可以在一个全局“/etc/my.cnf”文件中增加mysql.server的选项。一个典型的“/etc/my.cnf”文件的一部分可能看起来像这样:
[mysql.server]
user=mysql
basedir=/usr/local/mysql
mysql.server脚本使用下列变量:user、datadir、basedir、bindir和pid-file。
当然这样只对mysql.server脚本起作用,可以把user选项加到[mysqld]段中,由于这两个脚本都调用mysqld守护程序,因此,这样可以从特定用户启动。
[mysqld]
user=mysql
basedir=/usr/local/mysql
mysqld守护程序接受的选项可以由命令mysqld –help查看。
说明,修改了mysql.server脚本或者选项文件后,你可能注意到我们没有提供用户的密码,所以如果你做了如上的修改,那么就不可以从普通帐户启动服务器,因为只有root用户才有切换到任意用户的权力。
三、让MySQL随系统启动而自动启动
当你开始使用MySQL作为生产应用时,你可能想要增加这些启动并且停止命令到在你的“/etc/rc * 文件中适当的地方。注意如果你修改mysql.server,那么如果某个时候你升级MySQL时,你的修改版本将被覆盖,因此你应该做一个你可重新安装的编辑过的版本的拷贝。
下面简述一下在Red Hat Linux系统中的设置方法:
1、修改mysql.server,把它复制到/etc/rc.d/init.d目录里面:
# cd /etc/rc.d/init.d
# cp /usr/local/mysql/support-files/mysql.server mysql
2、接着把它的属性改为“x”(executable,可执行)
# chmod +x mysql
3、最后,运行chkconfig把MySQL添加到你系统的启动服务组里面去。
# /sbin/chkconfig --del mysql
# /sbin/chkconfig --add mysql
说明
如果你的系统使用“/etc/rc.local”启动外部脚本,你也可以添加下列到其中:
二进制分发:
/bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld &'
源代码分发:
/bin/sh -c 'cd /usr/local/ ; ./bin/safe_mysqld &'
当然,作者更推荐使用mysqlv.server的方法,因为这样可以提供系统更好的整合性。
2.3.5 更改root用户的密码
初始化授权表之后,最重要的工作是更改数据库服务器root用户的密码,这对于数据库系统的安全性非常重要,因为root用户是数据库的主宰,拥有不受限制的权限,root用户的密码失窃,就意味着MySQL不再属于你了。
在一切正常后,要做的第一件事情是更改管理员的密码,初始化授权表之后,root用户是没有密码的,这对安全有毁灭性的影响。你可以运行mysqladmin (请注意,此命令不一定在你的path中,所以最好是转到此命令的目录中直接执行):
# mysqladmin -u root password ‘newpassword’
2.3.6 修改选项文件
自版本3.22 以来,MySQL 允许在一个选项文件中存储连接参数。然后在运行 mysql 时就不用重复键入这些参数了;仅当您曾经在命令行上键入过它们时可以使用。这些参数也可以为其他 MySQL 客户机所用,如为 mysqlimport 所用。这也表示在使用这些程序时,选项文件减少了键入工作。
1、选项文件的位置
· 在Unix上,MySQL从下列文件读取缺省选择:
表2-3 Unix平台MySQL选项文件的位置
文件名
用途
/etc/my.cnf
全局选项
DATADIR/my.cnf
服务器特定的选项目
~/.my.cnf
用户特定的选项
DATADIR是MySQL的数据目录(典型地对二进制安装是“/usr/local/mysql/data”或对源代码安装是“/usr/local/var”,RPM安装为/var/mysql)。注意:这是在配置时间指定的目录,不是mysqld启动时用--datadir指定的目录!(--datadir在服务器寻找选项文件的地方无效,因为它以前寻找他们,它处理任何命令行参数。)
· MySQL在Win32上从下列文件读取缺省选项:
表2-3 Win32平台MySQL选项文件的位置
文件名
用途
windows-system-directory\my.ini
C:\my.cnf
全局选项
DATADIR\my.cnf
服务器特定的选项
注意,在Win32上的选项文件中,你应用/而不是\指定所有的路径,如果你使用\,你需要指定两个,因为在MySQL里面\是转义字符。
2、选项文件的应用顺序
MySQL试图以上述表格所列的顺序读取选项文件。如果存在多个选项文件,在一个后面文件读取的选项优先于在先前读取的一个文件中指定的同一个选项,在命令行上指定的选项优先于在任何选项文件指定了的选项。有些选择能使用环境变量指定,在命令行或在选项文件指定的选项优先于环境变量。
3、支持选项文件的程序
下列程序支持选项文件:mysql、mysqladmin、mysqld、mysqldump、mysqlimport、mysql.server、myisamchk和myisampack。 这也意味着,在选项文件中,每个程序对应着[程序名]的部分。
你能使用选项文件指定一个程序支持的任意长的选项!用--help选项运行程序可得到的可用选项的表。
4、选项文件的格式合作用
一个选项文件可以包含下列形式的行:
#comment
注释行以“#”或“;”开始,空行被忽略。
[group]
group是你想为其设置选项的程序或组的名字。在一个组行后,任何option或set-variable行应用于命名的组,直到选择文件结束或其他组的给出。
option
这等价于在命令行上的--option。
option=value
这等价于在命令行上的--option=value。
set-variable = variable=value
这等价于在命令行上的--set-variable variable=value。该语法必须被用来设置一个mysqld变量。
client组允许你指定适用于所有MySQL客户的选项(不是mysqld)。这是理想的组来指定你用来与服务器连接的口令。(但是保证只是选项文件本身是可读的和可写的。)
注意,对域选项和值,所有头部和尾部空白自动被删除。你可以在的值串中使用转义顺序“\b”、“\t”、“\n”、“\r”、“\\”和“\s”(“\s”==空白)。
这是一个典型的全局选项文件:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
[mysqldump]
quick
这是典型的用户选项文件:
[client]
# The following password will be sent to all standard MySQL clients
password=my_password
[mysql]
no-auto-rehash
5、分发文件中,样品选项文件的位置
如果你有一个源代码分发,你将在“support-files”目录下找到一个名为“my-example.cnf”样品配置文件。如果你有二进制分发,在“DIR/share/mysql”目录下查找,在此DIR是MySQL安装目录的路径(一般是“/usr/local/mysql”)。你可以拷贝“my-example.cnf”到你的主目录(重新命名拷贝为“.my.cnf”)来试验。
为了告诉一个MySQL程序不读任何选项文件,在命令行上指定--no-defaults作为第一个选项。这必须是第一个选项,否则它将无效!如果你想检查使用哪个选项,你可以给出--print-defaults选项作为第一个选项。
如果你想要强制使用一个特定配置文件,你可以使用选项--defaults-file=full-path-to-default-file。如果你这样做,只有指定的文件将被读取。
开发者注意:选项文件的处理简单地通过处理所有在任何命令行前参数的匹配选项来实现(即,在适当的组里的选项),这对使用多次指定的一个选项的最后实例的程序工作的很好。如果你有这样一个处理多重指定选项但不读选项文件的旧程序, 你只需要增加2行给与它那种能力。检查任何标准的MySQL客户的源代码看怎样做。
2.3.7总结
MySQL的安装不是把程序拷贝到硬盘上就结束了,还需要考虑多方面的内容,尤其使安全性问题。本节对MySQL的后期安装过程做了详细的叙述:
· 初始化授权表
· 用特定用户启动守护程序
· 修改root用户的密码
· 让MySQL自动启动
2.4 系统的升级
因为各种各样的原因,你可能希望升级你的数据库系统。由于数据的原因,升级比新安装一个分发要来的困难的多。
2.4.1 备份数据库与其他配置文件
如果你偏执于或担心新版本,你总能重新命名的旧mysqld为类似于mysqld-'old-version-number'。那么如果你的新mysqld做一些意外的事情,你可以简单地关掉它并重启你的旧mysqld!
当你做一个升级时,当然你也应该备份你的旧数据库。有时有点偏执狂是好的!
你需要备份的内容有:
· 数据库目录
· 守护程序
· 配置文件,例如选项文件
2.4.2 重新安装二进制分发
如果你是严格按照前文提示的方法安装的方法安装MySQL的二进制分发,那么升级是非常容易的。甚至没有必要备份数据库,因为升级不会覆盖旧的数据
首先所作的无非是把安装过程重复一遍。
1、把分发包解压到目录/usr/local目录
2、恢复数据。旧分发的数据库目录,完全复制到新的服务器目录中。
3、重新把/usr/local/mysql链接到新的服务器目录。
4、启动测试服务器的升级。
2.4.3重新安装源代码分发
升级一个源代码分发要复杂一些。这里假定已经有一个按照
1、 移动并备份原来的安装,因为升级过程中会覆盖数据库文件和配置文件。
2、 将源代码包解压,编译,安装
#tar zxvf mysql-version.tar.gz
#cd mysql-version
#./config
#make
#make install
3、 把原来的数据库目录/usr/local/var/的内容恢复。
4、 启动测试新的安装
2.4.4 升级一个RPM分发
升级一个RPM包分发是最为简单的,原则上你不必备份什么。因为,RPM升级可以旧版本的配置文件,不兼容的文件也是换名保存,而不是简单覆盖。但是为了安全,你可能还是会小心的备份一些数据。
找到么升级的RPM包,例如MySQL-3.23-xx.i386.rpm。
和安装类似,只是使用-U选项代替-i选项:
%rpm -Uhv MySQL-3.23-xx.i386.rpm
2.4.5 检查数据库是否工作及完整
1、 如果备份了数据,可以把数据库目录完全替换掉新分发的数据库目录
2、 启动服务器
3、 使用客户机连接到数据库,检查数据是否安全迁移
4、 检查授权表是否正常
作为升级,和安装一个新的分发有一定的不同。由于已经在上次安装中完成了各种工作,因此安装后期的工作,即第三节的安装内容,可以省略。
2.4.6总结
本节对如何升级一个系统做了简单的介绍。这里只是介绍了升级的一般过程,对于一些特殊的情况,例如从3.22升级到3.23,表的格式有所变化,可能你还想转换表的格式。在这里,就不再详细叙述了。
对于不同的分发形式,升级的过程都不复杂,原则上要注意升级失败时,你可以恢复旧的系统,那么升级就不是一件危险的事情。
2.5在同一台机器上运行多个MySQL服务器
有些情况下你可能想要在同一台机器上运行多个服务器。例如,你可能想要测试一个新的MySQL版本而让你现有生产系统的设置不受到干扰,或你可能是想要为不同的客户提供独立的MySQL安装一个因特网服务供应商。同时运行多个服务器,对于升级系统有着很大的意义,因为你可以充分测试新的分发,再决定是否升级。
同时运行多个服务器最重要的工作是,让不同的服务器运行在不同的端口和套接字上。
2.5.1使用重新编译的方法
如果你想要运行多个服务器,最容易的方法是用不同的TCP/IP端口和套接字文件重新编译服务器,因此他们不是侦听同一个TCP/IP端口或套接字。
1、如何获知当前服务器使用的端口和套接字
你可以用这个命令检查由任何当前执行的MySQL所使用的套接字和端口:
shell> mysqladmin -h hostname --port=port_number variables
应该注意下面的输出内容:
+-------------------------+----------------------------------+
| Variable_name | Value |
+-------------------------+----------------------------------+
| ansi_mode | OFF |
| back_log | 50 |
| ... | ... |
| port | 3306 |
| ... | ... |
| socket | MySQL |
| ... | ... |
+-------------------------+----------------------------------+
你可以看到,缺省的情况下,端口是3306,套接字的名字是MySQL。
2、如何指定服务器参数
这里只叙述于标准安装不同之处,其余相同的部分不再重复,但是你同样需要完成。
假设一个现存服务器配置为缺省端口号和套接字文件,那么用一个这样的configure命令行设置新的服务器:
% ./configure --with-tcp-port=port_number \
--with-unix-socket=file_name \
--prefix=/usr/local/mysql-3.23.15
这里port_number和file_name应该不同于缺省端口号和套接字文件路径名,而且--prefix值应该指定一个不同于现存的MySQL安装所在的安装目录。
3、启动服务器
这时你可以直接使用safe_mysqld脚本了
%su mysql
$/path/to/safe_mysqld &
你也应该编辑你机器的初始化脚本(可能是“mysql.server”)来启动并杀死多个mysqld服务器。
2.5.2使用指定服务器参数的方法
你不必重新编译一个新MySQL服务器,只要以一个不同的端口和套接字启动即可。
例如,对于一个二进制分发,安装到一个目录后,你可以通过指定在运行时safe_mysqld使用的选项来改变端口和套接字:
# su mysql
$ /path/to/safe_mysqld --socket=file_name --port=port_number
如果你在与开启日志的另一个服务器相同的一个数据库目录下运行新服务器,你也应该用safe_mysqld的--log和--log-update选项来指定日志文件的名字,否则,两个服务器可能正在试图写入同一个日志文件。
警告:通常你决不应该有在同一个数据库中更新数据的2个服务器!如果你的OS不支持无故障(fault-free)的系统锁定,这可能导致令人惊讶的事情发生!
如果你想要为第二个服务器使用另一个数据库目录,你可以使用safe_mysqld的--datadir=path选项。
由于一般你需要再不同的数据库目录上运行服务器,因此通常最少的参数为:
# su mysql
$ /path/to/safe_mysqld --socket=file_name --port=port_number --datadir=path_name
2.5.3有关选项文件的问题
由于全局的选项文件/etc/my.cnf和用户的选项文件~/.my.cnf被多个服务器共享,因此在这两个文件中一般只保存内容被多个服务器所共享的选项。
对于个别服务器所使用的选项,请存储在服务器的选项文件中,其位置是DATADIR/my.cnf。当然你要最先在命令行中指定--datadir=DATADIR。
对于客户机连接,当你想要连接一个正在运行的使用一个不同于编译进你的客户程序中端口的MySQL服务器时,你可以使用下列方法之一:
· 以--host 'hostname' --port=port_numer或[--host localhost] --socket=file_name启动客户。
· 在你的C或Perl程序中,当连接MySQL服务器时,你可以给出端口和套接字参数。
· 在你启动客户程序之前,设置MYSQL_UNIX_PORT和MYSQL_TCP_PORT环境变量,指向Unix套接字和TCP/IP的端口。如果你通常使用一个特定的套接字或端口,你应该将设置这些环境变量的命令放进你的“.login”文件中。见12.1 不同的 MySQL程序概述。
· 在你的主目录下的“.my.cnf”文件中指定缺省套接字和TCP/IP端口。
2.5.4 总结
本章总结了同时运行多个服务器拷贝的方法,在实际问题中,这是很有用的,不尽对于测试新的分发,同时对备份数据库,保证数据安全也有十分重要的作用。最为一个管理员,掌握这种方法是十分必要的。
思考题
1、 请亲自安装一个MySQL分发,平台和分发包可以任意选择,要严格按照本章所介绍的方法。有可能的话,尽量在Linux平台上安装一个MySQL分发,因为这是MySQL应用最广泛的场所。
2、 安装一个MySQL分发,如何初始化授权表?之后如何更改root用户密码?
3、 将已知root@localhost用户的密码(例如,上题所更改)改变,假定原来的密码为oldpass,新的密码为newpass。使用实用程序mysqladmin。
4、 假定root用户密码为newpass,如何使用root用户连接服务器,并且发布下面的查询:
SELECT User,Host FROM mysql.user
5、 如何在选项文件中设定选项,提供mysql客户程序上题命令 行的参数
。
第2章
MySQL的安装
38
http://www.yurennet.com
39
http://www.yurennet.com
_1044017604.doc