程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 啟動和關閉MySQL服務器

啟動和關閉MySQL服務器

編輯:MySQL綜合教程

作為MySQL管理員,一個普通的目標就是確保服務器盡可能地處於運行狀態,使得客戶機能夠隨時訪問它。但是,有時最好關閉服務器(例如,如果正在進行數據庫的重定位,不希望服務器在該數據庫中更新表)。保持服務器運行和偶爾關閉它的需求關系不是本文所解決的。但是我們至少可以討論如何使服務器啟動和停止,以便您具備進行這兩個操作的能力。

  本章的說明只用於UNIX 系統。

  調用本章給出的命令

  為了簡潔,在大多數情況中,諸如mysqla d m i n、mysqldump 等程序在本章中沒有給出任何- h、- u或- p選項。筆者假定您將會用連接服務器所需的任何選項調用這些程序。

  用無特權的用戶賬號運行MySQL服務器

  在討論如何啟動服務器之前,考慮一下在服務器啟動時應該運行哪個賬號。服務器可以手工和自動啟動。如果手工啟動,則服務器以UNIX 用戶身份運行(您恰好作為該用戶進行了注冊)。即,如果筆者以paul 進行注冊並啟動服務器,則它將以paul 身份運行。如果用s u命令將用戶切換到root 然後啟動服務器,則服務器以root 身份運行。

  但是,大多數時候可能都不會采用手工啟動服務器。您很可能將安排服務器在系統引導時作為標准啟動過程的一部分自動地運行。在UNIX中,該啟動過程由系統以UNIX 的r o o t用戶的身份執行,該過程中啟動的任何進程都用root 的權限運行。

  應該緊記MySQL服務器啟動過程的兩個目標:

  要服務器以某些非root 的用戶身份啟動。通常,除非進程真的需要root 訪問權而mysql辦不到,否則應限制任何進程的能力。

  要服務器始終以同一個用戶的身份運行。服務器有時作為一個用戶運行而有時又作為另一個用戶運行時會產生矛盾。這將導致文件和目錄以不同的所有權在該數據下被創建,甚至引起服務器不能訪問數據庫或表。以同一個用戶的身份一致地運行服務器可以避免該問題。

  為了以標准的、非特權的用戶身份運行數據庫,可按如下步驟執行該過程:

  1) 選擇用於運行服務器的賬號。mysqld 可以以任何用戶身份運行,但是很明顯,它只為MySQL活動創建了一個單獨的賬號。您也可以為MySQL專門指定一個組。筆者將調用的這些用戶和組的名字命名為mysqladm 和mysqlg r p。如果您使用了其他的名字,則在本書中有mysqladm 和mysqlgrp 的地方替換它們

  如果您在自己的賬號下安裝了MySQL並且系統中沒有特定的管理權限,則您可以在自己的ID 用戶下運行服務器。在這種情況下,應使用您自己的注冊名和組名替代mysqladm 和mysqlgrp 。

  如果您利用RPM 文件在RedHat Linux 下安裝了MySQL,則該安裝程序將在mysql名下自動創建了一個賬號。應使用該名字替換mysqladm 。

  2) 如果必要的話,可用系統常用的賬號創建過程( a c count - c r e a t i o n)來創建服務器賬號。這需要以root 身份進行操作。

  3) 關閉服務器(如果它在運行)。

  4) 修改數據目錄以及任何子目錄和文件的所有權,使mysqladm 用戶擁有它們。例如,如果數據目錄是/ us r / l o c a l / v a r,則可按以下設置mysqladm 用戶的所有權:

  # cd /usr/local/var 移動到數據目錄

  # chown -r mysqladmin.mysqlgrp 設置所有目錄和文件的所有權

  5) 修改數據目錄以及任何子目錄和文件的許可權,使得只有mysqladm 用戶能夠訪問它們。設置該方式以避免其他人員訪問是一種好得安全預防措施。如果數據目錄是/ us r / l o c a l / v a r,則可通過mysqladm 用戶按下列操作設置應具有的一切(您需要以root 身份運行這些命令):

  # cd /usr/local/var 移動到數據目錄

  # chmod -R go -rwx 使所有一切只對mysqladm 可訪問

  在設置數據目錄及其內容的所有權和方式時,觀察符號連接。您需要跟蹤符號連接並修改所指向的文件或目錄的所有權和方式。如果這些連接文件所定位的目錄不屬於您,則這樣做可能會引起麻煩,因此您必須是root 用戶。

  在完成前述過程後,應確保無論是作為mysqladm 還是作為root 用戶注冊都始終啟動服務器。在後者中,要確保指定了--user = mysqladm 的選項,使服務器可以將其用戶ID 切換到mysqla d m(該選項在系統啟動過程中也可使用)。

  --user 選項被增加到MySQL3.22 的mysql中。如果您的版本比MySQL3.22 舊,則在啟動服務器並作為root 用戶運行時,可以使用su命令指示系統在指定賬號下運行服務器。您需要閱讀有關su的人工頁,因為作為一個指定用戶運行命令的語法被改變了。
