linux下安装解压版mysql5.7,看了这篇女朋友都能安装数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云防火墙,500元 1000GB
简介: linux系统centos7.2,mysql版本5.7,网络上看了很多的教程,大部分都失败了,很多人写的安装步骤,都存在很多问题。这里就不一一说明了,这是一篇很优质的安装教程,一次通过,保证你女朋友看了都能一次成功。

前言:



linux系统centos7.2,mysql版本5.7,网络上看了很多的教程,大部分都失败了,很多人写的安装步骤,都存在很多问题。这里就不一一说明了,这是一篇很优质的安装教程,一次通过,保证你女朋友看了都能一次成功。


一.前置准备



1.卸载旧版MySQL


注意如果是一个完整的centos系统可以不去安装相关依赖,但是对于不知道自己是否已安装相关依赖的可以执行安装命令(耗时可能会长)。这里附上一个centos7.2的系统地址,无需安装任何依赖,系统安装即用

地址:https://pan.baidu.com/s/1SRiVqTJCyHoaE1cxjiL_Tg

提取码:gh26

查看rpm包
rpm -qa|grep mysql 若有可用rpm -e卸载
查找mysql残留包,有则删除,没有则忽略
find / -name mysql
安装相关依赖
yum -y install make gcc-c++ cmake bison-devel ncurses-devel numactl libaio
创建用户和用户组
groupadd mysql
useradd -s /sbin/nologin -g mysql -M mysql


二.下载二进制安装包并解压



这里的下载安装包可能会比较慢,提供一个网盘下载5.7.31的版本,亲测安装可用,其他步骤不变


地址:https://pan.baidu.com/s/1JwCtrIL7dsbaZexoBHboUw

提取码:4tub

cd /usr/local/
# wget下载或者本地下载后上传
wget https://downloads.mysql.com/archives/get/file/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
# 解压安装包
tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
# 解压后为了方便后面操作可把解压后文件名修改为mysql
mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql
# 更改文件夹所属
chown -R mysql.mysql /usr/local/mysql/


三.创建mysql相关目录及文件



mkdir -p /data/mysql/{data,logs,tmp}
# 更改文件夹所属
chown -R mysql.mysql /data/mysql/
# 创建mysql配置文件my.cnf,已存在的话直接将内容覆盖就行
vi /etc/my.cnf
# 简单模板如下(可直接复制使用):
[client]
port            = 3306
socket          = /data/mysql/tmp/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql        
datadir = /data/mysql/data  
port = 3306               
socket = /data/mysql/tmp/mysql.sock
pid-file  = /data/mysql/tmp/mysqld.pid
tmpdir = /data/mysql/tmp    
skip_name_resolve = 1
symbolic-links=0
max_connections = 2000
group_concat_max_len = 1024000
sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names = 1
log_timestamps=SYSTEM
character-set-server = utf8
interactive_timeout = 1800  
wait_timeout = 1800
max_allowed_packet = 32M
binlog_cache_size = 4M
sort_buffer_size = 2M
read_buffer_size = 4M
join_buffer_size = 4M
tmp_table_size = 96M
max_heap_table_size = 96M
max_length_for_sort_data = 8096
#logs
server-id = 1003306
log-error = /data/mysql/logs/error.log
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/slow.log
long_query_time = 3
log-bin = /data/mysql/logs/binlog
binlog_format = row
expire_logs_days = 15
log_bin_trust_function_creators = 1
relay-log = /data/mysql/logs/relay-bin
relay-log-recovery = 1  
relay_log_purge = 1  
#innodb  
innodb_file_per_table = 1
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_flush_neighbors = 0
innodb_flush_method = O_DIRECT
innodb_autoinc_lock_mode = 2
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_buffer_pool_size = 2G


四.配置mysql.server



cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysql
vi /etc/init.d/mysql
# 修改目录位置
basedir=/usr/local/mysql
datadir=/data/mysql/data
 # 注册开机启动服务
chkconfig --add mysql
chkconfig --list


五.添加环境变量



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


六.初始化mysql



/usr/local/mysql/bin/mysqld  --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
# 临时密码保存在errlog中 
# 获取临时密码,该密码第一次登陆mysql时会被使用,注意密码可能是分号结尾,一起复制
more /data/mysql/logs/error.log |grep password


七.启动mysql服务 并修改密码



# 启动mysql服务
service mysql start
# 使用初始密码登录mysql服务 并修改密码,下面所示是将密码改为root
mysql -uroot -p
alter user 'root'@'localhost' identified by 'root';
flush privileges;


八.Navicat连接mysql问题10038



经常会报的问题就是10038,如下图

20210323135003627.png


