在服务器上部署MySQL服务

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 在云服务器上部署自己的MySQL服务(centOS7系统),并且配置MySQL主从复制

MYSQL数据库部署和安装

首先准备安装包

在MySQL官方网站下载所需要的版本安装包 本次部署的是mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz 将安装包放在Linux系统 /usr/local 目录下

MySQL官方网站 MySQL官网

卸载系统自带的mariaDB (如果有)

查询已安装的Mariadb,如果有安装,卸载之

rpm -qa | grep mariadb
AI 代码解读

image.png

yum -y remove mariadb-server-5.5.56-2.e17.x86_64
yum -y remove mariadb-5.5.56-2.e17.x86_64
yum -y remove mariadb-devel-5.5.56-2.e17.x86_64
yum -y remove mariadb-libs-5.5.56-2.e17.x86_64
AI 代码解读

解压MYSQL安装包

将上面准备好的MySQL安装包解压,并重命名为mysql

tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.37-linux-glibc2.12-x86_64 mysql
AI 代码解读

创建MYSQL用户和用户组

首先使用 id mysql 命令查看是否存在mysql用户
如果存在,则使用命令 userdel mysql 将用户删除
然后创建mysql用户和用户组

groupadd mysql
useradd -g mysql mysql
AI 代码解读

于此同时新建 /user/local/mysql/data 目录,后续备用

修改MYSQL目录的归属用户

首先进入到mysql目录下
chown -R mysql:mysql ./

准备MySQL的配置文件

/etc下新建my.cnf文件
vi /etc/my.cnf
在vi编辑器中,按下i键进入编辑模式,写下如下简化配置:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
AI 代码解读

同时使用如下命令创建/var/lib/mysql目录,并修改权限:

mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
AI 代码解读

正式开始安装mysql

执行如下命令正式开始安装:

cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
AI 代码解读

安装如果出现问题

root@bigdata-159:/usr/local/mysql# ./bin/mysqld -- defaults-file=/etc/my.cnf --initialize --user=mysql
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方法:

[root@example.com data]# yum install -y libaio //安装后在初始化就OK了

image.png

注意:把上面打印出来的密码复制保留,这是root用户的密码,后面首次登陆需要使用

复制启动脚本到资源目录

执行如下命令复制:

cp ./support-files/mysql.server /etc/init.d/mysqld
AI 代码解读

并修改/etc/init.d/mysqld,修改其basedir和datadir为实际对应目录

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
AI 代码解读

设置mysql系统服务并开启自启

首先增加mysqld服务控制脚本执行权限:

chmod +x /etc/init.d/mysqld
AI 代码解读

同时将mysqld服务加入到系统服务中

chkconfig --add mysqld
AI 代码解读

最后检查mysqld服务是否已经生效即可

chkconfig --list mysqld
AI 代码解读

出现下图的打印就说明mysqld服务已经生效了,在2,3,4,5 运行级别随系统启动而自启动,以后可以直接使用service 命令控制mysql的暂停
image.png

启动mysqld

直接执行:

service mysqld start
AI 代码解读

出现如下命令说明mysql启动成功
image.png

将mysql的bin目录加入path环境变量

这样方便以后可以在任意目录都可以使用mysql提供的命令
编辑.bash_profile
vi ~/.bash_profile文件,在文件末尾处追加如下的信息:
export PATH=$PATH:/usr/local/mysql/bin
最后执行如下命令使环境变量生效
source ~/.bash_profile

首次登录MySQL

以root账号登录mysql,使用上文安装完成提示的密码进行登入
mysql -u root -p 按下回车
image.png

接下来修改root账号密码

在mysql的命令行执行如下命令就可以了,密码换成自己想用的即可

mysql>alter user user() identified by "111111";
mysql>flush privileges;
AI 代码解读

设置远程主机登录

mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
AI 代码解读

最后利用NAVICAT等工具进行测试即可

image.png

1、Linux CentOS一般作为服务器使用,因此,MySQL服务器应该随机自启动。查看开机自启动的服务使用chkconfig命令,如下:

chkconfig --list

或是只查看MySQL服务

chkconfig --list mysqld

img

可以看到mysql的2~5为on,说明mysql服务会随机器启动而自动启动。

2、配置MySQL的开机自动启动

chkconfig --add mysql
chkconfig mysqld on

3、命令启动/关闭MySQL实例
service mysqld start/stop
/etc/init.d/mysqld start/stop

4、命令关闭MySQL
mysqladmin -p -u root shutdown

5、检查mysql是否真正的启动
方法一:查询端口

netstat -tulpn

MySQL监控的是TCP的3306端口,图中命令操作结果的最后一行即是MySQL服务在运行中。
方法二:查询进程

