安装虚拟机
出于学习目的选择最小安装
选择启动项「第一项正常启动、第二项是修复模式」
- 更改主机名「重启生效」
[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------------------------------------------------------------
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。