网上搜罗的解决方案主要是三种,如下


1.user表更改root用户的host值


在系统中登录mysql客户端,查看user表信息如下

mysql -u root -p
# 登录成功后
use mysql;
select user,host from user;


结果如下:


20210323135736222.png


若是上方查出的结果root对应的host没有%,则需要更改(多个root,有一个对应了%就行),使用以下命令更改。

# 更改root的host值
update user set host = '%' where user = 'root';
# 刷新(改完一定要刷新)
flush privileges;


这些做完,可尝试连接测试,若还是不行,继续第二种方法。


2.检查my.cnf配置文件的bind-address值


my.cnf配置文件一般存储在/etc/my.cnf这里,也可能不同,如果不清楚可以使用find -name 命令查看下该文件位置。操作如下所示

# 全盘查找my.cnf(若是用户权限不足,可切换root查找)
find / -name my.cnf
cd /etc/mysql/my.cnf
vi my.cnf
# 将以下内容
# bind-address=127.0.0.1
更改为以下内容
bind-address=0.0.0.0


以上操作完以后可继续测试以下是否可以连接成功,这部分不改的话,是远程连接不上去的,更改这块就是允许远程连接的。若是还是不行,九成就是防火墙的问题了。


3.查看防火墙状态,关闭防火墙


有部分端口号防火墙默认是不允许通过的,其中3306就是很常见的一个,所以我们在使用远程连接时,不可能连接的上。我们可以直接使用命令查看防火墙状态,关闭防火墙再测试一遍。如下:

注意:


不同系统,命令会有区别,若是系统不一致,可在查询下具体命令,centos6防火墙是iptables,centos7则是firewalld,操作命令也不同。

# 查看防火墙放行的端口
firewall-cmd --list-ports
# centos7查看防火墙的状态
sudo systemctl status firewalld
# centos7关闭防火墙(临时更改,重启失效)
sudo systemctl stop firewalld
# centos7打开防火墙(临时更改,重启失效)
sudo systemctl start firewalld


若是还没有解决,建议使用方式4万能解决法,肯定解决的了,若是已经解决,上面的命令只是临时的关闭防火墙,这种方式肯定不可能永远解决问题。永久解决的方案有两种,一种是永久关闭防护墙,一种是让防火墙放行3306端口,建议使用防火墙放行3306端口的方案。操作如下:


centos7永久关闭防火墙

# 关掉系统重启时重新启动防火墙的功能
sudo systemctl disable firewalld
# 关闭防火墙
sudo systemctl stop firewalld
# 重启后生效
reboot


此时再重启,防火墙就是关闭的状态了,若是需要开启防火墙,命令如下

# 开启系统重启时重新启动防火墙的功能
sudo systemctl enable firewalld
# 开启防火墙
sudo systemctl start firewalld
# 重启后生效
reboot


让防火墙放行3306端口。

# 放行3306端口,然后一定要重启防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
systemctl restart firewalld.service
# 再次查看端口有没有放行成功,下面出现3306就表示成功了
firewall-cmd --list-ports
# 参数解释
# –zone 用以标识该端口放行的范围
# --add-port=3306/tcp 标识端口与通讯协议
# --permanent 标识重启放行依然生效


4.万能解决法


以上三种方法还是不行?别试了,从新装一个可能耗时都比找解决问题的时间短,使用文中提供的centos7.2,与mysql5.7.31的包从新安装(文中有网盘链接),按照上面的流程操作保证一遍过,在远程连接时没有连接上的话,直接关掉防火墙就可以,整个流程我都已经测试过,没有问题,希望对有困惑的小伙伴有所帮助。


总结



在经历了多次尝试后,搜了几个教程都是不对,最后才弄成,过程还是有些曲折,为了自己下次不再犯同样的错误,总结了这版安装到修复10038问题的文章,网上很多人提供教程文章,不说操作系统版本其实是没有意义的,就算都是centos不同版本都不一样,自己也引以为戒,操作时一定要根据版本来确定问题,不然即使搜到了大概率也是不能用的。


所以远程服务连接不上首先应该考虑的就是防火墙与配置文件是否允许了远程访问,bind:127.0.0.1是不允许远程访问的。

支持原创,本文参考了这篇文章。https://blog.csdn.net/wanghao112956/article/details/90748883



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
4天前
|
关系型数据库 MySQL Linux
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
33 8
|
15天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
100 20
|
9天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
99 7
|
10天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
35 3
|
10天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
37 3
|
10天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
50 2
|
23天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
167 15
|
17天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
16天前
|
Unix Linux 编译器
UNIX/Linux 上的安装
UNIX/Linux 上的安装。
35 2