ps -ef | grep mysqld

如果有mysqld_safe和mysqld两个进程,说明MySQL服务当前在启动状态。

通过 rpm 安装包的方式按照


1 上传 rpm 安装包到Linux 系统

2 解压安装包到 /usr/local/mysql 目录

3 按照如下步骤按照

如果出现如下错误

错误:依赖检测失败:

    /usr/bin/perl 被 mysql-community-server-5.7.25-1.el7.x86_64 需要
    perl(Getopt::Long) 被 mysql-community-server-5.7.25-1.el7.x86_64 需要
    perl(strict) 被 mysql-community-server-5.7.25-1.el7.x86_64 需要
AI 代码解读

则安装 yum install -y perl-Module-Install.noarch

安装完成之后

启动 MySQL

systemctl status mysql 查看 MySQL 服务状态

systemctl start mysqld 启动 MySQL 服务

systemctl enable mysqld 开机启动 MySQL 服务

netstat -tunlp 查看启动的服务

netstat -tunlp | grep mysql

ps -ef | grep mysql 查看 MySQL 进程

登录 MySQL 数据库 ,查看临时密码

cat /var/log/mysqld.log 查看文件内容

cat /var/log/mysqld.log | grep password 查看文件内容中包含 password 的行信息

登录 MySQL,修改密码,开放访问权限

mysql -uroot -p 登录mysql (使用临时密码)

进入 MySQL 客户端后 /

修改密码

set global validate_password_length=4;                # 设置密码最低位数为4set global validate_password_policy=LOW;            # 设置密码安全等级低,便于修改简单密码
set password=password('1234');                        #将密码设置为 1234

# 开启访问权限
grant all on *.* to 'root' @'%' identified by '1234';
flush privileges;
AI 代码解读

最后使用 navicat 等工具测试连接即可

MySQL 主从复制 配置


提前准备好两台服务器,分别安装 MySQL 服务并启动成功

  • 主库 Master 192.168.141.133
  • 从库 Slave 192.168.141.135

配置 - 主库 Master

第一步:修改 MySQL 数据库配置文件 /etc/my.cnf

[mysqld]
log-bin=mysql-bin      #[必须] 启用二进制日志
server-id=133          #[必须] 服务器唯一 id
AI 代码解读

第二步:重启MySQL 服务

systemctl restart mysqld

第三步:登录MySQL 客户端,执行下面sql

GRANT REPLICATION SLAVE ON . to 'xiaoming'@'%' IDENTIFIED by 'Root@123456';

作用: 创建一个用户 xiaoming 密码为 Root@123456,并且给xiaoming 用户授予 replication slave 权限,常用于建立复制时所需要用到的用户权限,也就是slave 必须被 master 授权具有该权限的用户,才能通过该用户复制

第四步:登录 MySQL 数据库,执行下面的sql 记录下结果中 file 和 position 的值

show master status;

上面的sql 作用是查看 master 的状态,执行完此 sql 后就不要执行任何操作了

配置 - 从库 Slave

// 注意 : 如果该数据库是虚拟机克隆的机器上的数据库,那么需要修改 数据库的 uuid ,保证主从复制不出错误

  1. 首先查找到 mysql 的安装地址 show variables like 'datadir';
  2. 通过 MySQL 生成一个uuid 机型记录等会用于修改 select uuid();
  3. 进入 datadir 目录 修改 auto.cnf 文件 vi /var/lib/mysql/auto.cnf
  4. 最后重启MySQL 服务 systemctl restart mysqld

第一步: 修改MySQL数据库的配置文件 /etc/my.cnf

[mysqld]

server-id=135 #必须 服务器唯一 ID

第二步:重启 MySQL 服务

systemctl restart mysqld

第三步:登录MySQL数据库,执行下面sql

CHANGE MASTER TO master_host='192.168.141.133',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=441;

start slave;

如果有 slave在运行 ,则 stop slave 停止 slave

最后查看slave 的 状态;show slave status;

Slave_IO_State = Wating for master

Slave_IO_Running = Yes

Slave_SQL_Running = Yes

这三个状态为上述则说明安装成功

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
1
0
0
分享
相关文章
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
154 10
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
87 28
Vue项目部署:如何打包并上传至服务器进行部署?
以上就是Vue项目打包及部署的方法,希望对你有所帮助。描述中可能会有一些小疏漏,但基本流程应该没有问题。记住要根据你的实际情况调整对应的目录路径和服务器IP地址等信息。此外,实际操作时可能会遇到各种问题,解决问题的能力是每一位开发者必备的技能。祝你部署顺利!
219 17
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
53 18
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
179 0
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
345 82
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。