MariaDB在CentOS上使用YUM安装

本文介绍了如何配置MariaDB的YUM源,包括安装必要的模块和服务配置。此外,还详细阐述了解决MariaDB连接超时问题的方法,包括修改配置文件和使用连接池。

配置YUM源

配置MariaDB的YUM源

添加MariaDB.repo文件并置于“/etc/yum.repos.d/”目录下。
MariaDB.repo文件内容如下(此处添加以10.2的版本为例)

# MariaDB 10.2 CentOS repository list - created 2018-07-10 05:39 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

此处使用了国内源http://mirrors.ustc.edu.cn/help/mariadb.html,由于官网的源因为我的国的原因其慢无比,大家都懂的!

安装MariaDB相关模块

模块说明

MariaDB-server:MariaDB服务器。
MariaDB-client:启动MariaDB客户端所需要的程序与文件。
MariaDB-common:启动MariaDB服务器或客户端所需的设置文件(my.cnf),或定义字符集的xml文件。
MariaDB-test:用户测试MariaDB的程序。

集群工具相关模块:
MariaDB-Galera-server:MariaDB+Galera Cluster安装程序。
galera:MariaDB+Galera Cluster的Galera库。

使用YUM安装

核心基础模块

执行以下命令完成安装:
$ yum install MariaDB-server MariaDB-client MariaDB-test MariaDB-common

集群工具模块

$ yum install MariaDB-Galera-server galera

配置

数据库主配置文件

默认的配置文件在名称在Linux和Windows下在不同的存放目录。
Linux:在该系统下文件存放在/etc/my.cnf。
Windows:在该系统下文件存放在c:\windows\my.ini或这c:\my.cnf。

配置文件分为多个小结,每节前面都会有一个用方括号括起来的标题。例如:服务器守护进程的设置在[mysqld]小节,在该小节加入log=/var/log/mysql这样的配置设置日志文件的路径,并激活日志文件功能。

修改root密码

修改root密码有多种方式,我们使用mysqladmin管理工具来完成root密码修改。

  • 在Linux命令行,不登录MariaDB的情况下,执行以下命令会提示输入旧密码(如果是新安装的数据库,初始化密码为空,直接回车即可),如果旧密码通过验证,会提示输入两次新密码。
$ mysqladmin -u root -p flush-privileges password
Enter password: 
New password: 
Confirm new password:

如果控制台提示以下错误信息,则需要在数据库主配置文件的[mysqld]小节,加入skip-grant-tables。然后重启数据库服务。

$ mysqladmin -u root -p flush-privileges root
Enter password: 
mysqladmin: reload failed; error: 'Access denied; you need (at least one of) the RELOAD privilege(s) for this operation'

$ service mysql restart
  • 数据库命令修改密码

启动MariaDB

启动MariaDB服务器

执行命令:$ service mysql start

终止MariaDB服务器

执行命令:$ service mysql stop

重启MariaDB服务器

执行命令:$ service mysql restart

查看MariaDB服务器的进程状态

只有当MariaDB注册为服务后,才可以通过以下命令查看其进程状态:
$ service mysql status

查看MariaDB是否在可管理列表中

执行命令:$ chkconfig –list,结果列表中包含以下一行信息:
mysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
如果结果列表不存在以上信息,则执行以下命令将其添加到可管理列表:
$ chkconfig add mysqld

将MariaDB设置为开机启动

执行命令:$ chkconfig mysqld on

程序长时间未交互数据库连接超时问题

MaraDB与MySQL一样,存在8小时连接超时的问题。

问题说明:
当程序的连接池或客户端创建连接,进行了一系列的数据库操作后,数据库服务器在连接创建后,默认存在一个wait_timeout设置,设定了默认等待连接超时时长。默认为8小时,28800秒 = 60秒 * 60分钟 * 8。

也就是说,如果持续8小时没有任何程序连接数据库服务器,数据库服务器将关闭连接,但不会通知程序。当程序再次进行数据库库操作时,持有的是一个已关闭的连接进行操作,所以不能正常操作数据。wait_timeout设置时长小于程序连接池或客户端持有连接的时长,当程序再次访问数据库时,会出现无法连接访问数据库的错误。

