一、卸载Mariadb

1.查看有没有安装

rpm -qa|grep mariadb

如果返回内容说明已安装

返回内容(不一定一样)
mariadb-5.5.56-2.el7.x86_64
mariadb-libs-5.5.56-2.el7.x86_64
mariadb-server-5.5.56-2.el7.x86_64

2.卸载命令

yum remove mariadb

3.删除遗留目录

#查看目录是否存在
ls /etc/my.cnf
ll /var/lib/mysql/
#删除
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/

二、安装Mariadb

1.yum安装Mariadb包(安装默认会配置mysql用户)

yum install mariadb mariadb-server -y

2.启动服务

systemctl start mariadb.service

2.初始化Mariadb服务

mysql_secure_installation
  • (1) enter current password for root (enter for none) (请输入现在的root密码(没有直接回车))
  • 直接回车
  • (2) Set root password(是否设置root密码)
  • 输入Y
  • 输入新的root密码
  • 再输入一次
  • (3)Remove anonymous users (是否删除匿名用户)
  • 输入 Y
  • (4)Disallow root login remotely(是否不允许远程root用户登录)
  • 我这边需要 所以选择 N
  • (5)Remove test database and access to it(删除测试数据库并访问它)
  • 输入N
  • (6)Reload privilege tables now(立即重新加载权限表)
  • 输入Y

3.配置数据库存储位置

我这边自定义路径是/home/mariadbdata/ 这边请改成自己的路径

1.新建储存位置(我这边 /home 下是挂载硬盘储存)

cd /home
#目录下创建一个 mariadbdata 目录
mkdir mariadbdata
#给这个目录加上读写权限
chmod 775 mariadbdata

2.把 Mariadb 服务停掉

systemctl stop mariadb.service

3.把 /var/lib/mysql 整个目录复制到新建的目录

cp -r /var/lib/mysql/* /home/mariadbdata/

4.编辑 Mariadb 的配置文件 /etc/my.cnf

vi  /etc/my.cnf

把[mysqld]下的配置项datadir和socket注释掉(以防有问题再改回来),新加行改为新的内容,如下:

#2个储存目录换成新目录
[mysqld]
# datadir=/var/lib/mysql
datadir=/home/mariadbdata
# socket=/var/lib/mysql/mysql.sock
socket=/home/mariadbdata/mysql.sock

把[client]下的配置项socket注释掉(以防有问题再改回来),新加行改为新的内容,如下:

[client]
# socket=/var/lib/mysql/mysql.sock
socket=/home/mariadbdata/mysql.sock
注:如果文件中没有[client],需要手动加上。

5.关闭大小写敏感(按情况来设置,可跳过)

#在[mysqld]下加入这一行
lower_case_table_names=1

保存文件退出。

#点击esc退出编辑
#shift+:输入wq 保存

5.修改 /home/mariadbdata目录的拥有者

chown -R mysql:mysql /home/mariadbdata

6.新执行安装命令(注意修改自己的路径)

mysql_install_db --defaults-file=/etc/my.cnf --datadir=/home/mariadbdata/ --user=mysql

7.启动mariadb服务

 systemctl start mariadb

8.开启防火墙端口
点下面链接按照教程去开放3306端口

点我进配置防火墙教程

四.错误解决

如果启动出现已下内容说明失败

[root@localhost mariadb.service.d]#  systemctl start mariadb
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.

输入 systemctl status mariadb可以看到错误原因,一般是权限错误

(1).关闭selinux安全防护(必须)

关闭selinx(以下是临时关闭不需要重启,但是重启又会打开)
/usr/sbin/setenforce 0

(2)执行第5步 后启动mariadb(第七步)

如果是在/home 文件夹下(我就是)继续操作
(1)新增mariadb.service.d文件夹

 mkdir /etc/systemd/system/mariadb.service.d

(4)新增homedir.conf配置

新增编辑
vi /etc/systemd/system/mariadb.service.d/homedir.conf

文件中输入并保存

[Service]
ProtectHome=false

保存后输入

systemctl daemon-reload

最后再启动mariadb(第七步)

五.测试

连接数据库

mysql -u root -p
输入密码

如果出现已下内容说明成功!

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)]>