LNMP環境搭建(一):Mysql

安裝虛擬機

出於學習目的選擇最小安裝php

  • 選擇啓動項「第一項正常啓動、第二項是修復模式」

圖片描述

  • 更改主機名「重啓生效」
[root@localhost ~]# hostnamectl --static set-hostname centos7
[root@localhost ~]# reboot
  • 獲取虛擬機的 IP
Linux 操做系統的網卡設備的傳統命名方式是 eth0、eth一、eth2等,而 CentOS7提供了不一樣的命名規則,默認是基於固件、拓撲、位置信息來分配。這樣作的優勢是命名全自動的、可預知的,缺點是比 eth0、wlan0 更難讀,好比 ens33 。

CentOS 7 默認是不啓動網卡,編輯網卡配置 使「ONBOOT = YES」,重啓網絡服務html

[root@centos7 ~]# ip addr
[root@centos7 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@centos7 ~]# systemctl restart network
  • WIN 下使用 Xshell 鏈接到不一樣網段下的服務器(虛擬機)-待補
  • WIN 下使用 Xshell 鏈接到同網段下的服務器(虛擬機)
Secure Shell(安全外殼協議,簡稱SSH)是一種加密的網絡傳輸協議,可在不安全的網絡中爲網絡服務提供安全的傳輸環境

Xshell 鏈接需遠程服務器安裝有 openssh,CentOS系統默認安裝了opensshmysql

[root@centos7 ~]# rpm -qa | grep openssh-server
  • 添加 root 權限

切換 root 身份,爲 jiong 用戶添加 root 權限linux

