运维实战---多种方式在Linux中部署并初始化MySQL

server/2025/1/12 6:49:01/
运维实战—多种方式在Linux中部署并初始化MySQL
    • 前言
    • 实验环境介绍
    • 一、源码包安装MySQL
      • 1、配置MySQL&编译安装
      • 2、初始化数据库
      • 3、配置环境变量
    • 二、yum安装MySQL
    • 三、rpm安装MySQL

前言

MySQL是常用的关系型数据库,具有以下特点:
1、开源,不需要支付额外的费用即可使用
2、支持包括Windows/Linux在内的多个操作系统
3、支持多种语言,包括中文编码GB 2312、BIG5,日文的shift_JIS
4、为包括C、C++、java、python、PHP在内的多种编程语言提供了API
5、支持多种存储引擎,例如MyISAM、InnoDB
6、使用标准的SQL语言进行操作
7、支持多线程,充分利用CPU资源
8、存储数据量大,32位系统表文件最大可支持4GB,64位系统表文件最大可支持8TB
9、可以定制,采用了GPL协议,通过修改源码来开发自己的MySQL系统

基于以上特点,MySQL被广泛用于学习与实际工作中,本篇文章介绍在Linux系统中使用多种方式部署并初始化MySQL数据库,包括源码安装、rpm安装以及yum安装

实验环境介绍

1、最小化安装的4核4g Centos7.6 虚拟机
2、XShell远程连接工具
3、本文章中使用的所有源码包、rpm包的下载地址:https://www.mysql.com/downloads/

一、源码包安装MySQL

相较于其他两种安装,源码安装较繁琐,但优势在于可以在安装时以及初始化阶段将需要设置的参数一次性设置到位
以下是安装过程

1、配置MySQL&编译安装

一些版本的Linux系统中默认存在mariadb组件,该组件与安装MySQL是冲突的,在安装MySQL之前必须把该组件卸载掉,其中 --nodeps可以指定只删除mariadb-libs,不删除其依赖关系

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

接下来为MySQL安装依赖,这些依赖包在本地yum源中均存在,无需配置其他网络yum源。不会配置本地yum源的同学请看
CentOS7.6配置本地仓库

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

将依赖包上传至Linux系统中需要安装命令lrzsz,该命令可实现Windows拖动文件上传至Linux系统中

yum -y install lrzsz

之后将在MySQL官网上下载的源码包拖动上传至Linux系统
拖动上传
解压源码包到指定路径下,解压完成后切换到该路径下

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

解压
接着进行预编译,有别于其他软件,MySQL的预编译使用的是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

#解释一下上述代码
-DCMAKE_INSTALL_PREFIX —指定安装路径
-DMYSQL_DATADIR —数据目录,即MySQL的数据存放路径
-DSYSCONFDIR —配置文件所在路径
-DWITH_INNOBASE_STORAGE_ENGINE/-DWITH_MYISAM_STORAGE_ENGINE —启用两种存储引擎
-DDEFAULT_CHARSET/-DDEFAULT_COLLATION —指定字符集
-DENABLED_LOCAL_INFILE —启用或禁用LOAD DATA LOCAL INFILE 语句
-DMYSQL_TCP_PORT —指定服务端口号
-DMYSQL_UNIX_ADDR —指定Unix套接字文件的路径
-DWITH_INNODB_MEMCACHED —启用或禁用InnoDB 存储引擎对 Memcached 的支持
-DWITH_BOOST —指定boost库

运行完上述代码
运行代码
如果出现报错,检查一下依赖包是否都齐全

接着进行编译安装

make -j4 && make install

其中-j选项表示多个线程进行编译,这样可以节省时间

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

解释一下上述代码
groupadd mysql #为MySQL创建一个组来管理软件的运行
useradd -r-g mysql -s /bin/false mysql #为MySQL创建一个用户来管理软件的运行
cd /usr/local/mysql #切换到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 #创建日志文件目录
vim /usr/local/mysql/etc/my.cnf #创建编辑配置文件,默认也存在配置文件但其中内容较少

将以下的配置文件粘贴进去

[client]                                                #客户端设置
port=3306                                               #服务器监听端口,默认为3306
socket=/usr/local/mysql/tmp/mysql.sock                  #Unix套接字文件路径,默认/tmp/mysql.sock[mysqld]                                                #服务端设置
## 一般配置选项
port=3306                                               #服务器监听端口,默认为3306
basedir=/usr/local/mysql                                #MySQL安装根目录
datadir=/usr/local/mysql/data                           #MySQL数据文件目录
socket=/usr/local/mysql/tmp/mysql.sock                  #Unix套接字文件路径,默认/tmp/mysql.sock
pid-file=/usr/local/mysql/tmp/mysql.pid                 #服务进程pid文件路径
character_set_server=utf8                               #默认字符集
default_storage_engine=InnoDB                           #默认InnoDB存储引擎
user=mysql## 连接配置选项
max_connections=200                                     #最大并发连接数
table_open_cache=400                                    #表打开缓存大小,默认2000
open_files_limit=1000                                   #打开文件数限制,默认5000
max_connect_errors=200                                  #最大连接失败数,默认100
back_log=100                                            #请求连接队列数
connect_timeout=20                                      #连接超时时间,默认10秒
interactive_timeout=1200                                #交互式超时时间,默认28800秒
wait_timeout=600                                        #非交互超时时间,默认28800秒
net_read_timeout=30                                     #读取超时时间,默认30秒
net_write_timeout=60                                    #写入超时时间,默认60秒
max_allowed_packet=8M                                   #最大传输数据字节,默认4M
thread_cache_size=10                                    #线程缓冲区(池)大小
thread_stack=256K                                       #线程栈大小,32位平台196608、64位平台262144## 临时内存配置选项
tmpdir=/tmp                                             #临时目录路径
tmp_table_size=64M                                      #临时表大小,默认16M
max_heap_table_size=64M                                 #最大内存表大小,默认16M
sort_buffer_size=1M                                     #排序缓冲区大小,默认256K
join_buffer_size=1M                                     #join缓冲区大小,默认256K## Innodb配置选项
#innodb_thread_concurrency=0							#InnoDB线程并发数
innodb_io_capacity=200                                  #IO容量,可用于InnoDB后台任务的每秒I/O操作数(IOPS),
innodb_io_capacity_max=400                              #IO最大容量,InnoDB在这种情况下由后台任务执行的最大IOPS数
innodb_lock_wait_timeout=50                             #InnoDB引擎锁等待超时时间,默认50(单位:秒)innodb_buffer_pool_size=512M							#InnoDB缓冲池大小,默认128M
innodb_buffer_pool_instances=4                          #InnoDB缓冲池划分区域数
innodb_max_dirty_pages_pct=75							#缓冲池最大允许脏页比例,默认为75
innodb_flush_method=O_DIRECT                            #日志刷新方法,默认为fdatasync
innodb_flush_log_at_trx_commit=2                        #事务日志刷新方式,默认为0
transaction_isolation=REPEATABLE-READ                   #事务隔离级别,默认REPEATABLE-READinnodb_data_home_dir=/usr/local/mysql/data              #表空间文件路径,默认保存在MySQL的datadir中
innodb_data_file_path=ibdata1:128M:autoextend           #表空间文件大小
innodb_file_per_table=ON                                #每表独立表空间innodb_log_group_home_dir=/usr/local/mysql/data         #redoLog文件目录,默认保存在MySQL的datadir中
innodb_log_files_in_group=2                             #日志组中的日志文件数,默认为2
innodb_log_file_size=128M                               #日志文件大小,默认为48MB
innodb_log_buffer_size=32M                              #日志缓冲区大小,默认为16MB## MyISAM配置选项
key_buffer_size=32M                                     #索引缓冲区大小,默认8M
read_buffer_size=4M										#顺序读缓区冲大小,默认128K
read_rnd_buffer_size=4M									#随机读缓冲区大小,默认256K
bulk_insert_buffer_size=8M                              #块插入缓冲区大小,默认8M
myisam_sort_buffer_size=8M								#MyISAM排序缓冲大小,默认8M
#myisam_max_sort_file_size=1G                           #MyISAM排序最大临时大小
myisam_repair_threads=1                                 #MyISAM修复线程
skip-external-locking                                   #跳过外部锁定,启用文件锁会影响性能## 日志配置选项
log_output=FILE                                         #日志输出目标,TABLE(输出到表)、FILE(输出到文件)、NONE(不输出),可选择一个或多个以逗>号分隔
log_error=/usr/local/mysql/logs/error.log               #错误日志存放路径
log_error_verbosity=1                                   #错误日志过滤,允许的值为1(仅错误),2(错误和警告),3(错误、警告和注释),默认值为3。
log_timestamps=SYSTEM                                   #错误日志消息格式,日志中显示时间戳的时区,UTC(默认值)和 SYSTEM(本地系统时区)
general_log=ON                                          #开启查询日志,一般选择不开启,因为查询日志记录很详细,会增大磁盘IO开销,影响性能
general_log_file=/usr/local/mysql/logs/general.log      #通用查询日志存放路径## 慢查询日志配置选项
slow_query_log=ON                                       #开启慢查询日志
slow_query_log_file=/usr/local/mysql/logs/slowq.log		#慢查询日志存放路径
long_query_time=2                                       #慢查询时间,默认10(单位:秒)
min_examined_row_limit=100                              #最小检查行限制,检索的行数必须达到此值才可被记为慢查询
log_slow_admin_statements=ON                            #记录慢查询管理语句
log_queries_not_using_indexes=ON                        #记录查询未使用索引语句
log_throttle_queries_not_using_indexes=5                #记录未使用索引速率限制,默认为0不限制
log_slow_slave_statements=ON                            #记录从库复制的慢查询,作为从库时生效,从库复制中如果有慢查询也将被记录## 复制配置选项
server-id=1                                             #MySQL服务唯一标识
log-bin=mysql-bin                                       #开启二进制日志,默认位置是datadir数据目录
log-bin-index=mysql-bin.index                           #binlog索引文件
binlog_format=MIXED                                     #binlog日志格式,分三种:STATEMENT、ROW或MIXED,MySQL 5.7.7之前默认为STATEMENT,之后默认为ROW
binlog_cache_size=1M                                    #binlog缓存大小,默认32KB
max_binlog_cache_size=1G                                #binlog最大缓存大小,推荐最大值为4GB
max_binlog_size=256M                                    #binlog最大文件大小,最小值为4096字节,最大值和默认值为1GB
expire_logs_days=7                                      #binlog过期天数,默认为0不自动删除
log_slave_updates=ON                                    #binlog级联复制
sync_binlog=1                                           #binlog同步频率,0为禁用同步(最佳性能,但可能丢失事务),为1开启同步(影响性能,但最安全不会丢失任何事务),为N操作N次事务后同步1次relay_log=relay-bin                                     #relaylog文件路径,默认位置是datadir数据目录
relay_log_index=relay-log.index                         #relaylog索引文件
max_relay_log_size=256M                                 #relaylog最大文件大小
relay_log_purge=ON                                      #中继日志自动清除,默认值为1(ON)
relay_log_recovery=ON                                   #中继日志自动恢复auto_increment_offset=1                                 #自增值偏移量
auto_increment_increment=1                              #自增值自增量
slave_net_timeout=60                                    #从机连接超时时间
replicate-wild-ignore-table=mysql.%                     #复制时忽略的数据库表,告诉从线程不要复制到与给定通配符模式匹配的表
skip-slave-start                                        #跳过Slave启动,Slave复制进程不随MySQL启动而启动## 其他配置选项
#memlock=ON                                             #开启内存锁,此选项生效需系统支持mlockall()调用,将mysqld进程锁定在内存中,防止遇到操作系统导致mysqld交换到磁盘的问题[mysqldump]                                             #mysqldump数据库备份工具
quick                                                   #强制mysqldump从服务器查询取得记录直接输出,而不是取得所有记录后将它们缓存到内存中
max_allowed_packet=16M                                  #最大传输数据字节,使用mysqldump工具备份数据库时,某表过大会导致备份失败,需要增大该值(大>于表大小即可)[myisamchk]                                             #使用myisamchk实用程序可以用来获得有关你的数据库表的统计信息或检查、修复、优化他们
key_buffer_size=32M                                     #索引缓冲区大小
myisam_sort_buffer_size=8M                              #排序缓冲区大小
read_buffer_size=4M                                     #读取缓区冲大小
write_buffer_size=4M                                    #写入缓冲区大小

初始化最后一步,按照配置文件的内容来创建数据库

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

创建数据库

3、配置环境变量

为MySQL数据库配置环境变量

echo export MYSQL_HOME=/usr/local/mysql >> /etc/profile   #软件的路径
echo export PATH=$MYSQL_HOME/bin:$PATH >> /etc/profile   #命令的路径
source /etc/profile   #重新加载系统环境变量配置文件

复制配置文件到init.d目录使系统能够使使用systemctl命令管理MySQL

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

设置软链接,把MySQL的命令都放在默认的命令里面,使得可以在系统的任何地方使用MySQL的命令

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

自MySQL5.7版本起,MySQL初始有默认密码,存放在日志文件当中

cat /usr/local/mysql/logs/error.log

默认密码
将冒号之后的内容复制

mysql -uroot -p

粘贴回车
进入数据库
进入之后的第一条命令只能修改密码,其他命令均无效

set password=password('123456');

语法 set password=password(‘新密码’);

设置密码
至此,源码包安装MySQL完成,可以开始使用数据库了

二、yum安装MySQL

yum安装和rpm安装较简单
安装lrzsz命令,使文件能上传到Linux中

yum -y install lrzsz

将在MySQL官网上下载的适合自己系统版本的yum源上传
上传yum源
安装yum源

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

