mySQL安装

首次开启服务

这部分的信息主要应用在使用Noinstall版本安装MySQL时,或者希望手动而不是使用GUI工具配置和检测MySQL 的情况下。在Windows 95, 98, or Me下,MySQL客户端经常和使用TCP/IP的服务器相连接。(这允许在你网络上的任意机器 可以和MySQL服务器连接)。基于这一点,你必须保证在启动MySQL前,TCP/IP 支持安装在你的机器上。你可以 到在你Windows CD-ROM中找到TCP/IP服务。 在这里需要注意的是如果你正在使用老的Windows 95发布版本(例如OSR2),那很有可能你在使用一个旧的 Winsock软件包;MySQL需要的是Winsock 2。你可以从http://www.microsoft.com/.下载最新的Winsock软件包 。Windows 98具有新的Winsock 2库,所以无需更新库。在基于NT的系统例如 Windows NT, 2000, XP, or 2003上,客户可以有两个选择。他们可以使用TCP/IP或者当 服务器支持命名管道的连接时使用命名管道。为了得到在TCP/IP下工作的Mysql版本,你必须安装service pack 3(或者更新的版本) 如果在启动时,选择 --shared-memory, Windows版本的MySQL 5.0同样也支持共享内存的连接。客户端可以选 择 --protocol=memory 选项来进行共享内存的连接。

以上对启动MySQL服务进行了总体概述,下面的内容提供了从命令行或者作为Windwos服务来启动MySQL服务器更 加具体的信息:

假设MySQL安装在默认位置C:/Program Files/MySQL/MySQL Server 5.0下。如果你把MySQL安装在不同的位置上 ,则需调整相应的路径名。测试工作可以从控制台窗体(或者通过“DOS window”)通过一个即时命令来完成。 这样你就可以会在窗体中比较容易的看到服务器状态信息。如果你的配置有误时,这些信息将有助于你识别和 修复任何故障。为了开启服务,输入以下命令:
C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqld --console
对于InnoDB支持的服务器,在服务启动时你可以看到下列信息:
InnoDB: The first specified datafile c:/ibdata/ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:/ibdata/ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:/iblogs/ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:/iblogs/ib_logfile0 size to 31457280
InnoDB: Log file c:/iblogs/ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:/iblogs/ib_logfile1 size to 31457280
InnoDB: Log file c:/iblogs/ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:/iblogs/ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25  InnoDB: Started
当服务器完成启动序列后,你可以看到如下信息,这些信息表明服务器已经开始服务客户端连接:
mysqld: ready for connections
Version: '5.0.13-rc'  socket: ''  port: 3306
服务器将会继续将其所产成的判断信息输入到控制台上。而你则可以打开一个新的控制台来运行客户端程序。如果你省略了 --console 选项,服务器将会把诊断信息输出到 数据目录下的错误日志中(默认是C:/Program Files/MySQL/MySQL Server 5.0/data )。错误日志以.err为扩展名。注意:在MySQL授权数据表的帐号初始化是没有密码的。

在Windows命令行下开启MySQL服务

MySQL服务器可以手动从命令行启动。该项操作可以在Windows的任何版本下完成。为了从命令行启动mysqld服 务,你应该启动一个控制台窗体(或者"DOS 窗体")同时输入以下命令:

C:/> C:/Program Files/MySQL/MySQL Server 4.1/bin/mysqld

在上述例子中使用的路径可以根据你的系统安装MySQL的路径不同而改变。在非NT版本的Windows版本上, mysqld是在后台启动的。这也就意味着在服务启动之后,你查看另外的即时命令。基于这一点,你应该在服务 运行时打开另外一个控制窗体来运行客户端程序。

你可以通过执行以下命令停止MySQL服务:

C:/> C:/Program Files/MySQL/MySQL Server 4.1/bin/mysqladmin -u root shutdown

该命令激活MySQL管理程序和服务器连接同时告诉他关闭服务。该名令是作为MySQL根用户连接的,在Mysql权限 系统中,根用户默认是管理员帐户。注意在MySQL授权系统中的用户和任意在Windows下登陆的用户是完全独立 的。如果mysqld没有启动,检查错误日志文件查看是否服务器向其中写入了信息,该信息说明问题产生的原因。错 误日志位于C:/Program Files/MySQL/MySQL Server 5.0/data 目录下。该日志是以扩展名为.err的文件。你也 可以试着重新开启mysqld 控制台服务,这样你就有可能获取一些有助于解决问题的信息。最后一个选项是开启mysqld时选择--standalone --debug。在这种情况下,mysqld 将会写一个 C:/mysqld.trace的日志文件,该日志文件将会包含mysqld为何没有启动的原因。

