当前位置: 首页 > article >正文

【mysql】centOS7安装mysql详细操作步骤!—通过tar包方式

【mysql】centOS7安装mysql详细操作步骤!

linux系统安装mysql版本

需要 root 权限,使用 root 用户进行命令操作。使用tar文件包,安装,gz包也可以但是还需要配置用户,tar包虽然大,但是全啊!

1. 检查并卸载旧版本 MySQL(如果有)删除配置文件

查询是否存在 MariaDB 相关安装包,MariaDB 是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB 的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

rpm -qa | grep mariadb
# 删除已经安装的mariadb,通过上面查询得到的文件名为:mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
# 再查询是否存在 MariaDB 相关安装包
rpm -qa | grep mariadb
# 查看正在运行的 MySQL 服务

在安装新版本之前,需要确认系统中是否存在旧版本的 MySQL 并将其卸载。

# 查看是否安装了旧版本 MySQL
rpm -qa | grep mysql
# 如果有相关包,使用以下命令卸载,例如
sudo yum remove mysql*
# 查看系统版本
cat /etc/os-release
# 查看是x86_64,还是arm
uname -m

查看正在运行的 MySQL 服务

ps axj | grep mysql

存在正在运行的 MySQL 服务,停止 MySQL 服务

systemctl stop mysqld

查看 MySQL 服务状态

systemctl status mysqld

查询是否存在 MySQL 相关安装文件

find / -name mysql

存在 MySQL 相关安装文件,全部删除

rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /export/server/mysql
# 再次,查询是否存在 MySQL 相关安装文件
find / -name mysql

删除 MySQL 相关配置文件

rm -rf /etc/my.cnf /etc/init.d/mysql /etc/init.d/mysqld

删除 mysql 用户和用户组

userdel mysql
groupdel mysql

2. 下载MySQL +上传centOS7

