一、安装
mysql的默认安装位置在C:/MySQL,这一点并不会因为你将文件放在哪个目录而改变,因为其选项文件是那样设置的,要想将mysql真正安装至
其他位置,需要调节服务器设定值。
档MySQL服务器在Windows中启动时,它从两个文件中寻找选项:Windows目录中的my.ini文件和C:\my.cnf 文件。Windows目录典型名称为C:\WINDOWS或C:\WINNT。可以使用下面的命令从WINDIR环境变量值确定自己的确切位置:
C:\> echo %WINDIR%
MySQL首先从my.ini文件中寻找选项,然后从my.cnf文件中寻找。
最好的选择是只用一个,比如my.ini,这样即使系统盘不是C盘也没问题。
[mysqld]
# set basedir to your installation path
basedir=D:/javatool/MySQL/MySQL Server 5.1
# set datadir to the location of your data directory
datadir=D:/javatool/MySQL/MySQL Server 5.1/data
这是我的安装目录,将以上内容保存成my.ini文件放入C:\windows下即可。
二、启动
要想启动服务器,有两种方式:
1、输入命令:
C:\> D:\javatool\MySQL\MySQL Server 5.1\bin\mysqld --console
假如不想每次都进入MySQL的bin目录,就将其加到path里面,方便一点。但是如果在同一个机器上运行多个MySQL服务器,就不要在Windows PATH中加入MySQL bin目录。
支持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.1.2-alpha' socket: '' port: 3306
服务器继续向控制台写入诊断输出。你可以打开新的控制台窗口运行客户端程序。
如果省略--console选项,服务器向数据目录(默认为C:\Program Files\MySQL\MySQL Server 5.1\data)中的错误日志写入诊断输出。错误日志文件的扩展名为.err。
2、以Windows服务方式启动MySQL
建议将MySQL安装为Windows服务,当Windows启动、停止时,MySQL也自动启动、停止。还可以从命令行使用NET命令。
在Windows控制面板(Windows 2000,XP和Server 2003的管理工具下面)中可以看见Services工具(Windows Service Control Manager)。建议从命令行安装活卸载服务器时关闭Services工具。这样可以防止许多错误。
安装MySQL Windows服务之前,应当使用下面的命令先停止当前正运行的服务器:
C:\> C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin -u root shutdown
注意:如果MySQL root用户账户有密码,你需要调用命令 C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin -u root -p shutdown并根据提示输入密码。
使用该命令安装服务器
C:\> C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld --install
安装服务时,可以使用MySQL 5.1中的下面的参数:
· 可以直接在--install选项后面指定服务名。默认服务名是MySQL。
· 如果给出了服务名,后面可以跟一个选项。一般情况,应当为defaults-file="file_name",指定选项文件的名称,服务器启动时应当从中读取选项。
可以使用单个选项代替--defaults-file,但是不提倡这样做。--defaults-file更加灵活一些,因为你可以将多个服务器启动选项放入命名的选项文件中。
· 可以在服务名后面指定一个--local-service选项。这样服务器运行时使用LocalService Windows账户,只具有有限的系统权限。该账户只适用于Windows XP或更新版本。如果服务名后面同时跟有--defaults-file和--local-service,二者可以按任何顺序排放。
对于Windows MySQL服务器,根据下面规则确定服务器使用的服务名和选项文件:
· 如果在服务安装命令中,没有在--install选项后面指定了服务名或使用默认服务名(MySQL),服务器则使用MySQL服务名并从标准选项文件的[mysqld]组读取选项。
· 如果在服务安装命令中,在--install选项后面指定的服务名不是默认服务名(MySQL)。则从具有相同服务名的组中读取选项,并从标准选项文件读取选项。
服务器还从标准选项文件的[mysqld]组读取选项。你可以使用[mysqld]组中的选项用于所有MySQL 服务,还可以使用具有相同服务名的组,用于该服务名所对应的服务器。
· 如果在服务安装命令中,在服务名后面指定了--defaults-file选项,服务器只从命名文件的[mysqld]组中读取选项,忽略标准选项文件。对于更复杂的例子可以考虑使用命令:
C:\> C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld --install MySQL --defaults-file=C:\my-opts.cnf
该命令中,--install选项后面给出了默认服务名(MySQL)。如果未给出--defaults-file选项,该命令可以让服务器从标准选项文件的[mysqld]组中读数。由于提供了--defaults-file选项,服务器只从命名文件的[mysqld]组读取选项。
还可以在启动MySQL服务之前,在Windows Services工具中指定启动参数选项。
MySQL服务器安装为服务后,Windows启动时自动启动服务。还可以从Services工具直接启动服务,或使用命令NET START MySQL。NET命令忽略大小写。
三、关闭
下述命令可以停止MySQL服务器:
C:\> D:\javatool\MySQL\MySQL Server 5.1\bin\mysqladmin -u root shutdown
四、mysql帐户安全
初始的mysql没有密码,出于安全,有必要为root用户设置密码。
要想为匿名账户指定密码,可以使用SET PASSWORD或UPDATE。在两种情况中,一定要使用PASSWORD()函数为密码加密。
在Windows中使用PASSWORD的方法:
shell> mysql -u root
mysql> SET PASSWORD FOR ' '@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ' '@'%' = PASSWORD('newpwd');
在Unix中使用PASSWORD的方法:
shell> mysql -u root
mysql> SET PASSWORD FOR ' '@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ' '@'host_name' = PASSWORD('newpwd');
为匿名账户指定密码的另一种方法是使用UPDATE直接修改用户表。用root连接服务器,运行UPDATE语句为相应user表记录的Password列指定一个值。在Windows和Unix中的过程是相同的。下面的UPDATE语句同时为两个匿名账户指定密码:
shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
-> WHERE User = '';
mysql> FLUSH PRIVILEGES;
在user表中直接使用UPDATE更新密码后,必须让服务器用FLUSH PRIVILEGES重新读授权表。否则,重新启动服务器前,不会使用更改。
如果你宁愿删除匿名账户,操作方法是:
shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;
可以在Windows和Unix中使用DELETE语句。在Windows中,如果你只想删掉具有与root相同权限的匿名账户,方法为:
shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
mysql> FLUSH PRIVILEGES;
该账户允许匿名访问,但是拥有全部的权限,因此删掉它可以提高安全。
可以用几种方法为root账户指定密码。以下介绍了三种方法:
· 使用SET PASSWORD语句
· 使用mysqladmin命令行客户端程序
· 使用UPDATE语句
要想使用SET PASSWORD指定密码,用root连接服务器并执行两个SET PASSWORD语句。一定要使用PASSWORD()函数来加密密码。
在Windows中的语句:
shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');
在Unix中的语句:
shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
用服务器主机名替换第二个SET PASSWORD语句中的host_name。这是你指定匿名账户密码的主机名。
要想使用mysqladmin为root账户指定密码,执行下面的命令:
shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"
上述命令适用于Windows和Unix。用服务器主机名替换第二个命令中的host_name。不一定需要将密码用双引号引起来,但是你如果密码中包含空格或专用于命令解释的其它字符,则需要用双引号引起来。
你还可以使用UPDATE直接修改user表。下面的UPDATE语句可以同时为两个root账户指定密码:
shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
-> WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
UPDATE语句适用于Windows和Unix。
设置完密码后,当你连接服务器时你必须提供相应密码。例如,如果你想要用mysqladmin 关闭服务器,可以使用下面的命令:
shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)