日期:2011-05-02 15:22:00 来源:本站整理
MySQL服务器的启动与终止[MSSQL防范]
本文“MySQL服务器的启动与终止[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
MySQL服务器的启动与终止
[晏子]
1、以非特权用户运行MySQL服务器
在谈论若何启动MySQL服务器之前,让我们考虑一下应当以什么用户身份运行MySQL服务器.服务器可以手动或自动启动.假如你手动启动它,服务器以你登录Unix(Linux)的用户身份启动,即假如你用paul登录Unix并启动服务器,它用paul运行;假如你用su号令切换到root,然后运启动服务器,则它以root运行.但是,大大都情形下你大概不想手动启动服务器,最有大概是你安置MySQL服务器在系统指导时自动启动,作为尺度指导历程的一部份,在Unix下,该指导历程由系统的Unix用户root履行,并且任安在该历程中运行的进程均以root权限运行.
你应当紧记MySQL服务器启动历程的两个目标:
你想让服务器以某个非root用户运行.普通地,你想限制任何运行进程的本领,除非确切需求root权限,而MySQL不需求.
你想让服务器始终以同一个用户运行,此时用一个用户而其他时刻以另一个差别的用户运行服务器是很不便利的,这造成了为文件和目录以具有差别属主的数据目录下被成立,并大概招致服务器不能拜候数据库或表,这看你以哪个用户运行.统一用同一个用户运行服务器是你避免这个问题.
要一个普通的非特权用户运行服务器,按照下列步骤:
挑选一个用于运行服务器的用户,mysqld可以用任何用户运行.但在概念上较清楚的是为MySQL操作成立一个单独的用户.你也可以分外为MySQL挑选一个用户组.本文利用mysqladm和mysqlgrp辨别作为用户名和用户组名.
假如你已在自己的账号下安装好了MySQL且没有系统上的特别管理权限,你将大概在你自己的用户ID下运行服务器.在这种情形下,用你自己的登录名和用户组替换mysqladm和mysqlgrp.
假如你在RedHat Linux上用rpm文件安装MySQL,该安装将自动成立一个名为mysql的账号,用该账号替换mysqladm.
假如必要,用系统普通的成立用户的历程成立服务器账号,你需求用root做它.
假如服务器在运行,终止它.
改正数据目录和任何子目录和文件的属主,这样使得mysqladm用户拥有它们.比方,假如数据目录是/usr/local/var,你可以以下设置mysqladm的属主(你需求以root运行这些号令):
#cd /usr/local/var
#chown -R mysqladm.mysqlgrp
改正数据目录和任何子目录和文件的权限,使得它们只能由mysqladm用户拜候.假如数据目录是/usr/local/var,你可以设置由mysqladm拥有的任何东西:
# cd /usr/local/var
# chmod -R go-rwx
当你设置数据目录及其内容的属主和情势时,注意标记衔接.你需求顺着它们并改变它们指向的文件或目录的属主和情势.假如衔接文件的目录位于不属于你的地方,会有些麻烦,你大概需求root身份.
在你完成了上述历程后,你应当确保老是在以mysqladm或root登录时启动服务器,在后者,肯定指定--user=mysqladm选项,使服务器能将其用户ID切换到mysqladm(同时也实用于系统启动历程).
--user选项在MySQL 3.22中引入,假如你有老版本,你可以利用su号令奉告系统在以root运行时在特定的用户下运行服务器.
2、启动服务器的办法
在我们肯定了用于运行服务器的账号后,你可以挑选若何安置启动服务器.你可以从号令行手动或在系统指导历程中自动地运行它.关于启动服务器由三种主要办法:
直接调用mysqld.
这大概是最不常用的办法,倡议不要多利用,因此本文不具体介绍.
调用safe_mysqld脚本.
safe_mysqld试图肯定服务器程序和数据目录的位置.然后用反映这些值的选项调用服务器.safe_mysqld将尺度出错设备从服务器重定位到数据目录下的一个出错文件,使得有它的一条记录.在启动服务器后,safe_mysqld也监督它并且假如它死掉则重启它.safe_mysqld常用于BSD气势的Unix系统.
假如你以root或在系统指导期间启动sqfe_mysqld,出错日记由root拥有,这大概在你今后试图用一个非特权用户调用safe_mysqld时将招致"permission denied"(权限回绝)错误,删除出错日记再试一下.
调用mysql.server脚本.
这个脚本通过有意用于System V的启动和终止系统上的safe_mysqld.mysql.server来启动服务器,该系统包含几个包含在机械进入或退出一个给定运行级别时被点用的脚本目录.它可以用一个start或stop参数点用以表明你是想启动还是想终止服务器.
safe_mysqld脚本安装在MySQL安装目录的bin目录下,或可在MySQL源代码分发的scripts目录下找到.mysql.server脚本安装在MySQL安装目录下的share/mysqld目录下或可以在MySQL源代码分发的support_files目录下找到.假如你想利用它们,你需求将它们拷贝到得当的目录下.
对BSD气势的系统(FreeBSD,OpenBSD等),普通在/etc目录下有几个文件在指导时初始化服务,这些文件普通有以"rc"开首的名字,且它有大概由一个名为"rc.local"的文件(或近似的东西),特地用于启动本地安装的服务.在这样的系统上,你大概将近似于下列的行加入rc.local文件中以启动服务器(假如safe_mysqld的目录在你的系统上差别,改正它便可):
if [ -x /usr/local/bin/safe_mysqld ]; then /usr/local/bin/safe_mysqld &fi
关于关于System V气势的系统,你可以通过将mysql.server放在/etc下得当的启动目录下来安装它.假如你运行Linux并从一个RPM文件安装MySQL,这些已经为你做好了,不然将脚本安装在主启动目录下,并将指向它的衔接放在得当的运行级别目录下.你也可以使脚本只能由root启动.
启动文件的目录筹划各系统差别,所以你需求查抄一下看看你的系统若何组织它们.比方在Linux PPC上,目录是/etc/rc.d和/etc/rc.d/rc3.d,这样你可以这样安装脚本:
#cp mysql.server /etc/rc.d/init.d#cd /etc/init.d#chmod 500 mysql.server#cd /etc/rc.d/rc3.d#ln -s ../init.d/mysql.server S99mysql
在solaris上,主脚本目录是/etc/init.d,并且运行级别目录是/etc/rd2.d,所以号令看上去像这样:
#cp mysql.server /etc/rc.d/init.d#cd /etc/init.d#chmod 500 mysql.server#cd /etc/rc2.d#ln -s ../init.d/mysql.server S99mysql
在系统启动时,S99mysql脚本将自动用一个start参数调用.假如你有chkconfig号令(Linux上有),你可以由它帮忙安装mysql.server脚本而不是象上面那样手工运行上述号令.
2.1 指定启动选项
假如你想在服务器启动时指定额外的启动选项,你可有两种办法.你可以改正你利用的启动脚本(safe_mysqld或mysql.server)并直接在调用服务器的行上指定选项,或在一个选项文件中指定选项.倡议你假如大概在一个全局选项文件中指定选项,它普通位于/etc/my.cnf(Unix)或c:\my.cnf(Windows).
某些种类的信息无法以服务器选项指定.关于这些你大概需求改正safe_mysqld.比方,假如你的服务器不能精确挑选本地时区而以GMT返回时间值,你可以设置TZ环境变量给它一个指导.假如你用safe_mysqld或mysql.server启动服务器,你可以将一个时区设置加到safe_mysqld.找到启动服务器的行并在该行前加入下列号令:
TZ=US/Centralexport TZ
上面号令的语法是Solaris的,关于其他系统语法大概差别,请查阅相关手册.假如你确切改正了你的启动脚本,要记着下次你安装MySQL时(如进级到新版本),你的改正将失去,除非你首先在别处复制了启动脚本.在安装了新版本后,对比新旧版本的脚本,看看你需求重建什么改变.
2.2 在启动时查抄你的表
除了安置你的服务器在系统指导时启动,你大概要安装myisamchk和isamchk脚本,以在服务器启动前查抄你的表.你大概在一个崩溃后重启,有大概表已经侵害,在启动前查抄它是一个发现问题的好办法.
3、终止服务器
要手工启动服务器,利用mysqladmin:
%mysqladmin shutdown
要自动终止服务器,你不需做分外的事情.BSD系统普通通过向进程发一个TERM信号终止服务,它们大概精确应答它或被粗鲁地杀死.mysqld在它收到这个信号时以终止作为应答.关于用mysql.server启动服务器的System V气势的系统,终止进程将用一个stop参数调用该脚本,奉告服务器终止,当然假定你已安装了mysql.server.
4、假如你不能衔接服务器,若何重新得到对服务器的掌握
在某些情形下,你大概由于不能衔接它而手工重启服务器.当然,这有点冲突.因为普通你通过衔接服务器而手工关掉它,那么这种情形若何会呈现.
首先,MySQL root口令可以已经设置为你不知道的值,这大概发生在你改正口令时,比方,假如你在输入新口令时无意键入一个不可见的掌握字符.你也大概忘掉口令.
其次,衔接localhost普通通过一个Unix域套接字文件举行,普通是/tmp/mysql.sock.假如套接字文件被删除了,本地客户就不能衔接.这大概发生在你的系统运行一个cron任务删除了/tmp下的暂时文件.
假如你因为丧失套接字文件而不能衔接,你可以简单地通太重启服务器重新成立得到它.因为服务器在启动时重新成立它.这里的骗局是你不能用套接字成立衔接因为它不见了,你必须成立一个TCP/IP衔接,比方,假如服务器主机是pit.snake.net,你可以这样衔接:
%mysqladmin -p -u root -h pit.snake.net shutdown
假如套接字文件被一个cron任务删除,问题将反复呈现,除非你改正cron任务或利用一个或利用一个差别的套接字文件,你可以利用全局选项文件指定一个差别的套接字,比方,假如数据目录是/usr/local/var,你可以通过将下列行加入/etc/my.cnf中,将套接字文件移到那边:
[mysqld]socket=/usr/local/var/mysql.sock[client]socket=/usr/local/var/mysql.sock
对服务器和客户均指定途径名,使得它们都利用同一个套接字文件.假如你只为服务器设置途径,客户程序将仍旧盼望在原位置履行套接字,在改正后重启服务器,使它在新位置成立套接字.
假如你由于忘掉root口令或已经将它设置为差别于认为的值而不能衔接,你需求重新得到对服务器的掌握,是你能再次设置口令:
中止服务器
假如你以root登录服务器主机,你可以用kill号令终止服务器.你可以利用ps号令或通过探求服务器的PID文件(普通在数据目录中)找出服务器进程的ID.
最好是首先尝试用一个向服务器发出一个TERM信号的正常kill看它能否将以正常终止应答.这种方法下,表和日记将精确地被清空.假如服务器阻塞并且不该答一个正常终止信号,你可以用kill -9强迫终止它.这是最后的手段了,因为这大概有未清空的改正,并且你冒着让表处于一个不一致状况的风险.
假如你用kill -9终止服务器,要确保在启动服务器前用myisamchk和isamchk查抄你的表.
用--skip-grant-table选项重启服务器.
这奉告服务器不利用受权表考证衔接,这答应你以root衔接而无须口令.在你已经衔接后,改变root口令.
用mysqladmin flush-privileges奉告服务器再次利用受权表启动
假如你的mysqladmin版本不熟习Flash-privileges,试一试reload.
5、运行多个服务器
大大都再一台给定的机械上运行单个MySQL服务器,但在很多情形下,运行多个服务器是很有效的:
你大概想测试一个服务器的新版本,而保存你正在运行的生产服务器.在这种情形下,你会运行差别的服务器代码.
操作系统普通限制每个进程的翻开文件句柄数目.假如你的系统很难提高这个限制,运行多个服务器是办理限制的一种办法.在这种情形下,你大概运行统一服务器的多个实例.
ISP常常为其客户供应自己的MySQL安装,有必要触及单独的服务器.在这种情形下,你大概运行同一版本的多个实例或差别版本,假如差别的客户想要差别版本的MySQL.
很自然地,运行多个服务器比只运行一个服务器要复杂得多.假如你安装多个版本,你不能在同一个地方安装全部东西.当服务器运行时,某些参数必须或极大概对每个服务器是唯一的,它们包含服务器在哪安装、其数据目录的途径名、TCP/IP端口和UNIX域套接字途径名以及用于运行服务器的UNIX账号(假如你不再同一账号下运行全部服务器).假如你决意运行多个服务器,一定要注意你利用的参数,是你不至于丧失对所发生的事情的踪影.
5.1 配置和安装多个服务器
假如你要运行差别版本的服务器而不是同一版本的多个实例,你必须在差别地址安装它们.假如你安装二进制分发(不用RPM),它们将安装在包含差别版本号的目录名下.假如你从源代码安装,最简单的办法是在每个版本运行configure配置MySQL安装历程中利用--with-prefix选项使得差别分发脱离,这将使得全部东西安装在一个单独的目录下,你可以将目录域分发版本号接洽起来,如,你可以象这样配置一个MySQL分发,此中version是MySQL版本号:
%.configure --with-prefix=/usr/local/mysql-version
--with-prefix选项也决意了服务器的一个唯一数据目录.你大概想加上别的服务器特定的选项,如TCP/IP端口号和套接字途径名(--with-tcp-port和--with-unix-socket).
假如你想运行同一版本服务器的多个实例,任何必须基于一个服务器特定设置的选项将需求在运行时指定.
5.2 多服务器的启动历程
启动多个服务器比利用一个服务器要复杂.因为safe_mysqld和mysql.server均在单个服务器设置上工作得最好.倡议你细心研究一下safe_mysqld并用它作为你的启动历程的底子,利用你改正的版本,你能针对你自己的需求更切确地裁剪它.
你必须处理的一个问题是如安在选项文件(my.cnf)中指定选项.关于多服务器,你不能关于每个差别的服务器设置利用/etc/my.cnf,你只能对全部服务器相同的设置利用该文件.假如服务器有一个差别的编译进去的数据目录位置,你可以在每个服务器数据目录中的my.cnf中指定全部服务器要利用的设置,而利用DATADIR/my.cnf指定服务器特定的设置,这里DATADIR以服务器差别而差别.
另一种指定服务器选项的办法是用--default-file=path_name作为号令行的第一个选项,奉告服务器从名为path_name中的文件中读取选项,这样你可以把一个服务器选项放在一个对该服务器唯一的文件中,然后奉告服务器在启动时读取该文件.注意,假如你指定这个选项,将不利用普通的选项文件如/etc/my.cnf的任何一个
以上是“MySQL服务器的启动与终止[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:MySQL数据目录构造(1)
- ·下一篇文章:基于WEB的数据库查询
- ·中查找“MySQL服务器的启动与终止”更多相关内容
- ·中查找“MySQL服务器的启动与终止”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论