访问 MySQL 官方下载页面(https://downloads.mysql.com/archives/community/),找到适合【选择系统,选择版本】

我用的下载链接是:https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar,8.036版本

下载完成后,上传centOS7 ,我通过rz命令上传的!

# 创建目录
mkdir -p /export/server/mysql
# 进入目录
cd /export/server/mysql
# 上传
rz 选择文件
# 解压到这个目录,.tar 格式的为打包不压缩,使用 tar -xvf,解压后是相关的文件,不是目录。
tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar -C /export/server/mysql
# 查看解压后的情况
ls -l /export/server/mysql

在这里插入图片描述

3. 安装依赖+安装rpm包

安装 openssl 和 openssl-devel,OpenSSL库是用于加密和解密数据的库,MySQL在安全通信时需要使用OpenSSL库。

yum -y install openssl openssl-devel

安装 libaio ,libaio库是Linux异步I/O操作的库,MySQL在进行I/O操作时需要使用libaio库。

yum -y install libaio

安装ncurses,ncurses库是用于控制终端输出的库,MySQL的终端工具需要使用ncurses库。

yum -y install libncurses*

在这里插入图片描述

进入目录 /export/server/mysql,查看目录内容

cd /export/server/mysql
ls -l

依次执行以下命令,依次安装 /export/server/mysql 目录下的各个.rpm文件,一定要注意安装顺序,要不然安装不上!

rpm -ivh mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm

在这里插入图片描述

下面这些不用安装

mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar # 原来的包不用安装
mysql-community-test-8.0.36-1.el7.x86_64.rpm # 测试包
mysql-community-server-debug-8.0.36-1.el7.x86_64.rpm # debug
mysql-community-debuginfo-8.0.36-1.el7.x86_64.rpm # debuginfo

4. 配置 MySQL

修改配置文件 /etc/my.cnf,在 [mysqld] 中增加配置内容

vim /etc/my.cnf

增加的配置内容以下

# 设置 MySQL 服务运行的端口号
port=3306
# 指定 MySQL 数据库的默认字符集
character-set-server=utf8mb4
# 允许外部访问
bind-address=0.0.0.0
# 设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
# 设置 MySQL 允许访问的最大连接数
max_connections=1000
# 指定MySQL服务器存储数据文件的目录
datadir=/var/lib/mysql
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED
# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true

在这里插入图片描述

目录授权,初始化,生成root用户

# 清空目录
sudo rm -rf /var/lib/mysql/*
# 授权
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql
# 初始化mysql数据库
sudo mysqld --initialize --user=mysql

在这里插入图片描述

[mysqld]
port=3306
character-set-server=utf8mb4
bind-address=0.0.0.0
init_connect='SET NAMES utf8mb4'
max_connections=1000
datadir=/var/lib/mysql
lower_case_table_names=1
transaction_isolation=READ-COMMITTED
explicit_defaults_for_timestamp=true
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

5. 启动 MySQL

【MySQL 安装完成后,会自动配置名称为 mysqld 的服务,可以被 systemctl 管理。】

启动 MySQL 服务

sudo systemctl start mysqld.service

查看 MySQL 服务

systemctl status mysqld.service

查看 MySQL 服务进程

ps axj | grep mysqld

在这里插入图片描述

设置 MySQL 服务开机自动启动

systemctl enable mysqld.service

6. 登录 MySQL

  • 方式1:

获取临时密码进行登录

获取 MySQL 日志文件的路径,查看配置文件 /etc/my.cnf 中的 log-error 的内容 /var/log/mysqld.log 就是 MySQL 日志文件的路径

cat /etc/my.cnf

再查看 MySQL 日志文件 /var/log/mysqld.log,使用通道符按关键字直接检索,获取临时密码

grep "temporary password" /var/log/mysqld.log

登录 MySQL

mysql -u root -p

不修改密码,不允许执行SQL命令。

修改密码,MySQL默认的密码策略是要包含大写字母、小写字母、数字、特殊字符,长度大于8位

alter user 'root'@'localhost' identified by '复杂的密码';

退出 MySQL

exit;

重新登录 MySQL,使用修改后的密码

mysql -u root -p
  • 方式2:

跳过密码验证进行登录。不推荐。除非通过方式1获取不到临时密码,或者使用过程中忘记密码了。

修改 /etc/my.cnf 配置文件,在 [mysqld] 后面任意一行添加 skip-grant-tables

vim /etc/my.cnf

重启 MySQL

systemctl restart mysqld

登录 MySQL(无 -p 选项,无需密码登录)

mysql -u root

刷新权限 ,需要刷新权限之后才能修改密码

flush privileges;

修改密码,MySQL默认的密码策略是要包含大写字母、小写字母、数字、特殊字符,长度大于8位

alter user 'root'@'localhost' identified by '复杂的密码';

退出 MySQL

exit;

再修改 /etc/my.cnf 配置文件,将 skip-grant-tables 这行注释或删除掉

vim /etc/my.cnf

重启 MySQL

systemctl restart mysqld

7. 开放端口

查看 MySQL 服务监听哪些端口

netstat -nap | grep mysqld

检查端口是否开放

firewall-cmd --zone=public --query-port=3306/tcp

开放端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重新加载

firewall-cmd --reload
# 再检查端口是否开放
firewall-cmd --zone=public --query-port=3306/tcp

8. 设置远程登录

MySQL8默认只能本地连接,不允许远程终端连接

登录 MySQL,新建 root_rw 用户,允许在远程终端(192.168.88.1)上远程登录, % 代表所有终端

mysql -u root -p
create user 'rw'@'192.168.88.1' identified by '复杂的密码';
# create user 'rw'@'%' identified by '复杂的密码';

授予权限(最大权限)

grant all privileges on *.* to 'rw'@'192.168.88.1';
# grant all privileges on *.* to 'rw'@'%';

刷新权限

flush privileges;

查看用户情况

 SELECT host, user FROM mysql.user

在这里插入图片描述

9. 测试远程登录

可以使用SQLyog, Navicate, DataGrip 等工具链接测试!

10. 删除安装文件

删除安装包文件

rm -rf /root/mysql-8.4.3-1.el7.x86_64.rpm-bundle.tar

删除安装包解压的安装目录

rm -rf /export/server/mysql

如果出现不是东八区时间,可以

select now();
# SET time_zone = '+08:00';
SET GLOBAL time_zone = '+08:00';

http://www.kler.cn/a/586807.html

相关文章:

  • 机器人技能列表
  • 通过特征值和特征向量实现的图像压缩和特征提取
  • 大模型训练全流程深度解析
  • 力扣-单调栈-739 每日温度
  • spring-aop笔记
  • 2023 年全国职业院校技能大赛(中职组)移动应用与开发赛项 赛题第十套
  • Python基础入门掌握(九)
  • 设计签到 用redis 和 MySQL
  • 目标检测中衡量模型速度和精度的指标:FPS和mAP
  • 软件测试之测试覆盖率
  • c++三级(枚举问题)
  • 普通enum和enum class的区别
  • Winfrom基础知识41-60
  • Uniapp 开发 App 端上架用户隐私协议实现指南
  • Halcon 和 opencv比有什么区别与优劣
  • python socket库详解
  • 【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求
  • 堆(Heap)和栈(Stack),这两者通常是指内存管理中两种不同的内存区域
  • 【Android】RuntimeShader 应用
  • 如何使用Jsoup提取商品信息:实战指南