Centos下MySQL8原生安装和数据存储目录迁移

虽然现在虽然有了docker,k8s比较方便了,但对于mysql这样的关系型数据库对IO的的要求比较高,在容器中网络,以及存储资源是共享的,这可能会影响数据的读写速度,所以不单单是数据库,建议对于高IO的服务还是安装在物理机上。
这里就是在centos下来原生搭建一个单机版的mysql数据库,后续还会搭建集群版

一、检查环境

  • 检查操作系统环境
    命令:hostnamectl
    如图所示:操作系统是CentOS7,64位
  • 选择安装版本
  • 如果已安装过mysql的,怕有残留文件,需要做一次卸载
rpm -aq | grep -i mysql | xargs rpm -e --nodeps
rpm -aq | grep -i mariadb | xargs rpm -e --nodeps	#有mariadb的,也要删除
rm -rf `find / -name mysql`
  • 安装相关依赖
yum install perl
yum install net-tools

二、安装

  • 安装mysql数据库(注意,一定要按顺序安装,不然容易出错)
1. 安装common
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm --force --nodeps

2. 安装lib
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --force --nodeps

3. 安装client
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --force --nodeps

4. 安装server
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --force --nodeps
  • 初始化mysql
    数据盘最好独立出来,为了方便后面扩容
mysqld --initialize --basedir=/usr/local/mysql --datadir=/data/mysqldata
  • 修改mysql的目录权限
chown -R mysql:mysql /var/lib/mysql
  • 启动mysql
systemctl start mysqld
  • 查看第一次启动时的初始密码
cat /var/log/mysqld.log | grep password

  • 通过mysql安全设置来更改数据库密码
mysql_secure_installation


服务管理

# 启动数据库
systemctl start mysqld

# 关闭数据库
systemctl stop mysqld

# 重启数据库
systemctl restart mysqld

# 查看数据库状态
systemctl status mysqld

# 进入mysql
mysql -u root -p'密码'

数据库远程连接

  • 由于mysql8.0以后的版本,用户创建和授权是分开了,所以在授权时,不能用5.7的那种方法了。
# 授予远程连接权限
create user 'root'@'%' identified by '密码';

grant all on *.* to `root`@`%` WITH GRANT OPTION;

# 这里一定要改成mysql_native_password,不然客户端navicat无法访问。
ALTER USER 'root'@'%' IDENTIFIED with mysql_native_password by '密码';

# 查询mysql库user表的状态
select Host,User,authentication_string,plugin from user;

flush privileges;
  • 如果是云主机,还要开放3306端口

数据存储位置迁移

在安装数据库的过程中,如果没有指定好数据库的存储目录,我们可以自己手动的来修改数据存储位置,一般都是放在数据盘,方便数据量大了以后来进行扩容

  • 关闭MySQL服务
systemctl stop mysqld
  • 创建新的数据库存储目录
mkdir -p /data/mysqldata
  • 复制MySQL数据目录到新位置
cp -a /var/lib/mysql /data/
  • 修改配置文件my.cnf
# 修改成如下配置
datadir=/data/mysql
socket=/data/mysql/mysql.sock

log-error=/data/logs/mysqld.log

开放端口(需要重启防火墙)

firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld	#重启防火墙

结束

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