CentOS 7环境下安装MariaDB的三种方式:官方yum源安装、二进制包安装、源码安装。【附多实例安装】

目录

一,官方yum源格式安装过程

二、通用二进制格式安装mariaDB过程(含逻辑卷创建过程)

三、源码编译安装mariaDB过程

四、多实例安装mariaDB,以yum源安装为例

参考


我的环境:VM中的三台CentOS 7虚拟机。

实验内容:centos7(192.168.137.133)进行yum源配置安装和多实例安装实验;centos7(192.168.137.131)上二进制包安装;centos7(192.168.137.134)上源码安装。
准备文件:mariadb.com官网下载 mariadb-10.5.4-linux-systemd-x86_64.tar.gz 和 mariadb-10.5.4.tar.gz。

 

一,官方yum源格式安装过程

注意:虽然yum源安装方便,但是一般生产中不用这种方法,除非是测试时。

实验:centos7(192.168.137.133)上yum源配置安装。

1)检查环境

systemctl status firewalld    # 或iptables,防火墙确保关闭
getenforce   # SELinux确保关闭
rpm -q mariadb-server     
mariadb-server-5.5.65-1.el7.x86_64
rpm -q mariadb
mariadb-5.5.65-1.el7.x86_64
# 我之前用本地源安装的mariadb,用下面代码完整卸载掉。
yum history 
yum history undo 37
rpm -q mariadb          
rpm -q MariaDB-server    # 注意,mariadb官方源提供下载安装的,该大写的要大写才能管用,而yum本地源安装的mariadb即可检查

2)配置方法:MariaDB官网查看yum源配置方法,编辑我的配置文件 /etc/yum.repos.d/base.repo,根据官网提示,向该文件添加如下内容:

# MariaDB 10.5 [Stable] CentOS repository list - created 2020-08-02 03:56 UTC
# https://mariadb.org/download-test/
[mariadb]
name = MariaDB
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.5/centos7-amd64
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

3)安装

yum repolist    # 我更新后显示有88个
yum install -y mariadb-server
systemctl start mariadb
mysql        # 成功登入
systemctl stop mariadb
systemctl start mysqld
mysql        # 成功登入
systemctl stop mysqld

4)安全防护

which mysql_secure_installation 
mysql_secure_installation  # 看自己需求,我的回答是 enter, y, y, y, n, y, y,设置密码完成。
rpm -ql MariaDB-server    # 用官方提供的yum源,注意该大写的必须大写

有一点注意的是,mysql_secure_installation安全防护后,mysql 还是可以直接进入,因为我是在centos的root账户下操作,切换成wang用户后,mysql命令进入就不管用了,这和我用yum源安装的mariadb5.5版本还是不一样的,5.5版本执行mysql_secure_installation后mysql命令即使是root身份下也是登陆不进去的,必须 mysql -uroot -p才可以。

5)其他

ls /var/lib/mysql    # yum源安装的默认数据库路径

# 数据库路径修改为/data/mysqldb:
cat /etc/my.cnf       # 安装指示cd /etc/my.cnf.d
vim /etc/my.cnf.d/server.cnf
    [mysqld]
    datadir=/data/mysqldb   

# 修改数据库路径所属组所有者
mkdir /data/mysqldb
chown mysql.mysql  /data/mysqldb  
mysql_install_db --datadir=/data/mysqldb --user=mysql    # 数据库生成,可以在/data/mysqldb中查看


# 测试数据库是否成功配置生效:
ls /data/mysqldb/
systemctl restart mariadb
ls /data/mysqldb/
mysql
mysql> create database db1;
mysql> \! ls /data/mysqldb

二、通用二进制格式安装mariaDB过程(含逻辑卷创建过程)

实验:centos7(192.168.137.131)上二进制安装 mariadb-10.5.4-linux-systemd-x86_64.tar.gz

二进制格式安装一般在生产中比较常用。

1)检查环境
同章节一本步骤。

2)上传 解压缩二进制包并解压缩文件创建软链接 && 创建mysql用户并修改解压缩文件的执行权限 && 添加./mysql/bin目录到系统PATH

getent passwd mysql    # 确认mysql用户名是否存在,不存在则执行下行
useradd -r -d /data/mysqldb -s /sbin/nologin mysql   #  创建mysql用户,数据文件路径/data/mysqldb
getent passwd mysql    # mysql:x:983:977::/data/mysqldb:/sbin/nologin


rz        #  上传 mariadb-10.5.4-linux-systemd-x86_64.tar.gz 至本机
# 直接下载.tar.gz
# wget https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-10.5.4/bintar-linux-systemd-x86_64/mariadb-10.5.4-linux-systemd-x86_64.tar.gz
ls

tar -xvf mariadb-10.5.4-linux-systemd-x86_64.tar.gz -C /usr/local/  # 解压缩到/usr/local
cd /usr/local
ln -s mariadb-10.5.4-linux-systemd-x86_64/ mysql    # 创建解压缩文件的软链接
chown -R root: mysql/      # 修改软链接文件的所属组所有者

echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh  # 添加/mysql/bin目录文件到PATH路径
. /etc/profile.d/mysql.sh   # 生效配置文件
echo $PATH