使用mysqld --verbose --help 可以看到mysqld所提供的所有选项的帮助信息。

作为一项Windows服务开启MySQL

在NT系列的Windows版本(Windows NT, 2000, XP, 2003)中,推荐运行MySQL服务的方法是将其作为Windows服务 进行安装,在这种情况下MySQL随着Windows开始和结束自动开始和结束。一个作为服务被安装的MySQL服务器能 够被从命令行上使用NET命令或者使用图形界面服务程序所控制。服务程序(Windows 服务控制管理器)可以被在 Windows控制面板中找到(在Windows 2000, XP, and Server 2003的管理工具下)。建议在执行服务器安装程序 时或者在命令行中执行删除操作时关闭服务应用程序。这将会防止很多错误。在将MySQL作为Windows服务安装之前,如果当前服务器正在运行,应该首先使用下述命令停止其的运行:

C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqladmin -u root shutdown

注意:如果MySQL根用户有密码,那么你需要这样激活命令:

C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqladmin -u root -p shutdown ,同时必须根据提示输入 用户密码。

这调用了MySQL的管理功能mysqladmin,mysqladmin可以连接到服务器,让服务器关闭。这个命令是作为MySQL 的 root用户而和服务器建立连接的,MySQL的 root用户在MySQL授权系统中是默认管理帐户。需要注意的是在 MySQL授权系统中的用户是完全独立于Windows上登录用户。

用下列命令可将服务器作用一项服务安装:

C:/> mysqld –install

如果你用server名字在将服务器安装成一项服务的过程中遇到问题, 那就试试用全称路径名。举例来说:

C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqld --install

你也可以将到mysql bin目录的路径加入到Windows 系统PATH 环境变量:

? 在Windows桌面上,右击“我的电脑”,选择“属性” ? 出现系统属性菜单,选择“高级”,然后单击“环境变量”按钮。? 在“系统变量”列表中选择“路径”,然后单击“编辑”按钮。这时会出现编辑系统变量对话框。 ? 将光标放在“变量值”对应的文字的末尾(请使用 End key,以确保光标在最后的位置) 。然后输入 MySQL bin 目录的全称路径, (举个例子, C:/Program Files/MySQL/MySQL Server 5.0/bin), 注意应该用分 号将这个路径与其它值分开。 点击“确定”逐个关闭所有打开的对话框。现在你就可以在DOS系统下从系统的 任意目录中,通过输入任意可执行的 MySQL 程序的名字而找到该程序,不必再输入路径。这包括服务器、 mysql 客户和所有 MySQL 命令行比如 mysqladmin 和 mysqldump。 ? 注意如果你在同一台机器上运行多个MySQL 服务器的话,就不要将MySQL bin 目录加入到 Windows 路 径中。

警告: 在手工编辑系统路径的时候一定要特别小心,如果不小心删除或改变了系统路径中的任何部分都将导致 误操作甚至导致系统不稳定。服务安装命令并不启动服务器,关于这点后面将详细介绍。

MySQL 5.0 在安装服务的过程中对附加参数提供的支持有限:? 你可以在安装选项之后立即为服务命名,否则默认的服务名字是 MySQL。

? 如果设置了一个服务名字,就可以用使用单一选项。通常按照约定,这应当是--defaults- file=file_name 来设置选项文件的名字,服务器在启动时会从选项文件中读取选项。可以使用单一选项而不用--defaults-file,但不推荐这样做。因为,--defaults-file 更加灵活,你可以 通过将多个选项放到指定的选项文件中而为服务器设置多个启动选项。同样,在MySQL 5.0中我们也不支持使用 不同于--defaults-file的选项,但5.0.3版本就可以这样做了。

