CentOS7 下安装最新版 MariaDB 以及端口、密码等的配置

本文介绍了如何在CentOS7系统中卸载MySQL并安装MariaDB的完整流程,包括检查MySQL和MariaDB的安装状态、删除MySQL相关文件和配置、通过YUM仓库安装MariaDB、安全配置、远程访问权限设置、防火墙配置、字符集与端口调整,以及忘记密码的解决方法。确保MariaDB能够正常运行并具备远程访问能力。
摘要由CSDN通过智能技术生成

MariaDB和MySQL的关系:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

现在CentOS7默认安装的数据库就是MariaDB而不再是MySQL,防止冲突,所以先检查当前系统是否安装有MySQL,如果有MySQL则需要卸载掉。当然也需要检查是否安装有MariaDB,如果有再检查当前版本是多少。

1、检查是否已经安装了MySQL

rpm -qa | grep -i mysql 

yum list install mysql* 

2、卸载mysql安装包

yum remove mysql mysql-server mysql-libs compat-mysql51
yum remove mysql-community-release
rpm -e --nodeps mysql-community-libs-5.7.22-1.el7.x86_64
rpm -e --nodeps mysql57-community-release-el7-11.noarch

3、删除残留的mysql目录或文件。
#查询mysql安装目录

whereis mysql 

find / -name mysql

#删除查询出的目录,查询什么就删除什么,总之删到通过上面两种命令查不出来任何有关mysql的东西。如:

rm -rf /usr/lib64/mysql
rm -rf /usr/share/mysql
rm -rf /usr/bin/mysql
rm -rf /etc/logrotate.d/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql

#删除mysql 配置文件

rm –rf /usr/my.cnf
rm -rf /root/.mysql_sercret

#删除mysql开机自启动服务

chkconfig --list | grep -i mysql
chkconfig --del mysqld  // 服务名为你设置时候自己设置的名字