啟動服務器的方法

  如果您已經確定了用來運行服務器的賬號,則可以選擇安排怎樣啟動服務器。可以從命令行手工運行,或在系統啟動過程中自動運行服務器。有三種啟動服務器的主要方法:

  直接調用mysqld。這或許是最小的命令方法。除了說明mysqld --help 是一個有用的命令(用它可以查找您可利用其他啟動方法使用的選項)外,筆者不打算進一步討論它。

  調用safe_mysqld 腳本。safe_mysqld 試圖確定服務器程序和數據目錄的位置,然後利用反映這些位置的選項調用服務器。safe_mysqld 將服務器的標准錯誤輸出重定向到數據目錄的錯誤文件中,並以記錄的形式出現。在啟動服務器後, safe_mysqld 還監控服務器,並在其死機時重新啟動。safe_mysqld 通常用於UNIX 的BSD 風格的版本。

  如果您曾經作為root 或在系統啟動程序中啟動s a f e _ mysqld,則錯誤日志將由r o o t擁有。如果您試著以非特權的用戶身份調用s a f e _ mysqld,則可能引起“所有權被拒絕”的錯誤。刪除該錯誤文件再試一次。

  調用mysql.server 腳本。通過運行s a f e _ mysqld . mysql. server,該腳本啟動服務器。該腳本建議在使用System V 啟動/關閉系統的系統中使用。這個系統包括幾個包含在機器登錄或退出一個特定運行級時被調用的腳本的目錄。它可以利用start 或stop 參數進行調用,以指明希望啟動還是關閉服務器。

  safe_mysqld 腳本被安裝在MySQL安裝目錄的bin 目錄下,或者在MySQL源程序分發包的scripts 目錄中。mysql.server 腳本安裝在MySQL安裝目錄的s h a r e / mysql目錄下,或者在MySQL源程序分發包的support-files 目錄中。如果要使用它,應將其拷貝到合適的啟動目錄中。

  對於BSD 風格的系統,在/etc 目錄中有幾個文件相對應,它們在引導期間開始服務。這些文件的名字通常以‘ r c’開始,因此很可能會有一個名為rc.local (或類似的名字)的文件來啟動本地的安裝服務。在這樣的系統中,您可能要按如下方法添加一些行到rc.local 文件中以啟動服務器(如果路徑與您系統中的不同,可將其修改成s a f e _ mysqld):

if (-x /usr/local/bin/safe_mysqld);then
  /usr/local/bin/safe_mysqld &
fi


  對於System V 風格的系統,可以通過將其放置在/etc 下的合適的啟動目錄中來安裝mysql. server。如果您運行Linux 並從RPM 文件中安裝了MySQL,那麼這此操作可能已經完成了。否則,應該在主啟動腳本目錄中安裝該腳本,並在合適的運行級目錄中設置對它的連接。您還可使該腳本僅對root 用戶可執行。

  啟動文件目錄的布局隨系統而變化,因此將需要全面檢查來弄清系統是怎樣組織它們的。例如,在LinuxPPC 中,這些目錄為/etc/rc.d/init.d 和/ e t c / r c . d / r c 3 . d。應該按如下方法安裝該腳本:

      # cp mysql.server /etc/rc.d/init.d
  # cd /etc/init.d
  # chmod 500 mysql.server
  # cd /etc/rc.d/rc3.d
  # In -s ../init.d/mysql.server S99mysql 在Solaris 中,主腳本目錄為/ e t c / i n i t . d,運行級目錄為/ e t c / r c 2 . d,因此上述命令將替換為:
  #cp mysql.server /etc/init.d
  # cd /etc/init.d
  # chmod 500 mysql.server
  # cd /etc/rc2.d
  # In -s ../init.d/mysql.server s99mysql 在系統啟動期間,S99mysql腳本利用start 參數自動調用。


  如果您擁有chkconfig 命令(它在Linux 中很常用),則可用其幫助安裝mysql.server 腳本來代替手工運行上述的命令。

  1. 指定啟動選項

  在啟動服務器時,如果想要指定附加的啟動選項,可用兩種方法進行操作。您可以修改所使用的啟動腳本( safe_mysqld 或mysql. server),並在調用服務器的命令行中直接指定這些選項。您還可以在選項文件中指定選項。筆者建議,如果可能的話,應在全局選項文件中指定服務器選項。通常該文件的位置是UNIX 中的/ e t c / my.cnf 和Windows 中的c:my.cnf(有關使用選項文件的細節,請參閱附錄E)。

  某些種類的信息不能作為服務器的選項指定。為了這些選項,您可能需要修改s a f e _ mysqld。例如,如果服務器不能正確地拾取GMT 中的本地時區(local time zone)和返回時間值,可以設置TZ 環境變量以給該變量一個提示。如果用safe_mysqld 或mysql. ser ver啟動服務器,可以將時區設置增加到safe_mysqld 中。找到啟動服務器的命令行,並在該行之前增加下列命令:

TZ=US/Central
export TZ


  這個命令將TZ 設置為US Central 時區。您需要使用合適位置的時區。該語法是S o l a r i s 的,您的系統可能會有所不同。例如,設置TZ 變量的另一個常用語法為:

TZ=CST6CDT
export TZ


  如果修改了啟動腳本,當下次安裝MySQL時(如,升級到更新的版本),將失去這些修改,除非在之前將該啟動腳本拷貝到了其他地方。在安裝新的版本之後,將您的腳本與新安裝的腳本進行比較,以便看看重新建立還需要做什麼改動。

  2. 在啟動期間檢查表

  除了在系統引導時安排服務器的啟動外

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved