当前位置:首页 > 技术 > 正文内容

Linux系统中MySQL数据库的三种部署方法详解

访客 技术 2026年6月7日 1

前言

MySQL作为广泛使用的关系型数据库管理系统,凭借其开源特性、跨平台支持、多语言API接口、多样化的存储引擎以及对标准SQL的兼容性,成为开发与运维工作中的重要工具。本文将详细介绍在Linux系统环境下通过源码编译、YUM包管理器和RPM包三种方式部署并初始化MySQL数据库的完整流程。

实验环境

一、源码编译安装MySQL

源码编译方式虽然步骤较多,但提供了最大的配置灵活性,允许在安装和初始化阶段精确设置各项参数。

1. 环境准备与编译安装

首先检查并卸载可能存在的mariadb组件:

rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs

安装必要的编译依赖:

yum install -y cmake make gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel bison bison-devel

安装文件传输工具:

yum -y install lrzsz

上传MySQL源码包并解压:

tar -zxf mysql-boost-5.7.37.tar.gz -C /usr/src/
cd /usr/src/mysql-5.7.37/

使用cmake进行预配置:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/usr/local/mysql/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=ON \
-DWITH_MYISAM_STORAGE_ENGINE=ON \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_BOOST=boost/boost_1_59_0

编译并安装:

make -j4 && make install

2. 初始化数据库

创建必要的用户和目录结构:

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local/mysql
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/etc
mkdir -p /usr/local/mysql/tmp
mkdir -p /usr/local/mysql/logs
chown -R mysql:mysql /usr/local/mysql

创建并编辑配置文件:

vim /usr/local/mysql/etc/my.cnf

添加详细的配置内容(略,参考原配置但可优化部分参数)

初始化数据库:

bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize --user=mysql

3. 配置环境变量

设置系统环境变量:

echo export MYSQL_HOME=/usr/local/mysql >> /etc/profile
echo export PATH=$MYSQL_HOME/bin:$PATH >> /etc/profile
source /etc/profile

创建系统服务脚本:

cp /usr/src/mysql-5.7.37/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
systemctl daemon-reload
systemctl start mysql
chkconfig mysql on

创建命令软链接:

ln -s /usr/local/mysql/bin/* /usr/local/bin/

获取初始密码并登录:

cat /usr/local/mysql/logs/error.log | grep 'temporary password'
mysql -uroot -p

修改初始密码:

set password=password('NewPassword123!');

二、使用YUM安装MySQL

YUM方式安装最为简便,适合快速部署。

1. 配置YUM仓库

安装文件传输工具:

yum -y install lrzsz

上传MySQL YUM仓库配置文件并安装:

rpm -ivh mysql84-community-release-el7-1.noarch.rpm

2. 安装MySQL服务器

查看可用的MySQL包:

yum list | grep mysql

安装MySQL服务器:

yum -y install mysql-community-server

3. 启动服务并配置

启动并设置开机自启:

systemctl start mysqld && systemctl enable mysqld && systemctl status mysqld

查看初始密码并登录:

cat /var/log/mysqld.log | grep password
mysql -uroot -p

修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourSecurePassword!123';
FLUSH PRIVILEGES;

三、使用RPM包安装MySQL

RPM包方式介于源码和YUM之间,提供了良好的控制性。

1. 安装RPM包

安装文件传输工具:

yum -y install lrzsz

按顺序安装RPM包(解决依赖关系):

rpm -e mariadb-libs --nodeps
rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.37-1.el7.x86_64.rpm

2. 启动服务并配置

启动MySQL服务:

systemctl start mysqld && systemctl enable mysqld && systemctl status mysqld

查看初始密码并登录:

cat /var/log/mysqld.log | grep 'temporary password'
mysql -uroot -p

修改密码(注意RPM安装的密码策略要求):

set password=password('ComplexPass123!@#');

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。