3)创建逻辑卷,用于存放数据库。创建&设置mysql家目录:/data/mysqldb

fdisk -l       # 查看目前硬盘,只有一个200G的。
# VM中加一块硬盘(SCSI(S)--200GB--将虚拟磁盘存储为单个文件),用于创建逻辑分区。
lsblk
echo '- - -' > /sys/class/scsi_host/host0/scan  # scan disk
lsblk   # 发现多了200G的sdb硬盘

# 并不打算对该硬盘分区,直接把整个硬盘作为逻辑卷管理使用。
pvcreate /dev/sdb       # 物理卷
pvdisplay   
vgcreate vg0 /dev/sdb     # 创建卷组vg0,物理卷加入到卷组
lvcreate -n lv_mysql -l 100%FREE vg0   # 创建逻辑卷lv_mysql,用光卷组vg0
lvs       # 查看逻辑卷
mkfs.xfs /dev/vg0/lv_mysql    # 创建文件系统=格式化
blkid     #  新增加的文件系统列表

# 逻辑卷挂载到一个目录
getent passwd mysql   # 查看之前设置mysql的家目录:/data/mysqldb
vim /etc/fstab        # [:r!blkid /dev/vg0/lv_mysql查UUID]
UUID="750dbbb2-28fe-4cc0-92ed-bf9c8084fbdd" /data/                xfs     defaults        0 0 
mount -a   # 挂载生效
df -h      # 查看是否挂载成功

# 创建&设置mysql家目录
mkdir /data/mysqldb    # 创建之前设置mysql的家目录
ll -d /data/mysqldb    # drwxr-xr-x 2 root root 6 Aug  2 14:10 /data/mysqldb
chown mysql.mysql /data/mysqldb     #  修改该家目录的所有者所属组
ll -d /data/mysqldb    # drwxr-xr-x 2 mysql mysql 6 Aug  2 14:10 /data/mysqldb
chmod 770 /data/mysqldb 	    # 修改权限
ll -d /data/mysqldb    # drwxrwx--- 2 mysql mysql 6 Aug  2 14:10 /data/mysqldb

6)生成或安装数据库文件

cd /usr/local/mysql/
# /usr/local/mysql目录下运行下面命令,在/data/mysqldb中生成数据库,用户是mysql:
scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
# 或 scripts/mariadb-install-db --datadir=/data/mysqldb --user=mysql

ll /data/mysqldb/

7)启动数据库前的文件配置

cp -a /etc/my.cnf /etc/my.cnf.bak  # 备份习惯要有
vim /etc/my.cnf
## [mysqld]中添加(或修改)以下内容
    [mysqld]
    port = 3306
    datadir=/data/mysqldb
    socket=/tmp/mysql.sock
    symbolic-links=0
    [mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid
    [client]
    port = 3306
    socket = /tmp/mysql.sock

# 创建 /tmp/mysql.sock 软链接
# my.cnf 中socket=/data/mysqldb/mysql.sock时,需要执行下面命令,不要问为什么,多次试验后就是需要在tmp中获取mysql.sock
ln -s /data/mysqldb/mysql.sock /tmp/mysql.sock

8) 启动服务文件 & 启动服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --list
chkconfig --add mysqld
chkconfig --list
systemctl start mysqld   # 老版本,service mysqld start

9)安全防护:

which mysql_secure_installation
mysql_secure_installation   
mysql

 

三、源码编译安装mariaDB过程

实验:centos7(192.168.137.134)上源码安装 mariadb-10.5.4.tar.gz

1)检查环境
同章节一本步骤。

2)yum安装编译过程需要用到的包

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel

提示:如果出错,执行rm- f CMakeCache.txt

确认mysql用户名是否存在(getent passwd mysql ),不存在则准备用户账号(useradd -r -s /sbin/nologin mysql )。

3)源码编译与安装

rz
ls
tar xvf mariadb-10.5.4.tar.gz
mkdir -pv /data/mysqldb

# 编译
cd
cd mariadb-10.5.4/
cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysqldb/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWARP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

# 加2个CPU到4,加快make过程
make -j 4 && make install

4)生成数据库文件
      

cd /usr/local/mysql/
# /usr/local/mysql目录下运行下面命令,在/data/mysqldb中生成数据库,用户是mysql:
scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql --basedir=/app/mysql
ll /data/mysqldb/

5)启动数据库前的文件配置

cp -a /etc/my.cnf /etc/my.cnf.bak
vim /etc/my.cnf
    ## [mysqld]中添加(或修改)以下内容
    [mysqld]
    port = 3306
    datadir=/data/mysqldb
    socket=/app/mysql/mysql.sock
    symbolic-links=0
    [mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid
    [client]
    port = 3306
    socket = /app/mysql/mysql.sock
    default-character-set = utf8

# 创建 /tmp/mysql.sock 软链接
# my.cnf 中socket=/app/mysql/mysql.sock时,需要执行下面命令:
ln -s /data/mysqldb/mysql.sock /tmp/mysql.sock

6)服务启动文件

cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld 
chkconfig --list
chkconfig --add mysqld
chkconfig --list
systemctl start mysqld  # service mysqld start
# failed 可能因为mysql.sock所在的/app/mysql/没有写权限
setfacl -R -m u:mysql:rwx /app/mysql/
systemctl start mysqld   # service mysqld start  = OK
mysql
mysql> show variables like "%basedir%"   # basedir  | /app/mysq

7)安全防护

方法同上几章。

四、多实例安装mariaDB,以yum源安装为例

实验:centos7(192.168.137.133)上多实例安装

1)本实验基于第一章基础上进行:实验:centos7(192.168.137.133)上yum源配置安装。该实验的数据库配置在/data/mysqldb中,而一般默认安装在/var/lib/mysql中。撤销第一章步骤5的配置方法,使数据文件暂时默认在/var/lib/mysql中。

vim /etc/my.cnf.d/server.cnf   # 注释掉原始配置,删除/data/mysqldb,避免配置冲突
    [mysqld]
    # datadir=/data/mysqldb    # 添加存放数据库目录,默认/var/lib/mysql。

rpm -ql  MariaDB-server | grep multi
    /usr/bin/mariadbd-multi
    /usr/bin/mysqld_multi          # 这种方法局限性大,不能做不同版本的多实例
    /usr/share/man/man1/mariadbd-multi.1.gz
    /usr/share/man/man1/mysqld_multi.1.gz
    /usr/share/mysql/mysqld_multi.server

2)不同端口号(不同MariaDB实例)下的日志、数据库等文件的规划路径:

mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv
tree /mysqldb/

getent passwd mysql
# mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

chown -R mysql.mysql /mysqldb/
# mysql> show variables like '%basedir%';
ll /mysqldb/


3)安装数据库文件:【mysql> show virables like '%basedir%'】

mysql_install_db --datadir=/mysqldb/3306/data --user=mysql
mysql_install_db --datadir=/mysqldb/3307/data --user=mysql
mysql_install_db --datadir=/mysqldb/3308/data --user=mysql
tree /mysqldb/

4)配置文件(三个配置文件中都注释掉!includedir /etc/my.cnf.d):

vim /mysqldb/3306/etc/my.cnf
    [mysqld]
    port=3306
    datadir=/mysqldb/3306/data
    socket=/mysqldb/3306/socket/mysql.sock
    symbolic-links=0
    [mysqld_safe]
    log-error=/mysqldb/3306/log/mariadb.log
    pid-file=/mysqldb/3306/pid/mariadb.pid
cp -a /mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/my.cnf
cp -a /mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/my.cnf
vim /mysqldb/3307/etc/my.cnf  # 【替换:%s/3306/3307/】
vim /mysqldb/3308/etc/my.cnf  # 【:%s/3306/3308/】

6)mysqld的启动脚本:3套文件配置。

(192.168.137.131)二进制包安装实验的中/etc/init.d/mysqld传入windows,依照mysqld编写如下,写完成后复制到对应版本/端口号的根下,三个脚本只有port不一样。

#!/bin/bash

port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/mysqldb"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"

function_start_mysql()
{
    if [ ! -e "$mysql_sock" ];then
        printf "Starting MySQL...\n"
        ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
    else
        printf "Mysql is running...\n"
        exit
    fi
}

function_stop_mysql()
{
    if [ ! -e "$mysql_sock" ];then
        printf "Mysql is stopped...\n"
        exit
    else
        printf "Stopping MySQL...\n"
        ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
    fi
}

function_restart_mysql()
{
    printf "Restarting MySQL...\n"
    function_stop_mysql
    sleep 2
    function_start_mysql
}

case $1 in
start)
    function_start_mysql
;;
stop)
    function_stop_mysql
;;
restart)
    function_restart_mysql
;;
*)
    printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
cp /mysqldb/3306/mysqld /mysqldb/3307/   # 【注:替换port=3307即可】
cp /mysqldb/3306/mysqld /mysqldb/3308/   # 【注:替换port=3308即可】

# 注意给mysqld加执行权限才能启动服务。
ll /mysqldb/3308/mysqld
# -rw-r--r-- 1 root root 936 Aug  3 12:33 /mysqldb/3308/mysqld
chmod 700 /mysqldb/3308/mysqld
chmod 700 /mysqldb/3307/mysqld
chmod 700 /mysqldb/3306/mysqld
ll /mysqldb/3306/mysqld
# -rwx------ 1 root root 936 Aug  3 12:31 /mysqldb/3306/mysqld

7)启动服务

# 启动服务
/mysqldb/3306/mysqld start
/mysqldb/3307/mysqld start
/mysqldb/3308/mysqld start

# 连接3308数据库
mysql -S /mysqldb/3308/socket/mysql.sock
mysql> \s   # [可以看到是3308端口开启]
mysql> show variables like '%port%';
# 口令设置:
mysql> select user,host,password from mysql.user;   # 查看空口令
mysql> update mysql.user set password=password("centos") where user='root';
# 有password给root加密。
mysql> flush privileges;    # 权限生效

8)注:

修改mysqld文件可以完善连接加密机制。

 

参考

https://edu.aliyun.com/course/1715

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值