mysql源码安装详解

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mysql源码安装详解

MYSQL简介



查看mysql简介


查看cmake编译mysql


实验环境



image.png


安装步骤



  • 下载安装包


[root@localhost ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
--2021-04-18 20:58:11--  https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
Resolving downloads.mysql.com (downloads.mysql.com)... 137.254.60.14
Connecting to downloads.mysql.com (downloads.mysql.com)|137.254.60.14|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz [following]
--2021-04-18 20:58:12--  https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
Resolving cdn.mysql.com (cdn.mysql.com)... 184.86.92.235
Connecting to cdn.mysql.com (cdn.mysql.com)|184.86.92.235|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 641127384 (611M) [application/x-tar-gz]
Saving to: ‘mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz’
100%[===================================================================>] 641,127,384 10.5MB/s   in 61s    
2021-04-18 20:59:13 (10.1 MB/s) - ‘mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz’ saved [641127384/641127384]
[root@localhost ~]# ls
anaconda-ks.cfg  back_yum  he.txt  mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz


  • 解压 安装包


[root@localhost ~]# mv mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz /usr/local/
[root@localhost local]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz 
[root@localhost local]# ln -s mysql-5.7.20-linux-glibc2.12-x86_64/  mysql
[root@localhost local]# ll mysql


  • 创建用户


[root@localhost local]# useradd -M -s /sbin/nologin mysql


  • 修改目录/usr/local/mysql的属主属组


[root@localhost local]# chown -R mysql:mysql mysql
[root@localhost local]# ll mysql
lrwxrwxrwx 1 mysql mysql 36 Apr 18 21:22 mysql -> mysql-5.7.20-linux-glibc2.12-x86_64/
[root@localhost local]# 


  • 设置环境变量


[root@localhost bin]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@localhost bin]# source /etc/profile.d/mysql.sh
[root@localhost bin]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


  • 建立数据存放目录,并修改权限


[root@localhost bin]# mkdir -p /data/mysql
[root@localhost bin]# chown -R mysql.mysql /data/mysql/
[root@localhost bin]# 


  • 初始化数据库


[root@localhost bin]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/mysql/ 
2021-04-18T13:31:12.749412Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-04-18T13:31:13.310688Z 0 [Warning] InnoDB: New log files created, LSN=45790
2021-04-18T13:31:13.376643Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-04-18T13:31:13.437436Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 584ca535-a04a-11eb-bee7-000c29e5f134.
2021-04-18T13:31:13.438276Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-04-18T13:31:13.439087Z 1 [Note] A temporary password is generated for root@localhost: !4wowa:8MipQ
[root@localhost bin]# 
请注意,这个命令的最后会生成一个临时密码,此处密码是!4wowa:8MipQ。每个人初始化密码不一样,后面初次登陆用


  • 创建mysql配置文件


[root@localhost bin]# cat > /etc/my.cnf <<EOF
> [mysqld]
> basedir=/usr/local/mysql
> datadir=/data/mysql/
> socket=/tmp/mysql.sock
> port=3306
> pid-file=/data/mysql/mysql.pid
> user=mysql
> skip-name-resolve
> EOF
[root@localhost bin]# cat /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/
socket=/tmp/mysql.sock
port=3306
pid-file=/data/mysql/mysql.pid
user=mysql
skip-name-resolve
[root@localhost bin]# 


  • 设置服务启动脚本


[root@localhost bin]# cd ../support-files/
[root@localhost support-files]# \cp -af mysql.server /etc/init.d/mysqld
root@localhost support-files]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
[root@localhost support-files]# sed -ri 's#^(datadir=).*#\1/data/mysql/#g' /etc/init.d/mysqld


  • 启动mysql


[root@localhost support-files]# 
[root@localhost support-files]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS! 


  • 测试:


[root@localhost ~]# ss -lant|grep 3306
LISTEN     0      80          :::3306                    :::*                  
[root@localhost ~]# mysql -uroot -p
Enter password: 
mysql> quit
Bye
[root@localhost ~]# 


总结



mysql常用配置文件参数


image.png


常见mysql 启动报错总结


  • 报错1


[root@localhost support-files]# /etc/init.d/mysqld start
Starting MySQL... ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
[root@localhost support-files]# 
关于网上对这个错误的总结,很多人都说权限问题,其实不管我们怎么给权限,好像都报错,很多时候都是因为配置文件有问题,才导致的,如果出现此错误,建议检查配置文件


  • 报错2


Systemctl restart mariadb.service
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
解决方法:查看错误日志:journalctl –xe
查看端口是否被占用:netstat -tnlp|grep 3306
最终的判断,MYSQL进程已经存在,无法启动Mariadb,解决方法,停止原来的MYSQL服务;


  • 报错3


Redirecting to /bin/systemctl restart  mariadb.service
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)解决方法:
使用journalctl –xe查看MYSQL错误信息;
关闭服务器selinux安全策略,关闭防火墙setenforce 0;
检查MYSQL|Mariadb通过什么样的方式部署的;
检查其配置文件/etc/my.cnf,datadir数据目录是否配置;检查socket是否配置正确
确认数据库的数据目录mysql用户是否拥有读写权限;
检查数据库目录是否初始化,是否包括mysql、test基础库;
检查socket文件所在的路径,是否存在socket文件,权限是否正确;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
100 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
84 2
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
282 2
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
62 3
|
4月前
|
关系型数据库 MySQL Linux
【一键解锁神秘力量!】CentOS 7 通过编译源码方式安装 MySQL 数据库 —— 从零到英雄的数据库安装实战秘籍!
【8月更文挑战第9天】随着业务增长,对数据库的需求日益提高。在 CentOS 7 中,通过编译源码安装 MySQL 可提供更高定制性和灵活性。本文详细介绍从准备环境、下载源码、配置编译参数到安装 MySQL 的全过程,并对比 RPM 包安装方法,帮助读者根据需求选择合适方案。实践时需注意备份数据、选择合适版本、确保安全性和调优性能等要点。
230 1
|
关系型数据库 MySQL C语言
源码安装MySQL8.0 1
源码安装MySQL8.0
149 0
|
关系型数据库 MySQL
麒麟系统源码安装mysql
麒麟系统源码安装mysql
124 0
|
关系型数据库 MySQL 数据安全/隐私保护
源码安装MySQL8.0 2
源码安装MySQL8.0
|
存储 关系型数据库 MySQL
源码安装MySQL-5.7.38的脚本
源码安装MySQL-5.7.38的脚本
205 1
|
关系型数据库 MySQL Linux
阿里云linux源码安装mysql
阿里云linux源码安装mysql