专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » mysql服务器:MySQL服务器的启动与停止 »正文

mysql服务器:MySQL服务器的启动与停止

来源: 发布时间:星期四, 2009年2月12日 浏览:36次 评论:0



  、以非特权用户运行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、启动服务器思路方法
  在我们确定了用于运行服务器账号后你可以选择如何安排启动服务器你可以从命令行手动或在系统引导过程中自动地运行它对于启动服务器由 3种主要思路方法:
  
  直接mysqld
  这可能是最不常用思路方法建议不要多使用因此本文不详细介绍
  safe_mysqld脚本
  safe_mysqld试图确定服务器和数据目录位置然后用反映这些值选项服务器safe_mysqld将标准出错设备从服务器重定位到数据目录下个出错文件使得有它条记录在启动服务器后safe_mysqld也监视它并且如果它死掉则重启它safe_mysqld常用于BSD风格Unix系统
  如果你以root或在系统引导期间启动sqfe_mysqld出错日志由root拥有这可能在你以后试图用个非特权用户safe_mysqld时将导致“permission denied”(权限拒绝)删除出错日志再试
  mysql.server脚本
  这个脚本通过有意用于 V启动和停止系统上safe_mysqld.mysql.server来启动服务器该系统包含几个包含在机器进入或退出个给定运行级别时被点用脚本目录它可以用个start或stop参数点用以表明你是想启动还是想停止服务器
  safe_mysqld脚本安装在MySQL安装目录bin目录下或可在MySQL源代码分发scripts目录下找到mysql.server脚本安装在MySQL安装目录下share/mysqld目录下或可以在MySQL源代码分发support_files目录下找到如果你想使用它们你需要将它们拷贝到适当目录下
  
  对BSD风格系统(FreeBSDOpenBSD等)通常在/etc目录下有几个文件在引导时化服务这些文件通常有以“rc”开头名字且它有可能由个名为“rc.local”文件(或类似东西)特意用于启动本地安装服务在这样系统上你可能将类似于下列行加入rc.local文件中以启动服务器(如果safe_mysqld目录在你系统上区别修改它即可):
  
   [ -x /usr/local/bin/safe_mysqld ]; then
  /usr/local/bin/safe_mysqld &
  fi
  对于对于 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()
  
  某些种类信息无法以服务器选项指定对于这些你可能需要修改safe_mysqld例如如果你服务器不能正确选择本地时区而以GMT返回时间值你可以设置TZ环境变量给它个指示如果你用safe_mysqld或mysql.server启动服务器你可以将个时区设置加到safe_mysqld找到启动服务器行并在该行前加入下列命令:
  
  TZ=US/Central
  export TZ
  上面命令语法是Solaris对于其他系统语法可能区别请查阅相关手册如果你确实修改了你启动脚本要记住下次你安装MySQL时(如升级到新版本)修改将失去除非你首先在别处复制了启动脚本在安装了新版本后比较新旧版本脚本看看你需要重建什么改变
  
  2.2 在启动时检查你
  除了安排你服务器在系统引导时启动你可能要安装myisamchk和isamchk脚本以在服务器启动前检查你你可能在个崩溃后重启有可能表已经损害在启动前检查它是个发现问题好思路方法
  
   3、停止服务器
  要手工启动服务器使用mysqladmin:
  
  %mysqladmin shutdown
  
  要自动停止服务器你不需做特别事情BSD系统般通过向进程发个TERM信号停止服务它们或者正确应答它或被粗鲁地杀死mysqld在它收到这个信号时以终止作为应答对于用mysql.server启动服务器 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任务或使用个或使用个区别套接字文件你可以使用全局选项文件
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: