RPM依赖包下载地址
下载地址:http://mirrors.neusoft.edu.cn/mariadb/yum/10.2.43/centos7-amd64/rpms/ (比较快,注意自己选择的版本)
http://yum.mariadb.org/10.2/centos7-amd64/rpms/(比较慢)
http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/(阿里云源仅仅下载了boost-*这个rpm)
可能每个服务器缺失的依赖包都不同,可以去上面的这些网址中去找。
如果想安装其他版本的MariaDB,可以去开源镜像站上去下载其他版本的MariaDB的rpm依赖包。去替换文件夹中的MariaDB的rpm来进行安装。
我在服务器中缺失的依赖包放在了同级目录下的文件夹中,不想重新下载。可直接传到服务器中。如果执行完依赖包后还有缺失,再去下载缺失的依赖包。
前期准备
1、挂载硬盘
数据库存储路径这里,要按照 服务器本身存储路径,一般情况下服务器的硬盘是已经被挂载上的。但是为了防止硬盘没有挂载,也为了查看各个目录存储空间的大小。可以使用下面这个命令进行查看。
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 30G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 29G 0 part ├─centos-root 253:0 0 27G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk sr0 11:0 1 4.2G 0 rom [root@localhost ~]#
注意:最后这个mountpoing的意思是挂载点 ,如果type类型是disk(硬盘)且没有挂载点。就证明这个硬盘还没有被挂载,需要你先去把硬盘给挂载上,在进行数据库存储路径的配置。
[root@localhost ~]# mkdir /backup # 新建一个文件夹作为挂载点 [root@localhost ~]# cd / # 移动至根目录下 [root@localhost /]# ls # 这里已经有这个文件夹了 backup bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var yumiso [root@localhost /]# mount /dev/vdc /backup # 挂载硬盘,下面会报错。是因为没有对硬盘进行格式化。 mount: /dev/sdb is write-protected, mounting read-only mount: unknown filesystem type '(null)' # Mount:未知的文件系统类型'(null)' [root@localhost /]# mkfs.ext4 /dev/vdc # 对硬盘进行格式化(格式为ext4) mke2fs 1.42.9 (28-Dec-2013) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y # 这里选y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242880 blocks 262144 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost /]# mount /dev/sdb /backup # 这里在执行一次挂载命令就可以了 [root@localhost /]# blkid /dev/vdc # 查看挂载硬盘的UUID,复制以下。写到下面的配置文件中,实现永久挂载。 /dev/sdb: UUID="6384d556-f444-48ee-8f1d-5257f0c350aa" TYPE="ext4" 用于挂载信息的指定填写格式中,各字段所表示的意义 设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier) 挂载目录 指定要挂载到的目录,需在挂载前创建好 格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等 权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async 是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份 是否自检 若为1则开机后自动进行磁盘自检,为0则不自检 如果想将文件系统为Ext4的硬件设备/dev/sdb2在开机后自动挂载到/backup目录上,并保持默认权限 且无须开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。 [root@localhost ~]# vim /etc/fstab 在最后一行增加如下信息 UUID=b8c4a45f-ed74-3089-fcdb-0273de904d6d /backup ext4 defaults 0 0
写入到/etc/fstab文件中的设备信息并不会立即生效,需要使用mount -a参数进行自动挂载:
[root@localhost /]# mount -a
df命令用于查看已挂载的磁盘空间使用情况,英文全称为“disk free”,语法格式为“df -h”。
查看当前系统中设备的挂载情况,列出系统中正在使用的设备有哪些。
[root@localhost /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 27G 9.5G 18G 36% / devtmpfs 899M 0 899M 0% /dev tmpfs 911M 0 911M 0% /dev/shm tmpfs 911M 9.6M 902M 2% /run tmpfs 911M 0 911M 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot tmpfs 183M 0 183M 0% /run/user/0 /dev/sdb 20G 45M 19G 1% /backup # 现在硬盘就已经挂在到了挂载点上了。
挂载错误之后可以使用umount命令,进行卸载,然后重新进行挂载。如果是写入到了配置文件中,也需要对配置文件进行修改。
umount /dev/sdb
下载好的依赖包(版本是10.2.4)
阿里云盘下载链接:https://www.aliyundrive.com/s/r3aVdhuHYjM
1. 下载完依赖包,放到服务器中
这里我是直接放在了root目录下
2.执行安装命令:
yum install ./*
注意:这里执行完成rpm依赖包后,MariaDB就已经安装完成,并自动加入系统服务,直接对MariaDB进行配置即可。
rpm -Uvh *.rpm --nodeps --force (这条命令强制安装当前文件夹中所有的rpm包,忽略依赖去安装)
到这里MariaDB就已经安装完成了,下面就是对数据库进行配置了。
3.开启服务:
systemctl status mariadb # 查询MariaDB的运行状态,一般情况下安装完成后,默认都是关闭状态 systemctl start mariadb # 开启MariaDB数据库 systemctl stop mariadb # 停止MariaDB数据库 systemctl stop mariadb # 把MariaDB加入开机自启
4.进去数据库,进行用户/密码/权限配置
- 为需要远程的用户赋予权限
```
支持root用户允许远程连接mysql数据库
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'nbsq@hq015!' WITH GRANT OPTION; // %:表示从任何主机连接到mysql服务器 FLUSH PRIVILEGES;
新建用户远程连接mysql数据库(需要修改下面的admin为你想创建的用户名):
grant all on . to admin@'%' identified by 'yourpassword' with grant option;
刷新权限,给用户赋予权限后,需要刷新一下权限
flush privileges; ```
- 设置/修改 登录密码
``` 登入:mysql -uroot -p # 注意:第一次登录时是没有密码的,直接回车即可
设置或者修改密码有以下几种方式
第一种
MariaDB [(none)]> use mysql; MariaDB [mysql]> UPDATE mysql.user SET password = PASSWORD('newpassward') WHERE user = 'root'; MariaDB [mysql]> FLUSH PRIVILEGES; # 刷新权限
第二种
[root@localhost ~]# mysql -uroot MariaDB [(none)]> use mysql; MariaDB [mysql]> SET password=PASSWORD('newpassward'); MariaDB [mysql]> FLUSH PRIVILEGES;
第三种
[root@localhost ~]# mysqladmin -u root password 'newpassword'
如果root已经设置过密码,采用如下方法
[root@localhost ~]# mysqladmin -u root -p 'oldpassword' password 'newpassword' ```
5.放行数据库端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent # 放行3306端口,并写入文件 firewall-cmd --reload # 使防火墙规则立即生效 firewall-cmd --list-all # 查看防火墙配置内容
扩展:
firewall-cmd --zone=public --list-ports # 查看防火墙放行的所有端口 firewall-cmd --zone=public --query-port=8090/tcp # 查看防火墙放行的指定端口 firewall-cmd --reload # 使防火墙规则生效 firewall-cmd --zone=public --add-port=8090/tcp --permanent # 放行某一端口 firewall-cmd --zone=public --remove-port=8090/tcp --permanent # 关闭某一端口 firewall-cmd --list-all # 查看防火墙配置内容 firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“192.168.110.24” accept” # 放行指定ip firewall-cmd --permanent --remove-rich-rule=“rule family=“ipv4” source address=“192.168.110.24” accept” # 删除指定ip的规则 firewall-cmd --permanent --add-rich-rule=“rule family=“ipv4” source address=“192.168.110.21/24” accept” # 放行指定ip段 firewall-cmd --permanent --add-rich-rule="rule family=“ipv4” source address=“192.168.110.21” port protocol=“tcp” port=“8090” # 放行指定ip和端口
6.修改Mariadb数据库存储路径
拿到手的服务器大量空间在/home分区下,没有在/下,考虑到后期数据库增长量,/分区空间可能不够,决定把Mariadb数据库数据存储路径修改到/home分区下;以下为修改过程
6.1、关闭数据库服务
systemctl stop mariadb.service
6.2、新建新的存储路径,并移动之前的文件
mkdir /home/data mv /var/lib/mysql/ /home/data/
6.3、修改配置文件
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #如果是新装的数据库,可以复制一个模板配置文件过来 注:datadir上面的五行是设置默认字符集为utf8mb4,否则emoji表情是无法正确存储的。 vim /etc/my.cnf [client] socket = /home/data/mysql/mysql.sock [mysqld] init_connect='SET collation_connection = utf8mb4_unicode_ci' init_connect='SET NAMES utf8mb4' character_set_server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake=true datadir=/home/data/mysql/
报错
报错:“[Warning] Can’t create test file /home/data/mysql/sthbb_rwdcdb_36_123.lower-test”. 解决方式: 修改/usr/lib/systemd/system/mariadb.service中配置项 ProtectHome=false
验证
``` [root@sthbbrwdcdb36123 data]# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.1.36-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show global variables like "%datadir%"; +---------------+-------------------+ | Variablename | Value | +---------------+-------------------+ | datadir | /home/data/mysql/ | +---------------+-------------------+ 1 row in set (0.00 sec)
MariaDB [(none)]> status
mysql Ver 15.1 Distrib 10.1.36-MariaDB, for Linux (x86_64) using readline 5.1 Connection id: 3 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server: MariaDB Server version: 10.1.36-MariaDB MariaDB Server Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /home/data/mysql/mysql.sock Uptime: 2 min 29 sec
Threads: 1 Questions: 5 Slow queries: 0 Opens: 17 Flush tables: 1 Open tables: 11 Queries per second avg: 0.033
```
netstat -tunlp 查看所有使用的端口
7.开启日志相关配置
查询日志/错误日志/慢查询日志/二进制日志/中继日志/事务日志 ● 查询日志(general_log):执行的所有SQL语句 记录SQL操作的 DDL / DML 日志,记录信息非常简单,但包括完整的SQL语句; 开启general_log会产生非常庞大的日质量,一般不建议开启; ● 错误日志:数据库发生的错误信息 ● 慢查询日志:SQL语句超过指定的查询时间会记录在此(**) long_query_time=10 ● 二进制日志(bin log):用作于复制和备份恢复 记录所有引起数据变化的操作,用于备份和还原,使用主从复制时也需要开启binlog 默认存放在datadir目录下,在刷新和重启数据库是会滚动二进制文件,产生新的binlog; ● 中继日志(relay log) ----->以上信息都可以在MySQL的配置文件中进行定义:/etc/my.cnf | /etc/my.cnf.d/* 日志格式 基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR) ○ row : 存储着记录改变后的样子 ---> 修改某张表的字段名会影响表中的所有数据 ○ statment:存储着执行的SQL语句 ○ mixed : row + statment两种方式的混合 INNODB存储引擎的日志 事务日志(transaction log):事务型存储引擎自行管理和使用
7.1、修改MariaDB数据库的配置文件,开启日志相关配置参数
``` log_error = /data/mysql/mariadb.err #错误日志、具体路径要按照服务器而定。
二进制日志(binlog)
log-bin=mysql-bin #这些路径相对于datadir,也可以从根目录下开始。 binlogformat=mixed #日志格式 server-id = 1 #给服务器分配一个独一无二的ID编号; n的取值范围是1~2的32次方启用二进制日志功能。在复制数据同步的时候会用到。 expirelogs_days = 10 #启用二进制日志后,保留日志的天数。服务器会自动清理指定天数前的日志文件,如果不设置则会导致服务器空间耗尽。一般设置为7~14天。 ```
修改完毕后,保存退出。进入到数据库中查看相关参数
```
show variables like '%log_bin%'; show variables like '%binlog%'; ```