要解决这个问题,其实很简答,将wait_timeout设置的时长修改到一个合理的更久的等待时长。同时需要将interactive_timeout设置为相同的值,因为interactive_timeout,wait_timeout 这两个参数只有一个起作用。

  • 首先查看当前wait_timeout设置的时长,命令行命令如下
$  show global variables like "wait_timeout";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+
1 row in set (0.00 sec)
  • 解决问题
    • 首选推荐在my.cnf配置文件中进行配置
      紧跟[mysqld]换行配置
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000

linux下,my.cnf的全路径为/etc/my.cnf,将以上配置内容添加到文件中,重启数据库服务即可。

windows下,配置文件为my.ini,配置文件全路径为$MARADB_HOME/data/my.ini。

  • 使用数据库连接池配置解决问题

数据库连接池常用的有c3p0、Apache旗下有DBCP、Tomcat的JDBC-POOL。
此处我们介绍Tomcat8的JDBC-POOL,它的官方文档地址:http://tomcat.apache.org/tomcat-8.5-doc/index.html

  • 首先还是先说下c3p0解决连接失效的问题
    maxIdleTime属性,单位为秒。作用是设置最大空闲时间,例如:设置为1800,代表1800秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0。该值一定要小于数据库配置的wait_timeout时长。

  • 关于DBCP和Tomcat的JDBC-POOL
    这个两个数据源连接池解决连接失效问题的方式一致,需要设置两个属性。testOnBorrow属性,默认为false,我们需要将他设置为true,表示每次进行数据库操作时使用下一个属性设置的查询语句验证连接是否可用,不可用将使用连接池中可用的连接进行数据库操作。validationQuery属性,设置验证连接是否可用的语句,通常我们将值设置为select 1

通过DBCP和Tomcat的JDBC-POOL数据源连接池配置连接可用检查和c3p0独有的固定时长配丢弃连接的配置,来解决数据库连接失效的方案后,就可以不考虑数据库配置的wait_timeout时长配置了(注意:c3p0的配置数值,一定要小于数据库配置的wait_timeout时长)。

### 编写 Shell 脚本以在 CentOS 7 上通过 Yum 安装 MariaDB 为了实现自动化部署,可以创建一个名为 `install_mariadb.sh` 的 Bash 脚本来完成此操作。该脚本会执行必要的预处理工作并调用 yum安装 MariaDB。 #### 关闭 SELinux 和防火墙设置 考虑到安全性和网络访问的需求,建议先调整 SELinux 设置以及清理 iptables 规则以便允许数据库服务正常运行: ```bash #!/bin/bash # 备份原始配置文件以防恢复 cp /etc/selinux/config /etc/selinux/config.bak # 修改SELinux状态为禁用 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 清除现有iptables规则 iptables -F service iptables save ``` 上述命令修改了 `/etc/selinux/config` 文件中的 SELinux 配置选项,并清除了所有的 IP 表规则[^3]。 #### 使用 Yum 安装 MariaDB 及其开发工具包 接下来的部分负责实际的软件包安装过程,这里不仅限于服务器组件还包括客户端和其他可能需要用到的支持库: ```bash # 更新系统仓库缓存 yum makecache fast # 安装MariaDB服务器及相关依赖项 yum install -y mariadb-server mariadb-devel # 启动MariaDB服务并将它设为开机自启 systemctl start mariadb.service systemctl enable mariadb.service echo "MariaDB 已成功安装" ``` 这段代码片段利用 yum 命令来获取最新的元数据信息,接着指定要安装的具体软件包名称列表,最后启动新安装的服务程序并且将其加入到系统的初始化进程中去[^1][^2]。 完整的 shell 脚本如下所示: ```bash #!/bin/bash # Backup original config file before making changes cp /etc/selinux/config /etc/selinux/config.bak # Disable SELinux by modifying its configuration file sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # Clear existing iptables rules to allow database service operation iptables -F service iptables save # Update system repository cache yum makecache fast # Install MariaDB server along with development packages yum install -y mariadb-server mariadb-devel # Start MariaDB service and set it up as a boot-starting service systemctl start mariadb.service systemctl enable mariadb.service echo "MariaDB has been successfully installed." ``` 保存以上内容至 `.sh` 文件后赋予可执行权限即可随时用来快速搭建环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值