淘先锋技术网

首页 1 2 3 4 5 6 7

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%'; ```