安装虚拟机

出于学习目的选择最小安装

  • 选择启动项「第一项正常启动、第二项是修复模式」

图片描述

  • 更改主机名「重启生效」
[root@localhost ~]# hostnamectl --static set-hostname centos7
[root@localhost ~]# reboot
  • 获取虚拟机的 IP
Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等,而 CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、wlan0 更难读,比如 ens33 。

CentOS 7 默认是不启动网卡,编辑网卡配置 使「ONBOOT = YES」,重启网络服务

[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系统默认安装了openssh

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

切换 root 身份,为 jiong 用户添加 root 权限

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

虚拟机快照保存现场

软件安装

  • 安装 wget、telnet

创建软件包存储目录,安装wget、telnet、vim

[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中读取指令,安装到指定的位置

  • 安装开发者环境

红帽系的linux,需要的开发者组件有如下几种:

autoconf

automake

binutils

bison

flex

gcc

gcc-c++

gettext

libtool

make

patch

pkgconfig

redhat-rpm-config

rpm-build

rpm-sign

一个一个去源上找并且安装是一件非常费时费力的工作,不过好在,yum管理器提供了一个很简便的方式供我们安装。

  • 列出组件列表,安装开发者工具组件
[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


半斤桃花
83 声望8 粉丝

学无止境