從零搭建LNMP環境(三) - 安裝MySQL資料庫伺服器

管宜堯發表於2015-01-04

廢話不多說,雖然可以通過yum直接安裝MySQL,但是為了能夠對安裝過程有一個比較清晰的認識, 我們這裡還是使用原始碼編譯安裝。

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.21.tar.gz
$ tar -zxvf mysql-5.6.21.tar.gz
$ cd mysql-5.6.21

檔案已經下載並且解壓好了,在安裝之前,我們需要為mysql建立名為mysql的使用者名稱和使用者組。

$ sudo groupadd mysql
$ sudo useradd -r -g mysql mysql

建立好使用者名稱和組之後,就可以進行編譯安裝了

$ cmake .
$ make
$ sudo make install

編譯過程比較漫長,耐心一點

如果沒有安裝cmake,則需要先安裝

$ sudo yum install cmake
$ sudo yum install gcc-c++

如果提示

Warning: Bison executable not found in PATH

則需要安裝bison

$ sudo yum install bison

如果出現以下錯誤

-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:85 (MESSAGE):
  Curses library not found.  Please install appropriate package,

  remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.

則需要安裝

$ sudo yum install ncurses-devel

經過漫長的編譯過程,我們的mysql終於安裝到了/usr/local/mysql目錄,接下來,我們需要對mysql 進行相應的配置,使得mysql變得可用。

$ cd /usr/local/mysql/
$ sudo chown -R mysql .
$ sudo chgrp -R mysql .
$ sudo scripts/mysql_install_db --user=mysql

這裡的mysql_install_db指令碼只有在手動編譯安裝mysql的時候需要,該指令碼為mysql建立了授權表。

大多數的mysql安裝是屬於root使用者的,但是必須保證data目錄是資料mysql使用者。

$ sudo chown -R root .
$ sudo chown -R mysql data

最後,我們需要建立mysql的配置檔案

$ sudo cp support-files/my-default.cnf /etc/my.cnf

配置MySQL開機啟動

如果希望在系統啟動的時候mysql也能夠自動的啟動,可以執行下面的命令

$ sudo cp support-files/mysql.server /etc/init.d/mysql.server
$ sudo chmod u+x /etc/init.d/mysql.server
$ sudo chkconfig --add mysql.server

執行chkconfig |grep mysql看到如下,特別是執行級別3為啟用,則說明設定成功。

$ chkconfig |grep mysql
mysql.server       0:關閉    1:關閉    2:啟用    3:啟用    4:啟用    5:啟用    6:關閉

可以通過mysql.server指令碼啟動和關閉mysql。

$ sudo /etc/init.d/mysql.server [start|stop]

如果要手動操作的話,啟動mysql的話使用命令:

$ sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &

關閉mysql:

$ ./mysqladmin -u root shutdown

修改root賬號密碼

新安裝的mysql資料庫的root賬號是沒有設定密碼的,因此,所有人都可以進行訪問,為了安全起見, 我們需要為root賬號設定一個密碼。

$ /usr/local/mysql/bin/mysql -uroot
mysql> SELECT User, Host, Password FROM mysql.user;
+------+-----------------------+----------+
| User | Host                  | Password |
+------+-----------------------+----------+
| root | localhost             |          |
| root | localhost.localdomain |          |
| root | 127.0.0.1             |          |
| root | ::1                   |          |
|      | localhost             |          |
|      | localhost.localdomain |          |
+------+-----------------------+----------+
6 rows in set (0.00 sec)

這裡User一列為空的是匿名使用者資訊,使用mysql直接登陸的時候,沒有提供賬號的話, 就會以該使用者的身份登陸資料庫,如果不需要該使用者的話,可以刪除掉該使用者資訊。

mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'localhost.localdomain';

通常我們有三種方式為mysql使用者設定密碼:

第一種方式是使用SET PASSWORD,使用該指令,我們需要登陸到mysql。

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('root');
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('root');
Query OK, 0 rows affected (0.00 sec)

第二種方式更加直接,使用UPDATA直接修改資料表。

mysql> UPDATE mysql.user SET Password = PASSWORD('root') WHERE User = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 4  Changed: 1  Warnings: 0

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

這裡的FLUSH語句讓資料庫重新載入授權表,否則需要等下次重啟才能生效。

第三種方式是使用mysqladmin命令,不過這種方式不能為'root'@'127.0.0.1''root'@'::1' 修改密碼。

shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"

相關文章