4、卸载MariaDB
使用rpm -qa | grep mariadb搜索 MariaDB 现有的包:如果存在,使用 rpm -e --nodeps mariadb-* 全部删除。(建议使用 rpm -ev 删除时,添加参数 --nodeps 因为会删除依赖包,有可能程序也在使用这些依赖包,从而造成其他程序出错。
–nodeps就是安装、卸载时不检查依赖关系,比如你这个rpm需要A,但是你没装A,这样你的包就装不上,用了–nodeps你就能装上了。或者下载的时候,你要卸载B,但是B依赖A,要先卸载A才可以卸载B,用了-nodeps你就能卸载了。
–force就是强制安装,比如你装过这个rpm的版本1,如果你想装这个rpm的版本2,就需要用–force强制安装

[root@ecs-639d-0002 ~]# rpm -qa|grep -i 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
[root@ecs-639d-0002 ~]#
[root@ecs-639d-0002 ~]#
[root@ecs-639d-0002 ~]# rpm -e --nodeps mariadb-5.5.56-2.el7.x86_64
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
[root@ecs-639d-0002 ~]#
[root@ecs-639d-0002 ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
[root@ecs-639d-0002 ~]#
[root@ecs-639d-0002 ~]# rpm -e --nodeps mariadb-server-5.5.56-2.el7.x86_64
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
[root@ecs-639d-0002 ~]#
[root@ecs-639d-0002 ~]# rpm -qa|grep -i mariadb
[root@ecs-639d-0002 ~]# 
[root@ecs-639d-0002 ~]# yum remove mariadb
...
Removed:
  mariadb.x86_64 1:5.5.56-2.el7                                                                                                                  

Dependency Removed:
  mariadb-server.x86_64 1:5.5.56-2.el7                                                                                                           

Complete!
[root@ecs-639d-0002 ~]#

不建议使用yum remove来删除,因为会删除依赖包,有可能程序也在使用这些依赖包,从而造成其他程序出错。

删除遗留目录

[root@ecs-639d-0002 ~]# ls /etc/my.cnf
/etc/my.cnf
[root@ecs-639d-0002 ~]# ll /var/lib/mysql/
total 28700
-rw-rw---- 1 mysql mysql    16384 May  5 10:31 aria_log.00000001
-rw-rw---- 1 mysql mysql       52 May  5 10:31 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 May  5 10:31 ibdata1
-rw-rw---- 1 mysql mysql  5242880 May  5 10:31 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Oct  6  2017 ib_logfile1
drwx------ 2 mysql mysql     4096 Oct  6  2017 mysql
drwx------ 2 mysql mysql     4096 Oct  6  2017 performance_schema
[root@ecs-639d-0002 ~]#
[root@ecs-639d-0002 ~]#
[root@ecs-639d-0002 ~]# rm -rf /etc/my.cnf
[root@ecs-639d-0002 ~]# rm -rf /var/lib/mysql/
[root@ecs-639d-0002 ~]#

至此,可以开始重新安装MariaDB最新版本了,如下:
第一步:添加 MariaDB yum 仓库
首先在CentOS操作系统中/etc/yum.repos.d/目录下添加 MariaDB 的YUM配置文件MariaDB.repo文件。
这里使用的是国内源,下载速度比较快些。目前MariaDB最新版本是10.5.8
http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/

国外的数据源地址是:http://yum.mariadb.org/10.5/centos7-amd64

使用命令行 vim /etc/yum.repos.d/mariadb.repo 添加如下内容:

[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
enabled=1
gpgcheck=1

按 Esc 键,按 : 输入 wq 进行保存退出。

更新缓存

yum clean all  
yum makecache  
yum repolist

显示可安装的版本

#这个可以看版本号
yum search mariadb --showduplicates 
或
yum search mariadb

第二步:安装 MariaDB
通过yum命令轻松安装 MariaDB。

yum  -y install MariaDB-server MariaDB-client

MariaDB 安装完毕后,立即启动数据库服务守护进程。

systemctl start mariadb

设置 MariaDB 在操作系统重启后自动启动服务。

systemctl enable mariadb

查看 MariaDB 服务当前状态。

systemctl status mariadb

第三步:对 MariaDB 进行安全配置
通过以下命令进行安全配置,根据实际情况用 Y/n 回复以下问题:设置 MariaDB 的 root 账户密码,删除匿名用户,禁用 root 远程登录,删除测试数据库,重新加载权限表。

mysql_secure_installation

本人全都是选择了Y,然后按回车。
在配置完数据库的安全配置后,可以通过以下命令查看版本,确认 MariaDB已安装成功。

mysql --version

可以通过 MariaDB 命令行登录,然后对数据库进行sql查询操作。

mysql -uroot -p

在这里插入图片描述
设置开机启动服务

systemctl enable mariadb

启动服务

systemctl start mariadb

重启服务

systemctl restart mariadb

停止服务

systemctl stop mariadb

查看状态

systemctl status mariadb

第四步:为 MariaDB 配置远程访问权限
在第三步中如果禁用 root 远程登录选择 Y 的话就不能在别的电脑通过navicat等工具连接到数据库,这时就需要给对应的 MariaDB 账户分配权限,允许使用该账户远程连接到MariaDB。可以输入以下命令查看账号信息:

select User, host from mysql.user;

在这里插入图片描述
root账户中的host项是localhost表示该账号只能进行本地登录,如果需要远程访问,我们需要修改权限,输入命令:

GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ IDENTIFIED BY ‘my-new-password’ WITH GRANT OPTION;

修改权限。%表示针对所有IP,password表示将用这个密码登录root用户,如果想只让某个IP段的主机连接,可以修改为:

GRANT ALL PRIVILEGES ON . TO ‘root’@‘具体的IP’ IDENTIFIED BY ‘my-new-password’ WITH GRANT OPTION;

最后别忘了:

FLUSH PRIVILEGES;

保存更改后,再看看用户账号信息:

select User, host from mysql.user;

在这里插入图片描述
这个时候发现root的host项是%,这说明配置成功了,我们可以用该账号进行远程访问了。

第五步:CentOS 7 开放防火墙端口
在第四步后如果还是不能远程连上数据库的话应该就是3306端口被防火墙拦截了,这时我们就需要关闭防火墙或者开放防火墙端口。
关闭防火墙:

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

开放防火墙端口,开启后要重启防火墙:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

第六步:设置数据库字母大小写不敏感,

vim /etc/my.cnf.d/server.cnf

在[mysqld]下加上】

lower_case_table_names=1

MySQL默认字母大小写敏感的。默认值等于0的,即大小写敏感。所以修改成1就行了。

第七步:设置MariaDB数据库默认编码
MariaDB的默认编码是latin1,插入中文会乱码,因此需要将编码改为utf8。
1).登录,使用以下命令查看当前使用的字符集,应该有好几个不是utf8格式。

show variables like "%character%";
show variables like "%collation%";

2).修改的配置文件

vim /etc/my.cnf.d/client.cnf

在[client]字段里加入
default-character-set=utf8

vim /etc/my.cnf.d/server.cnf

在[mysqld]字段里加入
character-set-server=utf8

3).重启 MariaDB 配置生效。

