MySQL--在CentOS7上安装mysql-8.0.29(glibc和源码)

一.MySQL概述

1.关系型数据库与非关系型数据库

  • 简单来说,关系型数据库,是指采用了二维表格来组织数据的数据库。
    oracle、mysql、DB2、SQL server等都是关系型数据库。

  • 非关系型数据库是通过key/value键值对来维护数据的。
    非关系型数据库有: Redis、MongoDB…

RDBMS(relational database management system),既关系型数据库管理系统。

2.事务

关系型数据库的最大特点就是事务的一致性,所以也在对事物一致性的维护中有很大的开销。

事务由一条或者多条sql语句组成;在事务中的操作,这些sql语句要么都成功执行,要么都不执行,这就是一个事务。

事务特点(ACID)

  • 原子性(Atomicity):
    事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行

  • 一致性(Consistency):
    指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态,不能破坏关系数据的完整性以及业务逻辑上的一致性。

  • 隔离性(Isolation):
    一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

  • 持久性(Durability):
    持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

3.MySQL版本

MySQL是目前应用最广泛的开源关系数据库。MySQL最早是由瑞典的MySQL AB公司开发,该公司在2008年被SUN公司收购,紧接着,SUN公司在2009年被Oracle公司收购,所以MySQL最终就变成了Oracle旗下的产品。

  • 社区版:MySQL Community Edition (GPL)
  • 企业版:MySQL Enterprise Edition(commercial)
    MySQL 企业版包括最全面的 MySQL 高级特性、管理工具和技术支持。
  • 集群版:MySQL Cluster CGE(commercial)

4.MySQL几种安装方式

安装方式优点缺点
rpm安装卸载简单可定制性差
glibc可定制性相比rpm包灵活安装相比rpm包复杂些,需要手动初始化数据库
源码安装可定制性最强,根据需求和功能定制安装麻烦,需要手动初始化数据库

5.mysql安装包获取

第一步:进入mysql官网,点击downloads
请添加图片描述
第二步:点击 MySQL Community(GPL) Downloads
请添加图片描述
第三步:点击mysql社区版下载
请添加图片描述
第四步:glibc版安装包下载
请添加图片描述
第五步:源码包下载
请添加图片描述

二.glibc版本安装

1.安装及初始化流程

参照MySQL官方文档:
https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html

请添加图片描述
安装配置:

选项
安装路径/usr/local/mysql
数据路径/usr/local/mysql/data
端口号3306
错误日志/usr/local/mysql/data/主机名.err

第一步:解压下载好的包(MySQL Server 8.0.12 中压缩算法由 Gzip 改为 XZ;并且通用二进制文件的扩展名从 .tar.gz 更改为 .tar.xz)

tar -Jxf mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.29-linux-glibc2.12-x86_64 /usr/local/mysql

第二步:安装依赖

yum install libaio

第三步:创建mysql用户和用户组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql.mysql /usr/local/mysql

rm -rf /etc/my.cnf				#清空原有的mariadb配置文件

第四步:建立mysql-files目录

cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

第五步:初始化

cd /usr/local/mysql
bin/mysqld --initialize --user=mysql
# --initialize		初始化
# --user=mysql		以mysql用户身份初始化数据库,产生文件都是mysql作为拥有者

#运行完毕后,最后一行有root账号的密码
2022-05-14T14:42:40.647560Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: :zr.=4wU6m:I

mysql有没有初始化成功,主要看mysql目录下有没有产生data文件夹且文件夹中至少要有一个mysql的文件夹。

第六步:设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据

bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

第七步:启动数据库

cp support-files/mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
46basedir=/usr/local/mysql
47datadir=/usr/local/mysql/data

service mysql start 

2.安装完成后的配置

#修改root用户密码为123(实验环境)
/usr/local/mysql/bin/mysqladmin -uroot password '123' -p


#将mysql客户端命令添加到环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
#或做一个软链接
ln -s /usr/local/mysql/bin/mysql /usr/bin


#手工定义MySQL的配置文件
vim /usr/local/mysql/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#选项说明:
#[mysqld]	代表针对服务器端进行配置
#basedir	代表数据库的安装目录
#datadir	代表数据目录,以后专门用于存放数据文件的(核心目录)
#socket		代表套接字文件,专门为客户端与服务器端连接提供一个桥梁
service mysql restart

#安全配置
/usr/local/mysql/bin/mysql_secure_installation

#添加到开机启动项
chkconfig --add mysql
chkconfig mysql on

3.问题记录

  1. mysql的日志会写入data目录下的“主机名.err”文件中,mysql的故障问题一般在这个文件中能找到原因。
  2. 安装前最好将/etc/my.cnf文件删除。数据库在初始化时,首先在自己的安装目录下寻找有没有my.cnf配置文件,如果有,会自动根据里面的配置信息进行初始化。如果找不到,则到/etc目录下寻找my.cnf文件,如果有,依然会按照其内部的配置进行初始化,但是由于/etc目录下的my.cnf文件是mariadb的,这会导致我们的初始化如果按照mariadb的配置,会导致初始化失败。
  3. 确认是否初始化成功,可以确认一下安装目录下有没有data目录。
  4. mysql-files主要用于数据文件的导入与导出(备份与还原),MySQL的备份会产生一个文件。mysql-files就是导入与导出时,所指定的默认目录。

三.源码编译安装

1.安装及初始化流程

参照MySQL官方文档
https://dev.mysql.com/doc/refman/8.0/en/source-installation.html

安装配置:

选项
安装目录/mysql
数据目录/mysql/data
端口号3306
socket文件位置/mysql/mysql.sock
字符集utf8mb4
配置文件/mysql/my.cnf

第一步:解决依赖

#需要cmake3以上,官方下载https://cmake.org/download/,yum源带的版本不够
yum remove cmake				#慎用啊,卸载旧版本
tar -zxf cmake-3.23.1-linux-x86_64.tar.gz
mv cmake-3.23.1-linux-x86_64 /opt/cmake-3.23.1
vim /etc/profile
	export CMAKE_HOME="/opt/cmake-3.23.1"		#添加这两行
	export PATH=$PATH:$CMAKE_HOME/bin
source /etc/profile
cmake --version				#确认一下版本

#需要gcc7.1以上
yum install centos-release-scl			#安装centos-release-scl
yum install devtoolset-11-gcc*			#安装devtoolset
scl enable devtoolset-11 bash			#激活对应的devtoolset
cd /opt/rh/devtoolset-11
source ./enable


yum install bison gcc-c++ ncurses-devel libaio-devel openssl-devel -y
#bison:一般linux7中自带
#gcc-c++:MySQL C API 需要C++或C99编译器进行编译
#ncurses-devel:依赖项
#openssl-devel:用来支持ssl加密连接

第二步:编译安装

#将源码包上传到root用户家目录/root/内
tar -zxf mysql-boost-8.0.29.tar.gz		#解压源码包
cd mysql-8.0.29
mkdir build								#新建一个用于产生编译文件的目录
cd build
vim myconfig.sh
    cmake .. \
    -DCMAKE_INSTALL_PREFIX=/mysql \
    -DMYSQL_DATADIR=/mysql/data \
    -DMYSQL_TCP_PORT=3306 \
    -DMYSQL_UNIX_ADDR=/mysql/mysql.sock \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_FEDERATED_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DDEFAULT_CHARSET=utf8mb4 \
    -DDEFAULT_COLLATION=utf8mb4_general_ci \
    -DWITH_SSL=system \
    -DWITH_BOOST=/root/mysql-8.0.29/boost
chmod +x myconfig.sh						#添加可执行权限
./myconfig.sh								#执行脚本
make -j2 && make install					#编译安装

第三步:创建mysql用户和用户组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql.mysql /mysql

rm -rf /etc/my.cnf				#清空原有的mariadb配置文件

第四步:建立mysql-files目录

cd /mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

第五步:初始化

cd /mysql
bin/mysqld --initialize --user=mysql --basedir=/mysql --datadir=/mysql/data
#运行完毕后,最后一行有root账号的密码
2022-05-15T16:46:13.350247Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: a#RZ*9?tdxs*

第六步:设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据

bin/mysql_ssl_rsa_setup --datadir=/mysql/data

第七步:启动数据库

cp support-files/mysql.server /etc/init.d/mysql
#源码编译时已经指定的basedir和datadir所以这里不用修改/etc/init.d/mysql了

service mysql start 

2.安装完成后的配置

#修改root用户密码为123(实验环境)
/mysql/bin/mysqladmin -uroot password '123' -p

#将mysql客户端命令添加到环境变量
echo 'export PATH=$PATH:/mysql/bin' >> /etc/profile
source /etc/profile
#或做一个软链接
ln -s /mysql/bin/mysql /usr/bin

#手工定义MySQL的配置文件
vim /mysql/my.cnf
[mysqld]
basedir=/mysql
datadir=/mysql/data
socket=/mysql/mysql.sock

service mysql restart

#安全配置
/mysql/bin/mysql_secure_installation

#添加到开机启动项
chkconfig --add mysql
chkconfig mysql on

3.cmake配置选项

参照:
https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html

配置选项描述默认值建议值
CMAKE_INSTALL_PREFIX安装目录(basedir)/usr/local/mysql根据需求
MYSQL_DATADIR数据目录(datadir)$basedir/data根据需求
SYSCONFDIR默认配置文件my.cnf路径/etc
MYSQL_TCP_PORTTCP/IP端口3306非默认端口
MYSQL_UNIX_ADDR套接字socket文件路径/tmp/mysql.sock$basedir/
DEFAULT_CHARSET默认字符集utf8mb4utf8mb4
DEFAULT_COLLATION默认校验规则utf8mb4_0900_ai_ciutf8mb4_0900_ai_ci
ENABLED_LOCAL_INFILE是否启用本地加载外部数据文件功能OFF建议开启
WITH_SSLSSL支持类型system建议显式指定
WITH_BOOSTBoost库源代码的位置Boost库是构建MySQL所必需,建议事先下载
WITH_FEDERATED_STORAGE_ENGINE本地数据库是否可以访问远程mysql数据01
WITH_INNOBASE_STORAGE_ENGINE将InnoDB存储引擎插件构建为静态模块编译到服务器中01
WITH_BLACKHOLE_STORAGE_ENGINE黑洞存储引擎,接收数据,但不存储,直接丢弃01
WITH_MYISAM_STORAGE_ENGINE将MYISAM存储引擎静态编译到服务器中01
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是在CentOS 7上通过源码安装MySQL的详细步骤: 1. 准备编译环境: - 确保系统已安装必要的编译工具,使用以下命令安装: ``` sudo yum groupinstall "Development Tools" ``` - 安装其他依赖项: ``` sudo yum install cmake ncurses-devel ``` 2. 下载MySQL源码: - 访问MySQL官方网站(https://dev.mysql.com/downloads/mysql/),找到并下载适合您系统的MySQL源码。 3. 解压源码包: - 在终端中,进入下载目录,然后执行以下命令解压: ``` tar xf mysql-<version>.tar.gz ``` 4. 创建MySQL安装目录: - 在终端中,执行以下命令创建一个目录作为MySQL安装目录(例如:/usr/local/mysql): ``` sudo mkdir /usr/local/mysql ``` 5. 编译和安装MySQL: - 进入解压后的MySQL源码目录: ``` cd mysql-<version> ``` - 使用下面的命令配置编译选项: ``` cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_SSL=yes ``` - 执行下面的命令编译并安装MySQL: ``` make && sudo make install ``` 6. 创建MySQL用户和组: - 在终端中,执行以下命令创建MySQL用户和组: ``` sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql ``` 7. 初始化MySQL数据目录: - 在终端中,进入MySQL安装目录: ``` cd /usr/local/mysql ``` - 执行以下命令初始化MySQL数据目录: ``` sudo scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data ``` 8. 配置MySQL: - 在终端中,执行以下命令编辑MySQL配置文件: ``` sudo vi /etc/my.cnf ``` - 将以下内容添加到文件中: ``` [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data ``` - 保存并退出配置文件。 9. 启动MySQL服务: - 在终端中,执行以下命令启动MySQL服务: ``` sudo /usr/local/mysql/support-files/mysql.server start ``` 10. 设置root密码: - 在终端中,执行以下命令登录MySQL服务器: ``` /usr/local/mysql/bin/mysql -u root ``` - 在MySQL提示符下,执行以下命令设置root密码: ``` ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password'; ``` (将"your_password"替换为您想要设置的密码) - 退出MySQL提示符: ``` quit ``` 现在,您已经成功在CentOS 7上通过源码安装MySQL。您可以使用以下命令启动和停止MySQL服务: ``` sudo /usr/local/mysql/support-files/mysql.server start sudo /usr/local/mysql/support-files/mysql.server stop ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值