|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^mysql|办事器 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。找到启动办事器的行并在该行前到场以下号令:下面号令的语法是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的任何一个。
通过这段时间的学习实践,对软件开发有了更多新的认识,不在局限于之前的片面性。当然,现在所学到的东西其实并不多,离当一个真正的程序员,还有很大的差距。 |
|