二进制源码包编译安装 MySQL
1. 安装准备
- 系统中安装 /升级 cmake工具,从MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。
- 系统中安装 /升级 GCC 编译器
1.1 Centos7 升级 cmake 版本
[WARNING] CMake 3.1 or higher is required. —— 解决 cmake 编译时版本过低问题
官网下载:https://cmake.org/download/
wget https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1.tar.gz # 下载二进制包
tar zxf cmake-3.18.1.tar.gz # 解压包
cd cmake-3.18.1
./configure # 编译
make && make install # 安装
ln -s /usr/bin/camke3 /usr/local/bin/camke # 添加软连接
1.2 Centos7 升级 gcc 版本 —— 使用scl 软件集
- Centos7 gcc版本默认4.8.3,Red Hat 为了软件的稳定和版本支持,yum 上版本也是4.8.3,所以无法使用yum进行软件更新,所以使用scl。
- scl软件集 (Software Collections),是为了给 RHEL/CentOS 用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。
步骤一,配置国内镜像(阿里云)的centos源 及优化安装 scl 源
官方手册:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b116ul39k
1,备份原来的yum源
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak;
2,下载CentOS-Base.repo 到 /etc/yum.repos.d/
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo;
3,非阿里云ECS用户会出现 Couldn’t resolve host ‘mirrors.cloud.aliyuncs.com’ 信息,不影响使用。用户也可自行修改相关配置: eg:
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum repolist
4,设置 centos 源后安装 scl 源
yum insatall centos-release-scl
5,配置优化,使用 阿里云的镜像路径替换生成的 scl 源自带的官方路径 (可以提高访问效率!非不选操作!)
4,清理缓存并生成新的缓存
sudo yum clean all ;
sudo yum makecache;
**步骤二,安装新版本的gcc **
yum install -y devtoolset-7-gcc*
scl --list 或 scl -l # 查看从 SCL 中安装的包的列表
**步骤二,切换新版本的gcc **
gcc -v # 切换前,查看当前 gcc 版本
scl enable devtoolset-7 bash # 使用scl创建一个 scl包的bash会话环境
which gcc # 查看切换后,当前 bash会话环境 的 gcc 版本
gcc --version # version(版本)
**步骤四,使用exit 退出当前scl版本的bash环境 **
2. Mysql8 安装
2.1 Mysql8 编译安装
官网下载:
wget
tar zxf mysql-boost-8.0.21.tar.gz # 解压包
mkdir build # 创建安装根目录(/build)
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ # 指向mysql安装目录
-DMYSQL_DATADIR=/data/mysql \ # 指向mysql数据文件目录 (/data/mysql)
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ # 数据库socket文件的路径
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ # 安装 innodb 存储引擎
-DSYSCONFDIR=/etc \
-DENABLED_LOCAL_INFILE=1 \ # 允许从本地导入数据
-DWITH_EXTRA_CHARSETS=all \ # 扩展字符集
-DDEFAULT_CHARSET=utf8 \ # 使用 utf8 字符
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \ # 校验字符
-DWITH_BOOST=/root/mysql-8.0.21/boost/boost_1_72_0/
make j2
make install
排除编译错误
2.2 添加系统配置
启动脚本配置
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysqld # 拷贝启动脚本
vim /etc/init.d/mysqld
[mysqld]
basedir=/usr/local/lnmp/mysql
datadir=/data/mysql
socket=/data/mysql/mysql.sock
#skip-grant-tables
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
添加 mysql 环境变量
cd ~
vim .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/lnmp/php/bin:/usr/local/mysql/bin # 添加 mysql 执行路径
export PATH
source .bash_profile
初始化
useradd -M -d /usr/local/lnmp/mysql/ -s /sbin/nologin mysql # 创建管理用户
mkdir -p /data/mysql # 创建数据目录(/data/mysql)
chown mysql.mysql /data/mysql # 添加权限
mysqld --initialize --user=mysql # 初始化
2.3 启动mysql服务
/etc/init.d/mysqld start # 启动 mysql 服务
Starting MySQL.Logging to '/data/mysql/adai003.err'.
........ SUCCESS!
检查mysql服务状态
ps aux |grep mysql
netstat -lntp
修改重置 MySQL 管理员密码
初始登录设置
mysql -p # 初始无密码登陆
mysql> alter user root@localhost identified by 'Westos+008'; # 创建 MySQL 管理员(root),以及本机访问时管理员密码 'Westos+008'
mysql> flush privileges; # 刷新
当遗忘管理员密码时的解决方案
# vim /etc/my.cnf
skip-grant-tables # 添加参数
# /etc/init.d/mysqld restart
# mysql -p
mysql> update mysql.user set authentication_string='' where user='root';
# vim /etc/my.cnf
#skip-grant-tables //注释或删除参数
# /etc/init.d/mysqld restart
# mysql -p
mysql> alter user root@localhost identified by 'Westos+007';
mysql> flush privileges;
MySQL 主从复制机制
主master : 172.25.1.2
从slave : 172.25.1.5
一,安装部署数据库
1.迁移复制数据库:将 主master 的数据库文件 拷贝传输到 从slave 主机 (确保安装环境一致)
2.数据库管理配置
二,配置主从同步
vim /etc/my.cnf # 为主从节点设置不同的server-id # server-id 为 不重复的 正整数!!
[mysqld]
log-bin=/usr/local/mysql/binlog
server-id=1
binlog-do-db = cmdb
datadir=/data/mysql
socket=/data/mysql/mysql.sock
......
master创建复制用户:
CREATE USER ‘repl’@‘172.25.0.%’ IDENTIFIED BY ‘Westos+007’; # 创建 用于主从复制的 用户 repl
GRANT REPLICATION SLAVE ON . TO ‘repl’@‘172.25.0.%’; # 授予 用户 repl 从主master复制到slave从的权限 ’ REPLICATION SLAVE ’
flush prvileges; # 刷新是配置生效
slave上配置master:
vim /etc/my.cnf
server-id=2
CHANGE MASTER TO
-> MASTER_HOST=‘172.25.0.2’, # 主master 的 IP
-> MASTER_USER=‘repl’, # 复制时的用户身份
-> MASTER_PASSWORD=‘Westos+007’, # 复制的用户用户密码
-> MASTER_LOG_FILE=‘mysql-bin.000001’, # 复制的文件名
-> MASTER_LOG_POS=156, # 文件开始复制的位置(标签)
-> GET_MASTER_PUBLIC_KEY=1; # 加密认证参数
phpMyAdmin
简介:
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便
1)phpMyAdmin下载 、解压、启动
官网下载:https://www.phpmyadmin.net/donate/
unzip phpMyAdmin-5.0.2-all-languanges.zip
mv phpMyAdmin-5.0.2-all-languanges /usr/local/nginx/html/phpMyAdmin # 重命名
mkdir /usr/local/nginx/html/phpMyAdmin/tmp # 创建 phpMyAdmin 缓存模板文件的目录(tmp)
cd ~
/etc/init.d/php-fpm start # 启动 PHP
附:
Socket (套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口
2)配置 config 文件
#cd /usr/local/php/lib/
#vim php.ini # 在 PHP 中设置 指定MySQL 的 sock
pdo_mysql.default_socket=/data/mysql/mysql.sock # MySQL
mysqli.default_socket=/data/mysql/mysql.sock
#cd ~
#/etc/init.d/php-fpm restart # 重启 PHP
#cd /usr/local/nginx/html/phpMyAdmin/
#cp config.sample.inc.php config.inc.php # 用模板配置文件创建 phpMyAdmin 配置文件
$cfg['PmaAbsoluteUri'] = '172.25.1.2'; # 设置访问 172.25,1.2主机
$cfg['Servers'][$i]['host'] = 'localhost'; # MySQL(Master) 和该 phpMyAdmin 在同一服务器
$cfg['Servers'][$i]['user'] = 'root'; # 默认为 ' root '
fg['Servers'][$i]['password'] = ''; # 默认为 ' password '
$cfg['Servers'][$i]['auth_type'] = 'cookie'; # 认证
$cfg['blowfish_secret'] = '@@@@@@@@@@@@@@@@@@@@'; # 设置长字符串为密码即可
浏览测试:http://172.25.1.2/phpMyAdmin
附:phpMyAdmin 常用配置参数设置说明
第一步:位置访问网址
$cfg['PmaAbsoluteUri'] = ' '; # 填写 phpMyAdmin 的访问网址。
第二步:MySQL 主机信息
$cfg['Servers'][$i]['host'] = 'localhost'; # MySQL hostname or IP address 填写 localhost 或 MySQL 所在服务器的 ip 地址,如果 MySQL 和该 phpMyAdmin 在同一服务器,则按默认 localhost
$cfg['Servers'][$i]['port'] = ''; # MySQL port - leave blank for default port MySQL 端口,默认为 3306,保留为空即可,如果您安装 MySQL 时使用了其它的端口,需要在这里填写。
第三步:MySQL用户名和密码
$cfg['Servers'][$i]['user'] = 'root'; # 填写 MySQL 访问 phpMyAdmin 使用的 MySQL 用户名,默认为root。
fg['Servers'][$i]['password'] = ''; # 填写对应上述 MySQL 用户名的密码。
第四步:认证方法
$cfg['Servers'][$i]['auth_type'] = 'cookie';
# 考虑到安全的因素,建议这里填写 cookie。在此有四种模式可供选择,cookie,http,HTTP,config
# config 方式即输入 phpMyAdmin 的访问网址即可直接进入,无需输入用户名和密码,是不安全的,不推荐使用。
# 当该项设置为 cookie,http 或 HTTP 时,登录 phpMyAdmin 需要数据用户名和密码进行验证,具体如下:PHP 安装模式为 Apache,可以使用 http 和 cookie;
第五步:短语密码(blowfish_secret)的设置
$cfg['blowfish_secret'] = '';
# 如果认证方法设置为 cookie,就需要设置短语密码,设置为什么密码,由您自己决定,这里不能留空,否则会在登录 phpMyAdmin 时提示的错误。