MySQL 3.23 中文参考手册 |
|
|
|
| 2004-02-12 MySQL 译者:晏子 http://www.mysql.com/doc.html |
|
| |
这节描述在Win32上安装和使用MySQL,这也在MySQL Win32分发所带的“readme”文件中描述。
4.12.1 在Win32上安装MySQL
如果你没有一个注册的MySQL版本,你应该首先下载共享软件版本,从:
MySQL 3.21.29
如果你准备从一些其他程序连接MySQL,你也可能需要MyODBC驱动程序。你可在MySQL下载页找到。
安装任何一个分发,在某个空目录解压缩它并且运行Setup.exe程序。
缺省地,MySQL-Win32被配置安装在“C:mysql”。如果你想要在其它地方安装MySQL,在“C:mysql”安装它,然后将安装移到你想要的地方。如果你真的移走MySQL,你必须通过提供选项给mysqld告诉mysqld那里的所有一切,使用C:mysqlbinmysqld --help显示所有的选项目!例如,如果你移动MySQL分发到“D:programsmysql”,你必须用D:programsmysqlbinmysqld --basedir D:programsmysql来启动mysqld。
用登记的MySQL版本,你也可以创建一个“C:my.cnf”文件来保存用于MySQL服务器的任何缺省选项。拷贝文件“mysqlmy-example.cnf”到“C:my.cnf”并且编辑它来适用于你的安装。注意你应该用"/"而不是""指定所有的路径。如果你使用“”,你需要指定两次(“\”),因为在MySQL中“”是转义字符,见4.15.4 选项文件。
4.12.2 在Win95/Win98上启动MySQL
MySQL使用 TCP/IP 把一个客户连接到一个服务器。(这将允许在你的网络上任何机器连接你的MySQL服务器)。因此,你必须在启动MySQL前在你的机器上安装TCP/IP,你可以在你的Windows CDROM上找到TCP/IP 。
注意:如果你正在使用一个旧的Win95版本(例如OSR2),很有可能你有一个老的Winsock包!MySQL需要Winsock 2!你可从微软得到最新的Winsock。Win98有新的Winsock 2库作为缺省,这样上述不适用于Win98。
你能使用2个不同的MySQL服务器:
mysqld 用完整调试和自动存储器分配检查编译
mysqld-opt 对Pentium 处理器优化。
上面两个应该在任何 > = i386的Intel处理器上工作 。
为了启动mysqld服务器,你应该启动一个MSDOS窗口并键入:
C:mysqlbinmysqld
这将在一个没有窗口的背景启动mysqld。
你可以这样杀死MySQL服务器,执行:
C:mysqlbinmysqladmin -u root shutdown
注意Win95/Win98不支持命名管道的创建。在Win95/Win98上,你只能使用命名管道连接运行在一个NT服务器上的远程MySQL。
4.12.3 在NT上启动MySQL
Win95/Win98小节也适用于在NT上的MySQL,有下列差别:
为了是MySQL用TCP/IP工作,你必须安装服务包3(service pack 3)(或更新)!
对于NT,服务器名字是mysqld-nt。通常你应该在 NT 上安装MySQL作为一种服务:
C:mysqlbinmysqld-nt --install
(你可以在 NT 上使用mysqld或mysqld-opt服务器,但是那些不能作为一种服务启动或使用命名管道。)
你可以用下列命令启动和停止MySQL服务:
NET START mysql
NET STOP mysql
注意在这种情况下,你不能对mysqld-nt使用任何其他选项!
如果你需要用任何选项启动mysqld-nt,你也可以作为在NT上的一个独立程序运行mysqld-nt!如果你在NT上没有选项启动mysqld-nt,mysqld-nt尝试启动自己作为一种有默认选项的服务。如果你停止了mysqld-nt,你必须用NET START mysql启动它。
服务用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:mysqlbinmysqld --install
如果这还不工作,你能通过在注册表修正路径使得mysqld-nt正确启动!
如果你不想作为一种服务启动mysqld-nt,你可以如下启动它:
C:mysqlbinmysqld-nt --standalone
或
C:mysqlbinmysqld-nt --standalone --debug
最新的版本在“C:mysqld.trace”给你一个调试踪迹。
4.12.4 在 Win32 上运行 MySQL
MySQL在所有Win32平台上支持TCP/IP和NT上命名管道。如果客户安装了TCP/IP,缺省是对NT上的本地连接使用命名管道而对所有其他情形使用TCP/IP,主机名指定使用哪个协议:
主机名 协议
空 (没有) 在NT上,首先尝试命名管道;如果它不工作,使用TCP/IP。在Win95/Win98上,使用TCP/IP。
. 命名管道
localhost TCP/IP到当前主机
主机名 TCP/IP
通过指定命名管道--pipe选项,你可以强制一个MySQL客户使用命名管道。使用--socket选项指定管道的名字。
通过执行下列命令,你能测试MySQL是否正在工作:
C:mysqlbinmysqlshow
C:mysqlbinmysqlshow -u root mysql
C:mysqlbinmysqladmin version status proc
C:mysqlbinmysql test
如果在Win95/Win98上mysqld很慢地回答连接,可能你的DNS有问题。在这种情况中下,用--skip-name-resolve启动mysqld并且在MySQL授权表中仅使用localhost和IP数字。在你连接运行在NT上一个mysqld-nt的MySQL服务器时,使用--pipe指定命名管道使用的参数,你也能避开DNS,对大多数MySQL客户是可行的。
有2个版本的MySQL命令行工具:
mysql 用原生Win32编译,它提供很有有限的文本编辑能力。
mysqlc 用Cygnus GNU 编译器和库编译,它提供readline编辑。
如果你想使用mysqlc.exe,你必须拷贝“C:mysqllibcygwinb19.dll”到“windowssystem”(或类似的地方)。
在Win32上缺省的权限给所有本地用户以所有数据库的完全权限。为了使MySQL更安全,你应该为每个用户设置口令并删除mysql.user中有Host='localhost'和User=''的行。
你也应该为root用户增加一个口令:(下列例子通过删除匿名用户,允许任何人存取“测试”数据库)
C:mysqlbinmysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User='';
mysql> QUIT
C:mysqlbinmysqladmin reload
C:mysqlbinmysqladmin -u root password your_password
在你设置了口令以后,如果你想要关掉mysqld服务器, 你能使用这个命令做到:
mysqladmin -- user=root -- password=your_password shutdown
如果你正在使用在windows下的MySQL共享软件版本,上面的命令将以 parse error near 'SET OPTION password'的错误而失败,这是因为,这是共享软件版本,它基于MySQL 3.21,没有SET PASSWORD命令。
对共享软件版本,你能如下设置root用户口令:
C:mysqlbinmysql mysql
mysql> UPDATE user SET password=PASSWORD('your password') WHERE user='root';
mysql> QUIT
C:mysqlbinmysqladmin reload
有注册的MySQL版本,你能很容易地用GRANT和REVOKE命令增加新用户和更改权限,见7.26 GRANT和REVOKE句法。对Windows 的共享软件版本,必须使用INSERT、UPDATE和DELETE在mysql数据库中的一个表来管理用户和他们的权限,见6.13 存取拒绝(Access denied)的错误原因。
4.12.5 用SSH从Win32连接一个远程MySQL
这是一个关于怎样用SSH 得到一个安全的连接远程MySQL服务器的注意事项(David Carlson)。
在你的windows机器上安装SSH客户 - 我使用了一个来自http://www.doc.ic.ac.uk/~ci2/ssh/的免费SSH客户。其他有用的链接:http://www.npaci.edu/Security/npaci_security_software.html和http://www.npaci.edu/Security/samples/ssh32_windows/index.html.
启动SSH。设置主机名字 = 你的MySql服务器名或IP地址,设置userid=你的用户名登录到你的服务器。
点击“local forwords”。设定local port: 3306, host: localhost, remote port: 3306
保存一切,否则下次你将必须再做一遍。
用SSH登录到你的服务器。
启动一些ODBC应用程序(例如Access)。
创造一个新文件并且用ODBC驱动程序链接到mySQL,就像你通常做的一样,除了对服务器用用户“localhost”。
搞定。它对一个直接的因特网连接工作得很好。我有些问题,SSH与我的Win95网络和Wingate有冲突 - 但是那将是张贴在其他软件公司的用户组的话题!
4.12.6 MySQL-Win32与Unix MySQL比较
MySQL- Win32现在已经证明了自己很稳定。这个版本得MySQL有与对应的Unix版本同样的特征,除了下面:
Win95和线程
Win95 为每个线程的创建损失大约200个字节的内存。因此,如果你进行许多连接,你不应该在Win95运行mysqld很长时间,因为MySQL的每个连接都创建一个新线程!WinNT和Win98不能容忍这个bug。
阻塞式读(blocking read)
MySQL为每个连接使用一个阻塞式读取,这意味着:
一个连接将不在8个小时后自动被断开,就像MySQL的Unix版本所发生的。
如果一个连接“挂起”,不杀死MySQL就不可能打破它。
mysqladmin kill在一个睡眠的连接上将不工作。
只要有睡眠的连接,mysqladmin shutdown不能中途中断。
我们计划在不久的将来修正它。
UDF函数
暂时MySQL-Win32不支持用户可定义函数。
DROP DATABASE
你不能抛弃一个正在被某些线程使用的数据库。
从任务管理器杀死MySQL
在Windows95上,你不能从任务管理器或用shutdown实用程序杀死MySQL。你必须用mysqladmin shutdown关闭它。
大小写区分的名字
文件名在Win32上是忽略大小写的,因此Win32上的MySQL数据库和表的名字也是忽略大小写的。唯一的限制是数据库和表的名字必须在整个一个给定的语句中大小写是一样的,因为它用my_table和MY_TABLE都指向同一个表子,下列查询将不工作:
SELECT * FROM my_table WHERE MY_TABLE.col=1;
“ ”目录字符
在Win95上的路径名组成由“”字符分隔,它在MySQL中也是转义字符。如果你正在使用LOAD DATA INFILE或SELECT ... INTO OUTFILE,你必须用两个“”字符或使用Unix风格的文件名“/”字符:
LOAD DATA INFILE "C:\tmp\skr.txt" INTO TABLE skr;
SELECT * FROM skr INTO OUTFILE 'C:/tmp/skr.txt';
Can't open named pipe错误
如果你使用NT上的MySQL-Win32共享软件版本,用最新的mysql客户,你将得到下列错误:
error 2017: can't open named pipe to host: . pipe...
这是因为NT上MySQL正式版本缺省地使用命名管道。你能通过为新MySQL客户使用--host=localhost选项或创建一个包含下列信息的文件“C:my.cnf”来避免这个错误:
[client]
host = localhost
Access denied for user错误
在访问在同一机器上的一个MySQL服务器时,如果你得到Access denied for user: 'some-user@unknown' to database 'mysql'的错误,这意味着MySQL不能正确解释你的主机名。为了修正它,你应该创建一个文件“windowshosts”,有下列信息:
127.0.0.1 localhost
对于可能想要帮助我们做好Win32版本的任何人,这里有的一些开放的问题:
制作一个单用户MYSQL.DLL服务器。这应该包括一个标准MySQL服务器的一切,除了线程创建外。这将使MySQL在不需要一个真正的客户机/服务器和不需要从其他主机存取服务器的应用程序时更容易使用。
为MySQL安装增加一些漂亮的“start”和“shutdown”图标。
为MySQL启动选项创建造一个工具管理注册表条目。注册表条目的度缺已经被编码进mysqld.cc,但是它应该重新编码而更加面向“参数”,该工具应该也能更新“ my.cnf”文件,如果用户比较喜欢使用它而不是注册表。
当用--install登记mysqld作为一种服务(在 NT 上 )时,如果你也可以在命令行上增加缺省选项,它将更好,目前解决办法是更新“C:my.cnf”文件。
当你挂起一个运行Win95的膝上计算机时,当膝上计算机被恢复时,mysqld守护程序不接受新连接。我们不知道这是否 Win95、TCP/IP或MySQL的问题。
能从任务管理器杀死mysqld将绝对是好事,目前,你必须使用mysqladmin shutdown。
移植用在 mysql命令行工具的readline到Win32。
标准的GUI版本MySQL客户(mysql、mysqlshow、mysqladmin和mysqldump) 将更好。
如果在“net.c”中的套接字“读”和“写”函数是可中断的,那将更好。这将有可能在Win32上用mysqladmin kill杀死打开的线程。
制作有关哪些Windows程序能工作在MySQL-Win32/MyODBC和必须做什么在能让他们工作的文档。
mysqld总是在“C”处启动而不在缺省地点,我们想让mysqld使用当前地点用于排序顺序。
移植sqlclient到Win32(几乎完成)并加入更多的特征!
把更多的选项加到Mysql Manager。
在服务器和客户之间改变通讯协议,使用Windows内部通讯而不是套接字和TCP/IP。
用.DLL实现UDF函数。
增加宏以使用由Win32提供的更快的对线程安全的增加/减少方法。
其他Win32特定问题在MySQL-Win32分发的“README”文件中描述。
|
| |
|
|
| |
|
发表评论
关闭窗口
|
|
|
|