MySQL服务器的启动和停止

2008-02-23 07:41:13来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

一、以非特权用户运行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运行时在特定的用户下运行服务器。

二、启动服务器的方法

在我们确定了用于运行服务器的账号后,您能够选择如何安排启动服务器。您能够从命令行手动或在系统引导过程中自动地运行他。对于启动服务器由三种主要方法:

直接调用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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: MySQL数据目录结构

下一篇: 在服务器上安装、使用MySQL的注意事项(1)