安装yum源
查看可用的rpm包

yum list | grep mysql

安装mysql-community-servr即可,会自动解决依赖关系
在这里插入图片描述

yum -y install mysql-community-server

开启数据库服务

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

查看mysql默认密码

cat /var/log/mysqld.log | grep password

查看默认密码
进入MySQL

mysql -uroot -p

进入数据库
修改密码

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

至此yum安装完成,可以开始使用

三、rpm安装MySQL

同样上传rpm包

yum -y install lrzsz

上传rpm包
由于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 

下载完成之后启动

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

查看状态

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

rpm安装方式默认密码策略为8位大小写、数字、符号

set password=password('Aa12345&');

修改密码
至此安装完成

本篇文章到处结束


http://www.ppmy.cn/server/157269.html

相关文章

【JavaEE】—— SpringBoot项目集成百度千帆AI大模型(对话Chat V2)

本篇文章在SpringBoot项目中集成百度千帆提供的大模型接口实现Chat问答效果: 一、百度智能云 百度千帆大模型平台是百度智能云推出的一个企业级一站式大模型与AI原生应用开发及服务平台。 注册地址:https://qianfan.cloud.baidu.com/ 注册成功后&…

From Orthogonal Time Frequency Space to Affine Frequency Division Multiplexing

From Orthogonal Time Frequency Space to Affine Frequency Division Multiplexing 《从正交时频空间到仿射频分复用》 下一代无线系统将集成感知与通信(ISAC)功能,不仅为了实现新的应用,还为了应对高移动性场景以及毫米波&…

linux 服务器清理

起因 服务器报错:no space left on device 翻译:设备上没有剩余空间 解决方法 清理数据,这里有个点要注意, 对于重要文件,一定要备份。 步骤 1 首先,需要确定哪个分区或目录占用了大量空间。 df -h执…

Go 项目开发实战-用户Token的刷新、踢人下线和防盗检测

上一节我们说了Token的自解释性生成算法、Token信息的在服务端的存储以及客户端携带Token请求API时服务端的Token认证逻辑。 这节我们继续讲Token的刷新和主动踢人下线 ‍ ‍ 首先Token为啥刷新呢?很简单为了安全性用户AccessToken的时效性会相对较短,保…

设计模式 行为型 模板方法模式(Template Method Pattern)与 常见技术框架应用 解析

模板方法模式(Template Method Pattern)是软件设计模式中的一种行为设计模式。它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下重定义算法的某些特定步骤。 假设我们在制作不同…

android studio使用DataBinding

DataBinding 是谷歌官方发布的在android上对MVVM设计模式的一个实现框架,其作用是实现数据绑定。 Android DataBinding主要实现了View和ViewModel的双向绑定,包括用户的响应。并且实现了自动更新。 DataBinding优点: 1.大量减少Act…

RabbitMQ如何实现队列持久化

RabbitMQ的持久化机制是一种确保数据在RabbitMQ服务重启或异常情况下不会丢失的重要特性。在生产环境中,消息代理的稳定性和可靠性至关重要,而队列持久化正是实现这一目标的关键手段之一。以下将详细介绍RabbitMQ如何实现队列持久化。 一、RabbitMQ持久…

零基础入门Erlang

1.Erlang介绍 Index - Erlang/OTP Erlang是一种通用的面向并发的编程语言 Erlang是一个结构化,动态类型编程语言,内建并行计算支持 使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的 1.1 为什么选择Erlang 需要处理大量…