? 对于MySQL 5.0.1,你也可以在服务名字下设置一个 --local-service(本地服务)选项。这会使服务 器用LocalService Windows帐户运行。这种帐户只在Windows XP或更新的系统上才有。如果服务名字下既有-- defaults-file 也有 --local-service,那么它们之间不论次序。 对于安装成Windows服务的MySQL服务器来说,由下面的规则决定服务名字和服务器使用的选项文件: ? 如果服务安装命令没有指定服务名字,那么安装选项将默认服务名字为MySQL, 服务器将使用 MySQL服 务,并从标准选项文件中的 [mysqld]群中读取选择。 ? 如果服务安装命令没有指定了一个服务名字,服务器将使用指定的服务名字并从从标准选项文件中与 服务名字相同的群中读取选项。 服务器也从标准文件选项文件中的[mysqld]群中读取选项。这保证可以从[mysqld]群中读取所有MySQL服务都 用的选项,而用指定服务名字按照的服务器使用和与指定服务名字相同的选项群。 ? 如果安装命令在服务名字之后指定一个 --defaults-file 选项,那么服务器只从指定文件的 [mysqld] 群中读取选项而忽略标准选项文件。

下面的命令是一个复杂的例子:

C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqld --install MySQL --defaults-file=C:/my- opts.cnf

在这里,由安装选项给出了默认服务名字MySQL。如果没有给出--defaults-file选项,那么这个命令将使服务 器从标准选项文件中的[mysqld]群中读取。然而在这里给出了--defaults-file选项,所以服务器只从指定文件 的[mysqld] 选项群读取。

你也可以在启动MySQL服务之前,在Windows Services 工具栏中将选项定义为启动参数。一旦MySQL服务器被安装成一项服务,Windows就会在启动时自动启动该服务。也可以在Services 工具栏中直接 启动MySQL服务器,或使用NET START MySQL命令也可。NET 命令不区分大小写。

作为服务运行时,mysqld无权使用控制窗口,因此在这里看不到消息。如果mysqld不能启动,就查错误记录看 看服务器是不是写下了什么说明问题原因的消息。错误记录在MySQL数据目录下(比如: C:/Program Files/MySQL/MySQL Server 5.0/data)。错误记录的后缀名是 .err。

MySQL作为服务安装的情况下,如果服务正在运行,Windows关闭的时候会自动停止服务。 如果你不想在boot 进程中自动启动服务,你可以将服务器作为手动服务安装。手动服务的安装需要选择“手动 安装” 选项而不是 “安装”选项:

C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqld --install-manual

要删除作为服务安装的服务器时,首先要通过NET STOP MYSQL关闭正在运行的MYSQL,然后用“删除”选项删除 它:

C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqld --remove 如果mysqld不是作为服务运行,可以用命令行启动它。
五、测试 MySQL安装

你可以通过执行下列任何一个命令来测试MySQL 服务器是否安装:

C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqlshow
C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqlshow -u root mysql
C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqladmin version status proc
C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysql test
如果mysqld对来自客户程序的TCP/IP 连接反应很慢,那么说明你的DNS可能有问题。在这种情况下,用--skip -name-resolve选项启动mysqld,而且在MySQL 授权列表的Host栏中只使用本地Host和IP。 你可以强迫 MySQL客户运用管理连接,而不用TCP/IP。方法是选定--pipe 或--protocol=PIPE 按钮,或指定 . (period)作为主机名。运行--socket 选项来规定管道名。

九、排除在Windows下安装MySQL的故障

如果是初次安装MySQL,你可能会遇到一些阻止MySQL启动的错误,这一部分的目的就是帮助你诊断和排除某些 故障。 在排查故障时,可用的第一项资源就是错误记录。MySQL 服务器的错误记录会记下阻止服务器启动的相关错误 。错误记录在数据目录下,my.ini文件中记载了数据目录的地址。默认的文件目录位置是C:/Program Files/MySQL/MySQL Server 5.0/data。 另外在MySQL服务运行过程中的控制信息也可能会记载一些相关的错误。在mysqld作为服务安装之后,从命令行 中执行NET START mysql命令查看是否有关于作为服务启动MySQL服务器的错误信息。