systemctl restart mariadb

第八步:修改端口(此步骤是在你需要修改默认端口的时候使用)
MySQL数据库服务器在Linux和Unix下运行的默认端口是3306 / TCP 。
使用如下命令行查询端口:

show variables like 'port';

在这里插入图片描述
为了在Linux中更改默认的MariaDB 或 MySQL数据库端口,请通过执行以下命令打开MariaDB 或 MySQL服务器配置文件进行编辑。
如果是CentOS或Red Hat,则使用如下命令:

vim /etc/my.cnf.d/server.cnf  

如果是Debian或Ubuntu,则使用如下命令:

vim /etc/mysql/mariadb.conf.d/50-server.cnf

搜索行统计以[mysqld]开始,并在[mysqld]语句下放置以下端口指令,如以下文件摘录所示。 相应地更换端口变量。
[mysqld]
port = 3308

在添加新的MySQL / MariaDB端口后,保存并关闭配置文件,并安装以下软件包,以便应用所需的SELinux规则以允许数据库绑定到新端口上。

yum install policycoreutils-python

接下来,添加下面的SELinux规则,将MySQL套接字绑定到新端口上,并通过发出以下命令重新启动数据库守护程序以应用更改。 再次,替换MySQL端口变量以匹配您自己的端口号。

##--------------- On CentOS/RHEL --------------- 
semanage port -a -t mysqld_port_t -p tcp 12345
systemctl restart mariadb

##--------------- On Debian/Ubuntu ---------------
systemctl restart mysql 

为了验证MySQL / MariaDB数据库服务器的端口配置是否已成功应用,请发出netstat或ss命令,并通过grep命令过滤结果,以便轻松识别新的MySQL端口。

ss -tlpn | grep mysql
netstat -tlpn | grep mysql

当然你也看而已通过root用户登录后通过命令行 show variables like ‘port’; 来查看你新修改的端口。


需要注意的是:
一、本地主机上所有与MySQL的连接都是通过MySQL unix域套接字进行的,而不是通过TCP套接字进行的。 但是,如果使用-P标志命令行远程连接到MySQL数据库,则必须明确指定TCP端口号。

二、如果你更改了MariaDB 或 MySQL数据库服务器端口,你需要更新你的分发防火墙规则来允许传入连接到新的TCP端口,以便远程客户端可以成功连接到数据库。


忘记了MariaDB root密码,解决办法如下:
1).先停掉MariaDB

systemctl stop mariadb.service

2).KILL掉系统里的MariaDB进程;

ps -ef | grep mariadb #查询进程PID

kill 进程PID

在这里插入图片描述
3).用以下命令启动MariaDB,以不检查权限的方式启动;

mysqld_safe -skip-grant-tables &

或是 修改/etc/my.cnf文件,在[mysqld]下添加 skip-grant-tables , 再启动MariaDB
systemctl restart mariadb.service
在这里插入图片描述
然后用空密码方式使用root用户登录MariaDB;

mysql -u root

4).修改root用户的密码;

MariaDB [(none)]> update mysql.user set password=password('新密码') where User='root';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;#或者使用exit;

在这里插入图片描述
5). 改完密码需要删除配置文件中的

skip-grant-tables

6).重新启动MariaDB,就可以使用新密码登录

systemctl restart mariadb.service #启动mariaDB

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值