实战三种方式部署Mysql5.7

发布于 2022-03-03  150 次阅读


前言

常见的 MySQL 安装方式有如下三种:

RPM 包方式:这种方式安装适合对数据库要求不太高的场合,安装速度快;
通用二进制包方式:安装速度相较于源码方式快,可以自定义安装目录。
源码编译安装:安装过程比较慢,机器性能不好的情况下,大约需要30分钟左右,通常适用于mysql定制化的安装,比如需要加入一些第三方的插件及依赖库等

RPM

首先去官网下载mysql捆绑包,然后上传服务器开始安装。

解压tar包

tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar

然后会得到这些包。

最后进行安装。

使用yum或rpm命令都可以。

我这里使用yum

yum -y install *

安装完成后查看默认配置文件在/etc/my.cnf

直接启动mysql

到这里mysql就已经部署完成啦,但是mysql登录密码是多少呢?

MySQL 5.7 以后,不在允许使用空密码进行登录,默认会初始化一个密码到 MySQL Error 日志中,配置参数 log-error= 指定的文件。

cat /var/log/mysqld.log | grep password

输入密码就成功登录啦

到这mysql的RPM部署方式就结束啦。


卸载步骤

卸载mysql包,删除相关目录。


通用二进制包

去官网下载二进制包,然后安装部署依赖环境。

创建mysql用户,安装mysql依赖gcc c++ libaio等。。

yum -y install make gcc-c++ cmake bison-devel ncurses-devel readline-devel libaio-devel perl libaio wget lrzsz vim libnuma* bzip2 xz

创建mysql用户

useradd -M -s /sbin/nologin -r mysql

创建mysql相关目录

mkdir -p /usr/local/mysql/data
解压mysql包到/usr/local/mysql

更改目录所有者及所属组

chown -R mysql.mysql /usr/local/mysql

初始化

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data

获得mysql的登录密码。

编辑mysql配置文件

Vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
# 取消密码验证
#skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# skip-grant-tables
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

拷贝启动文件到系统

设置开机自启

启动服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
Service mysql start

登陆

更改密码

完事!


编译安装

官网下载编译安装的包mysql-boost-5.7和boost-1.59

解压boost包到/usr/local/boost

解压mysql-boost-5.7并cd进去

安装依赖

yum -y install make gcc-c++ cmake bison-devel  ncurses-devel perl openssl-devel

创建mysql目录

执行编译参数

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/usr/local/mysql57/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

检查是否安装编译成功

echo $?
0代表成功,1代表失败
如果编译出错删掉CMakeCache.txt
继续编译安装
make && make install
vim /etc/profile
# 最后一行添加
export PATH=/usr/local/mysql57/bin:/usr/local/mysql57/lib:$PATH

#终端执行⬇️
source /etc/profile

#配置文件
[mysqld]
datadir=/usr/local/mysql57/data
socket=/usr/local/mysql57/mysql.sock
user = mysql

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/usr/local/mysql57/logs/mysqld.log
pid-file=/usr/local/mysql57/pids/mysqld.pid

[client]
default-character-set=utf8
socket=/usr/local/mysql57/mysql.sock


[mysql]
default-character-set=utf8
socket=/usr/local/mysql57/mysql.sock

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

初始化数据库

mysqld_safe --basedir=/usr/local/mysql57 --datadir=/usr/local/mysql57/data --user=mysql

拷贝mysql启动文件

Mysql解压路径/support-files/mysql.server /etc/init.d/mysqld57

并给予执行权限。

开机自启

chkconfig --add mysqld57
chkconfig mysqld57 on
chkconfig --list | grep mysqld57

大坑进行实践

Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql57/data/VM_159_140_centos.pid).
1.给予权限,执行 "chown -R mysql.mysql /usr/local/mysql57/data/" 然后重新启动mysqld
2.进程占用 执行"ps -ef|grep mysqld" 查看是否有mysqld进程,如果有就"kill" 掉
3.datadir目录,/etc/my.cnf查看在[mysqld]下有没有指定数据目录(datadir)
4.skip-federated字段问题,/etc/my.cnf配置文件注释掉的skip-federated字段
5.错误日志目录不存在,使用“chown” “chmod”命令赋予mysql所有者及权限


本当の声を響かせてよ