下面的例子是一些首次安装MySQL和启动服务器的过程中,可能遇到的常见错误信息:
?System error 1067 has occurred.
?Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist? 当 MySQL 服务器找不到 mysql privileges database 或其它关键文件时,就会产生这样的信息。当 MySQL的原始数据或数据目录安装在不同于默认位置(分别是C:/mysql 和 C:/Program Files/MySQL/MySQL Server 5.0/data )时,常常遇到这个问题。 一种情况是MySQL已升级并安装到新的位置,但配置文件并没有反映新的安装位置。另外 ,可能会产生相互冲 突的新、旧配置文件。因此,在升级MySQL时,应确保删除旧的配置文件或重命名。 如果你将MySQL安装到了C:/Program Files/MySQL/MySQL Server 5.0以外的其它位置,你必须确保MySQL服务器 通过一个配置文件(my.ini) 知道安装的位置。my.ini文件必须在Windows目录下,通常是C:/WINNT 或 C:/WINDOWS。你可以从WINDIR环境变量的值来确定其具体位置,需要从命令提示符发出下列命令:

C:/> echo %WINDIR%

生成一个选项文件,并且可以用任何文本编辑程序修改,比如Notepad。举例来说,如果MySQL安装在E:/mysql 、数据目录是D:/MySQLdata,你可以创建一个选项文件,在其中创建一个[mysqld]部分来定义basedir 和 datadir参数:
[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=D:/MySQLdata
注意在选项文件中,Windows 路径名是用(forward) slashes 定义的,而不是用 backslashes。如果你使用的 是 backslashes,你就需要将它们加倍:
[mysqld]
# set basedir to your installation path
basedir=C://Program Files//MySQL//MySQL Server 5.0
# set datadir to the location of your data directory
datadir=D://MySQLdata
如果你在MySQL配置文件改变了datadir值,那么你在重新启动MySQL服务器之前就必须将已有的MySQL数据目录 转移到相应的位置。

? Error: Cannot create Windows service for MySql. Error: 0

? 如果你不先停止并删除现有的MySQL而重新安装或升级时,或用MySQL Configuration Wizard安装 MySQL时,就会产生这样的错误。因为当Configuration Wizard试图安装服务时,就会发现已经有一个同名的服 务。 对这个问题的一个解决方法是,在使用configuration wizard时选择一个服务名称,而不用默认的mysql 。这 可以使新的服务正确地安装,但旧的还放在那里。建议最好还是把不用的删掉。
要永久删除旧的mysql服务,需要用户以管理权限在命令行上执行下列命令:
C:/>sc delete mysql
[SC] DeleteService SUCCESS
如果你的Windows版本上没有sc工具栏,就从下面的网址上下载delsrv工具栏: http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp 然后运用delsrv mysql syntax。

六、在Windows上升级MySQL

这部分介绍一些在Windows上升级MySQL的必需步骤。
1. 在升级之前,你应当一直支持目前的MySQL安装。 “Database Backups”
2. 在http://dev.mysql.com/downloads可以下载在Windows上安装MySQL 的最新内容。
3. 在升级MySQL之前,必须停止服务器。
如果服务器是作为服务安装的,要从命令提示符通过下列命令停止服务:

C:/> NET STOP MYSQL

如果不是作为服务安装的,就用下列命令停止MySQL服务器:

C:/> C:/Program Files/MySQL/MySQL Server 5.0/bin/mysqladmin -u root shutdown

当将4.1.5以前的版本升级到 MySQL5.0时,或将用Zip压缩文件安装的MySQL升级到用MySQL Installation Wizard安装的MySQL版本时,必须手动删除以前的安装和MySQL服务(如果服务器有作为服务安装的话). 用下列命令删除原来的MySQL服务:

C:/> C:/mysql/bin/mysqld --remove

如果不删除原有服务,MySQL Installation Wizard可能无法安装新的MySQL服务。

如果你从Zip 压缩文档安装MySQL,要么覆盖原有的MySQL安装(通常在C:/mysql),要么在不同的目录下安装 ,比如C:/mysql4。建议覆盖原有安装。

重启服务器。如果MySQL是作为服务运行的话,用NET START MySQL,或者直接调用mysqld。

Windows 和 Unix两种系统下的MySQL比较

MySQL在Windows上已经相当稳定。Windows版本的MySQL和相应的Unix版本的MySQL具有相同的特性,但存在以下 几点不同:

? Windows 95和线程

Windows 95分出约200字节的主内存给每一个线程。MySQL的每个连接创建一个新的线程,所以如果服务器处理 多个连接时,不应该在Windows 95下运行 mysqld。其他版本的Windows不存在这个bug。

? 限制端口数量

Windows系统下大概有4,000个可用端口,当一个端口的连接关闭时,需要2-4分钟才能重新启用该端口。当处 于代理连接和断开连接的高峰期时,可能使所有的端口在重新启用之前都处于关闭状态。如果发生这种情况, MySQL服务器将停止相应,尽管它还处于运行状态下。需要注意的是,机器上运行的其它应用程序也可能使用端 口,这也会使可用端口的数量下降。更多的信息请参看下面链接: http://support.microsoft.com/default.aspx?scid=kb;en-us;196271.

? 同时读取

MySQL依赖于调用pread()和pwrite()系统来使INSERT和SELECT可用。目前,我们使用mutexes来代替pread()和 pwrite()。我们打算用虚拟的界面来替代文件水平界面,这样我们就可以在NT,2000和XP系统上使用readfile ()/writefile()界面并获得较高的速度。目前MySQL 5.0只能执行2,048个文件,这就意味着不能在Windows NT ,2000,XP和2003以及Unix下运行多个同时运行的线程。

? 封闭读取

MySQL对每一个连接使用封闭读取,如果指定的通道连接可用,这就意味着以下几点:
o一个连接不会在8小时后自动断开,这发生于Unix版本的MySQL。
o如果连接悬挂,只有关闭MySQL才能断开该连接。
omysqladmin kill 对睡眠状态的连接无效。
o只要存在睡眠连接,mysqladmin shutdown不会异常终止。? ALTER TABLE

当你正在执行一个ALTER TABLE语句时,在被其他线程使用前表格将被锁定。在Windows系统下可发生该情况, 你不能删除被另外一个线程使用的文件。将来我们可能找到解决该问题的方法。

? DROP TABLE

因为MERGE 处理器处理隐藏于MySQL上一层的表格,这可使Windows下的被MERGE表格使用的DROP TABLE不工作。 因为Windows不允许dropping文件开启,你就必须转储清除所有的MERGE表格(使用FLUSH TABLES)或者在 dropping文件前先撤销MERGE表格。

? 数据目录和索引目录

Windows系统忽略了CREATE TABLE的数据目录和索引目录选项,这是由于Windows不支持符号连接造成的。在拥 有无功能realpath()调用的系统上也会忽略这些选项。

? 撤销数据库

你不能够撤销正在被某个线程使用的数据库。

? 从任务管理器内关闭MySQL

你不能够在任务管理器内关闭MySQL,也不能依靠Windows 95的关机操作关闭MySQL。你必须使用mysqladmin shutdown来关闭MySQL。

? 名称的大小写

在Windows下的文件名不区分大小写,所以Windows同样不区分MySQL数据库和表格的名称的大小写。唯一的限制 就是数据库和表格名称必须在给定的语句内全部使用相同的case来指定。

? ‘/’路径名分离字符

在Windows下使用‘/’来分离路径名,‘/’同样是MySQL里的换码符。如果你使用LOAD DATA INFILE 或者 SELECT ... INTO OUTFILE,使用Unix格式的文件名内出现‘/’字符:
mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
换句话说, 你必须使用两个‘/’字符。
mysql> LOAD DATA INFILE 'C://tmp//skr.txt' INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C://tmp//skr.txt' FROM skr;
? 进程管道的问题

进程管道不会按照Windows命令行的提示可靠的工作。如果进程管道包含有字符^Z / CHAR(24),Windows便为认 为达到文件尾并终止程序。当你应用下面的一个二进制日志时便会出现问题:

C:/> mysqlbinlog binary-log-name | mysql --user=root 如果你需要应用该日志并遇到问题,你可以怀疑这是由于^Z / CHAR(24)字符导致的,可使用下面的工作区来解 决: C:/> mysqlbinlog binary-log-file --result-file=/tmp/bin.sql C:/> mysql --user=root --execute "source /tmp/bin.sql" 这样,后面的命令也可以可靠的读取含有二进制数据的SQL文件。

? 用户错误所导致的拒绝访问

如果你尝试运行MySQL代理程序来连接服务器,同时该服务器又在同一台机子上运行着,你就被当作'some- user'@'unknown'用户而被拒绝访问'mysql'数据库,这表明MySQL不能够恰当的解析主机名。要解决该问题,你必须创建一个名为/windows/hosts的文件,并包含下面的信息:
127.0.0.1       localhost 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值