站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

邁向 RHCE 之路 (Day30) - MySQL 資料庫伺服器

前言

MySQL 由於效能好、低成本、穩定性夠,對於中小企業來說是最好的選擇,目前分為可免費使用的 社群版本(Community Edition),以及需要授權費用的 標準版(Standard Edition)、企業版(Enterprise Edition)、電信營運版(Cluster Carrier Grade Edition),關於版本功能詳細資訊可參考 [MySQL 授權版本功能比較]

實作環境

安裝 MySQL 檔案分享套件

請使用 yum 指令搭配 MySQL 套件名稱 mysql-server 即可進行套件安裝。

 #yum -y install mysql-server   //安裝 MySQL 套件
 #rpm -qa mysql-server          //查詢 MySQL 套件版本
  mysql-server-5.1.52-1.el6_0.1.i686
 #rpm -ql mysql                 //查詢 MySQL 設定檔路徑
  /usr/bin/msql2mysql
  ...略...

設定 IPTables 防火牆規則

MySQL 資料庫服務屆時啟動時會 TCP 協定 Port 3306,因此必須修改 IPTables 防火牆規則以便等一下進行測試,請修改 IPTables 防火牆規則設定檔「/etc/sysconfig/iptables」加上允許相關 Port 號的規則,修改防火牆規則後請使用指令「service iptables restart」來重新啟動防火牆服務,以便防火牆規則套用生效,並且使用「service iptables status」指令來確定目前防火牆規則是否有允許相關 Port 號。

 #vi /etc/sysconfig/iptables          //修改防火牆規則(加入如下六行)
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
 #service iptables restart            //重新啟動防火牆服務
 #service iptables status | grep 3306 //查看防火牆規則是否套用生效
  5  ACCEPT  tcp  --  0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:3306
 #chkconfig mysqld on                 //開機自動啟動 MySQL 服務

修改 MySQL 設定檔

接著修改 MySQL 設定檔 「/etc/my.cnf」,主要為修改資料庫預設存放路徑 「datadir」 的設定,將資料庫存放路徑由預設的 「/var/lib/mysql」 修改至 「/home/db」 掛載點,下列僅列出設定檔需要修改的地方其預設值及修改後的內容:

 #vi /etc/my.cnf           //修改 MySQL 設定檔
  datadir=/var/lib/mysql   //預設值,資料庫預設存放路徑
  datadir=/home/db         //修改後
 #mkdir /home/db           //建立資料夾

修改 SELinux 設定值

修改 SELinux 安全機制的設定值,因為將 MySQL 資料庫預設存放路徑由 「/var/lib/mysql」 修改至 「/home/db」,因此新的資料夾其 SELinux 安全機制的權限勢必與原來的資料夾不同,若不進行修改的話屆時啟動 MySQL 服務時便可能會因為 SELinux 權限問題造成無法啟動 MySQL 服務的狀況。

 #ls -dZ /var/lib/mysql /home/db
  drwxr-xr-x. root  root  unconfined_u:object_r:home_root_t:s0 /home/db
  drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql

接著透過「semanage fcontext -a -t」指令配合 SELinux 權限 「mysqld_db_t」,指定「/home/db」資料夾設定此權限為 「SELinux預設權限」,之後使用「restorecon -Rv」指令把資料夾還原至剛才設定的 SELinux 預設權限,若執行 semanage 指令發現系統中沒有此一指令請安裝 policycoreutils-python 套件即可 (yum -y install policycoreutils-python)。

 #semanage fcontext -a -t mysqld_db_t "/home/db(/.*)?"  //設定 SELinux 預設權限
 #restorecon -Rv /home/db                               //還原 SELinux 權限   
 #chown mysql:mysql /home/db                            //設定資料夾權限
 #ls -dZ /var/lib/mysql /home/db                        //查看資料夾 SELinux 權限
  drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /home/db
  drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql

啟動 MySQL 服務

完成修改 SELinux 安全機制權限設定後,我們可以放心啟動 MySQL 相關服務,請使用指令「service mysqld start」來啟動 MySQL 服務,並且於服務啟動後使用「netstat」指令來查看系統是否開啟了相關 Port 號,以及使用「ps」指令來查看相關執行序是否運作。

 #service mysqld start        //啟動 MySQL 服務
  Initializing MySQL database:  Installing MySQL system tables...
  ...略...
  Starting mysqld:           [  OK  ]
 #netstat -tunpl |grep :3306  //查看是否開啟 Port 3306
  tcp  0  0 0.0.0.0:3306    0.0.0.0:*   LISTEN   6298/mysqld
 #ps aux |grep mysqld
  root  6209  0.0  0.1  5080  1356 pts/0   S  15:20  0:00 /bin/sh /usr/bin/mysqld_safe
  ...略...

設定 MySQL 管理密碼

MySQL 資料庫管理者預設帳號名稱為 「root」 (請別跟 CentOS 作業系統的超級管理者 root 帳號搞混),並且可以透過 「mysqladmin」 指令來設定其密碼,下列操作為將 MySQL 資料庫管理者密碼設定為 「123456」,若日後您需要修改管理密碼,則在指令「password」前面加上「-p」參數即可進行變更。

 #mysqladmin -u root password '123456'  //設定 MySQL 管理密碼
 #mysql -u root -p                      //登入資料庫
  Enter password:                       //輸入管理密碼
  ...略...
  mysql> show databases;                //查看資料庫清單
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | test               |
  +--------------------+
  3 rows in set (0.00 sec)
  mysql> exit                           //離開資料庫
  Bye
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com