[jiong@centos7 ~]$ su -
[root@centos7  ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
jiong   ALL=(ALL)       ALL

虛擬機快照保存現場c++

軟件安裝

  • 安裝 wget、telnet

建立軟件包存儲目錄,安裝wget、telnet、vimgit

[jiong@centos7 home]$ sudo mkdir soft
[jiong@centos7 soft]$ yum install wget
[jiong@centos7 soft]$ yum install telnet
[jiong@centos7 soft]$ yum install vim

編譯安裝

  • 編譯安裝簡述
在linux裏編譯安裝軟件會用到諸如 configure / make / makeinstall的命令,這些都是典型的使用GNU的autoconf和automake產生的程序的安裝步驟

make是用來編譯的,它從Makefile中讀取指令,而後編譯程序員

make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置github

  • 安裝開發者環境

紅帽系的linux,須要的開發者組件有以下幾種:sql

autoconf

automake

binutils

bison

flex

gcc

gcc-c++

gettext

libtool

make

patch

pkgconfig

redhat-rpm-config

rpm-build

rpm-sign

一個一個去源上找而且安裝是一件很是費時費力的工做,不過好在,yum管理器提供了一個很簡便的方式供咱們安裝。shell

  • 列出組件列表,安裝開發者工具組件
[jiong@centos7 ~]$ yum group list
[jiong@centos7 ~]$ sudo yum group install "Development Tools"
  • 安裝順序:Mysql Php Nginx

這是由於:MySQL 在安裝時會帶一個 MySQL 的函數庫,而這個函數庫在安裝 PHP 時會用到。PHP 安裝成功後會生成一個 php-fpm 進程提供 fastcgi 服務,安裝好 Apache 或者Nginx 若是要執行 PHP 須要進行相關設置。

MySQL 與 MariaDB 不兼容。若是在未刪除 MariaDB 的狀況下嘗試在任一服務器上進行安裝,安裝將終止並顯示一條錯誤消息以指向卸載 MariaDB

  • 卸載 mariadb

centos7 默認安裝了:「 mariadb-libs-5.5.56-2.el7.x86_64」

[jiong@centos7 ~]$ rpm -qa | grep mariadb
[jiong@centos7 ~]$ sudo yum remove mariadb-libs-5.5.56-2.el7.x86_64
  • 編譯安裝 MySQL 5.6.17

官方文檔:Source Installation System Requirements

  • 下載相關源碼

下載 Mysql, boost

[jiong@centos7 soft]$ cd /home/soft/
[jiong@centos7 soft]$ sudo wget https://github.com/mysql/mysql-server/archive/mysql-5.7.17.tar.gz
[jiong@centos7 soft]$ sudo https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
  • Mysql 的相關依賴
libaio  libaio-devel  bison  bison-devel  zlib-devel  openssl openssl-devel  ncurses  ncurses-devel libcurl-devel libarchive-devel  boost  boost-devel  lsof  wget gcc  gcc-c++ make cmake perl kernel-headers kernel-devel  pcre-devel screen
  • 安裝依賴
CMake是一個跨平臺的安裝(編譯)工具,能夠用簡單的語句來描述全部平臺的安裝(編譯過程)。

ncurses(new curses)是一個程序庫,它提供了API,能夠容許程序員編寫獨立於終端的基於文本的用戶界面。

Boost 庫是一個可移植、提供源代碼的 C++ 庫,做爲標準庫的後備,是 C++標準化進程的開發引擎之一。

卸載系統中低版本的 boost,編譯安裝 boost,安裝 ncurses-devel,bison

[root@centos7 ~]# rpm -qa boost
[root@centos7 ~]# rpm -e boost
[root@centos7 ~]# tar jxvf  boost_1_55_0.tar.bz2
[root@centos7 ~]# cd boost_1.55.0
[root@centos7 ~]# ./bootstrap.sh 
[root@centos7 ~]# ./b2  
[root@centos7 ~]# ./b2 install
[root@centos7 ~]# yum install ncurses-devel
[root@centos7 ~]# yum install bison
  • 編譯
[root@centos7 ~]# cd /home/soft/
  • DWITH_BOOST 引用前面編譯安裝好 boost 的路徑*
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=./bootst/boost_1_59_0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1
[root@centos7 ~]# make
[root@centos7 ~]# make install
[root@centos7 ~]# make clean
  • 若是報錯
[root@centos7 ~]# rm CMakeCache.txt
  • 相關參數的解釋:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql        //安裝路徑

 -DMYSQL_DATADIR=/usr/local/mysql/data          //數據文件存放位置

 -DSYSCONFDIR=/etc                              //my.cnf路徑

 -DWITH_MYISAM_STORAGE_ENGINE=1                 //支持MyIASM引擎

 -DWITH_INNOBASE_STORAGE_ENGINE=1               //支持InnoDB引擎

 -DWITH_MEMORY_STORAGE_ENGINE=1                 //支持Memory引擎

 -DWITH_READLINE=1                              //快捷鍵功能(我沒用過)

 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock  //鏈接數據庫socket路徑

 -DMYSQL_TCP_PORT=3306                          //端口
 
 -DENABLED_LOCAL_INFILE=1                       //容許從本地導入數據

 -DWITH_PARTITION_STORAGE_ENGINE=1              //安裝支持數據庫分區

 -DEXTRA_CHARSETS=all                           //安裝全部的字符集

 -DDEFAULT_CHARSET=utf8                         //默認字符

 -DDEFAULT_COLLATION=utf8_general_ci            //設置默認校對規則

依賴安裝

MySQL 被 Oracle 收購後,CentOS 的鏡像倉庫中提供的默認的數據庫也變爲了 MariaDB

mysql-devel 開發用到的庫以及包含文件。若是不做C開發,能夠不裝,任何 -devel 包都是這樣
mysql 客戶端 + 服務器
mysql-client客戶端,提供「mysql」命令行程序。
mysql-server 數據庫服務器
  • 下載 mysql 源安裝包、安裝 mysql 源
[root@centos7 ~]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

[root@centos7 ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
  • 檢查 yum 源是否安裝成功
[root@centos7 ~]# sudo yum repolist enabled | grep "mysql.*-community.*"

# mysql-connectors-community/x86_64        MySQL Connectors Community           74
# mysql-tools-community/x86_64             MySQL Tools Community                74
# mysql56-community/x86_64                 MySQL 5.6 Community Server          429
  • 安裝Mysql
[root@centos7 ~]# sudo yum install mysql-server
  • 禁用密碼策略, 指定密碼校驗策略
[root@centos7 ~]# sudo vi /etc/my.cnf

# 指定密碼校驗策略: 0=LOW, 1=MEDIUM, 2=STRONG

validate_password_policy=0

# 禁用密碼策略

validate_password = off

# 重啓

sudo systemctl restart mysqld
  • 更改密碼
[root@centos7 ~]# set password = password('123456');

數據庫設置

安裝mysql、設置開機自動、啓動服務

[root@centos7 ~]# systemctl enable mysqld.service
[root@centos7 ~]# systemctl start mysqld.service
  • 安全設置(官方腳本)
設置 root 密碼
禁止 root 帳號遠程登陸
禁止匿名帳號(anonymous)登陸
刪除測試庫
是否確認修改
[root@centos7 ~]# mysql_secure_installation
  • 修改編碼
[root@centos7 ~]# vi /etc/my.cnf
[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
  • 新建MySQL系統用戶和系統用戶組,爲 mysql 用戶添加密碼並設置爲不可登陸服務器
> -r: 添加系統用戶

    > -g: 指定要建立的用戶所屬組

    > -s: 新賬戶的登陸shell

    > -d: 新賬戶的主目錄

    > -M: 不要建立用戶的主目錄
[root@centos7 ~]# groupadd -r mysql
[root@centos7 ~]# useradd -r -g mysql -M mysql
[root@centos7 ~]# passwd mysql
[root@centos7 ~]# usermod -s /sbin/nologin mysql
  • 添加遠程鏈接數據庫用戶

容許 「數據庫」.「表」 TO '用戶名' @ % [任意IP] IDENTIFIED BY '密碼' WITH GRANT OPTION

mysql> GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY 'jiong' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'jiong'@'%' IDENTIFIED BY 'jiong' WITH GRANT OPTION;
mysql> flush privileges;

容許mysql遠程訪問,可使用如下三種方式:

改表
受權
// 改表
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
//受權
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  • 查看 Mysql 各目錄
MySQL> show variables like '%dir%';

+-----------------------------------------+----------------------------+
| Variable_name                           | Value                      |
+-----------------------------------------+----------------------------+
| basedir                                 | /usr/                      |
| binlog_direct_non_transactional_updates | OFF                        |
| character_sets_dir                      | /usr/share/mysql/charsets/ |
| datadir                                 | /var/lib/mysql/            |
| ignore_db_dirs                          |                            |
| innodb_data_home_dir                    |                            |
| innodb_log_group_home_dir               | ./                         |
| innodb_max_dirty_pages_pct              | 75                         |
| innodb_max_dirty_pages_pct_lwm          | 0                          |
| innodb_tmpdir                           |                            |
| innodb_undo_directory                   | .                          |
| lc_messages_dir                         | /usr/share/mysql/          |
| plugin_dir                              | /usr/lib64/mysql/plugin/   |
| slave_load_tmpdir                       | /tmp                       |
| tmpdir                                  | /tmp                       |
+-----------------------------------------+----------------------------+
  • 清除已有 iptables 規則
[root@centos7 ~]# iptables -F
[root@centos7 ~]# iptables -X
[root@centos7 ~]# iptables -Z
  • Navicat鏈接數據庫

直連:使用 mysql 帳戶(只能鏈接數據庫,沒法鏈接服務器)
SSH鏈接:待補充

心得體會

看官方文檔比沒目的地搜索效率好上許多,還能學習英文「笑」「谷歌翻譯真好」
學習依賴安裝,掌握姿式

----------------------------------------------------------DONE------------------------------------------------------------

相關文章

LNMP環境搭建(一):Mysql
LNMP環境搭建(二):Nginx
LNMP環境搭建(三):PHP

相關文章
相關標籤/搜索