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

linux离线安装mysql8(单机版)

文章目录

  • 一、检查服务器是否有残留mysql资源,有的话就全删除
    • 1.1、查询mysql已安装的相关依赖:
    • 1.2、查找含有MySQL的目录
  • 二、安装
    • 2.1、上传mysql安装包到文件夹下并解压
    • 2.2、移动及重命名
    • 2.3、mysql用户
    • 2.4、配置mysql所需的my.cnf文件
    • 2.5、给my.cnf配置文件中指定的目录配置权限:(否则会在初始化时或是启动时出现问题,如果出现问题,应该实时查看初始化时与启动时的mysql.log日志)
    • 2.6、配置命令
    • 2.7、修改系统配置
      • 2.7.1、修改/etc/profile,添加```export PATH=$PATH:/usr/local/mysql8/bin```
      • 2.7.2、配置启动项
  • 三、启动
    • 3.1、初始化mysql服务
  • 四、问题拓展
    • 4.1、安装成功后,登录报错ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO),或ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
      • 4.1.1 设置跳过密码验证
      • 4.1.2 重启mysql后进行登录
      • 4.1.3 将登录密码设置为空
      • 4.1.4、修改新密码
    • 4.2、新安装的mysql,登录后,执行任何命令报错:You must reset your password using ALTER USER statement before executing this statement.


  • 前言,这里以mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz版本为例

一、检查服务器是否有残留mysql资源,有的话就全删除

1.1、查询mysql已安装的相关依赖:

rpm -qa | grep mysql
  • 没有依赖是如图所示的
    在这里插入图片描述
  • 如果有依赖,就依次卸载依赖
# 这里的XXXXXX表示依赖名
rpm -e XXXXXX --nodeps

1.2、查找含有MySQL的目录

find / -name mysql

在这里插入图片描述

  • 如果有依赖存在,就使用rm -rf 依次全部删除
    例:
    rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
    

二、安装

2.1、上传mysql安装包到文件夹下并解压

tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

2.2、移动及重命名

mv mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/mysql8

2.3、mysql用户

  • 创建mysql用户
useradd mysql
  • 配置mysql密码
passwd mysql
  • 给用户赋权限
chown  -R  mysql:mysql  /usr/local/mysql8

2.4、配置mysql所需的my.cnf文件

  • 编辑my.cnf
vim /etc/my.cnf
  • 配置文件内容
# 优先读取/etc/my.cnf.d目录下配置文件,一般用不着
#!includedir /etc/my.cnf.d# 客服端设置
[client]# 服务套接字位置
socket=/mnt/data/mysql/mysql.sock[mysqld]# 数据目录,路径的位置根据实际情况配置,给目录指定权限,否真会报权限问题
datadir=/mnt/data/mysql/mysql-data# mysql端口号
port = 3306# 日志文件输出,需要给目录配置权限,否则会报目录权限问题
log-error=/mnt/data/mysql/mysql-logs/mysql.log# 不区分大小写
# MySQL在Windows上会将所有的表名和数据库名转换为小写,并且在查询时不区分大小写。这有助于在不同操作系统之间移植数据库
lower_case_table_names=1# 服务套接字位置,需要给目录配置权限
socket=/mnt/data/mysql/mysql.sock# 是否与旧版本的客户端兼容,可能需要将此参数设置为mysql_native_password
# default_authentication_plugin=mysql_native_password# 最大传输如果数据包超过这个大小,MySQL会报错
# max_allowed_packet=64M# 最大连接并发数据量
# max_connections=1000

2.5、给my.cnf配置文件中指定的目录配置权限:(否则会在初始化时或是启动时出现问题,如果出现问题,应该实时查看初始化时与启动时的mysql.log日志)

chown -R mysql:mysql /mnt/data/mysql/mysql-data
chown -R 755  /mnt/data/mysql/mysql-data
chown -R mysql:mysql /mnt/data/mysql/mysql-logs
chmod -R 755 /mnt/data/mysql/mysql-logs
chown -R mysql:mysql /mnt/data/mysql
chown -R 755  /mnt/data/mysql
chmod -R 777 /mnt/data/mysql/
  • 如果未检测到文件夹,就创建文件夹,然后再重新执行
mkdir -p /mnt/data/mysql/mysql-data
mkdir -p /mnt/data/mysql/mysql-logs

在这里插入图片描述

2.6、配置命令

  • 设置命令,方便命令操作,软链接执行mysql8下对应命令文件,执行下面所有的指令
ln -snf /usr/local/mysql8/bin/mysql /usr/bin/mysqlln -snf /usr/local/mysql8/bin/mysqld /usr/sbin/mysqld ln -snf /usr/local/mysql8/bin/mysqladmin /usr/bin/mysqladminln -snf /usr/local/mysql8/bin/mysqlbinlog /usr/bin/mysqlbinlogln -snf /usr/local/mysql8/bin/mysqlcheck /usr/bin/mysqlcheckln -snf /usr/local/mysql8/bin/mysql_config_editor /usr/bin/mysql_config_editorln -snf /usr/local/mysql8/bin/mysqldump /usr/bin/mysqldumpln -snf /usr/local/mysql8/bin/mysqldumpslow /usr/bin/mysqldumpslowln -snf /usr/local/mysql8/bin/mysqlimport /usr/bin/mysqlimportln -snf /usr/local/mysql8/bin/mysqlpump /usr/bin/mysqlpumpln -snf /usr/local/mysql8/bin/mysql_secure_installation /usr/bin/mysql_secure_installationln -snf /usr/local/mysql8/bin/mysqlshow /usr/bin/mysqlshowln -snf /usr/local/mysql8/bin/mysqlslap /usr/bin/mysqlslapln -snf /usr/local/mysql8/bin/mysql_tzinfo_to_sql /usr/bin/mysql_tzinfo_to_sqlln -snf /usr/local/mysql8/bin/mysql_upgrade /usr/bin/mysql_upgrade
  • 这样就安装成功了,查看一下mysql版本
mysql -V
mysqld -V

在这里插入图片描述

2.7、修改系统配置

2.7.1、修改/etc/profile,添加export PATH=$PATH:/usr/local/mysql8/bin

vim /etc/profile
  • 在配置文件末尾添加
export PATH=$PATH:/usr/local/mysql8/bin

2.7.2、配置启动项

  • 在mysql8下拷贝mysql.server到/etc/init.d目录下:
cp /usr/local/mysql8/support-files/mysql.server  /etc/init.d/mysqld
  • 修改/etc/init.d/mysqld的基础路径:
vim  /etc/init.d/mysqld
  • 修改目录位置:
basedir=/usr/local/mysql8 (mysql的安装路径)
datadir=/mnt/data/mysql/mysql-data  (这里要与配置文件保持一致)

在这里插入图片描述

  • 保证service mysql 或 mysqld start均可启动:
cp  /etc/init.d/mysqld  /etc/init.d/mysql
  • 添加到启动列表:
chkconfig --add mysqld
  • 重新加载启动信息:
systemctl daemon-reload
  • 查看启动项列表
chkconfig --list

在这里插入图片描述

三、启动

3.1、初始化mysql服务

  • 初始化命令:–basedir:根据实际mysql安装路径
mysqld --user=mysql --basedir=/usr/local/mysql8 --initialize 
  • 初始化后,查看mysqld.log(默认/var/log/mysqld.log或本文取决于my.cnf的日志路径配置),找到root初始密码,在执行上方initialize语句时mysqld.log文件中就会打印,如图所示:
    在这里插入图片描述

  • 启动mysql:

service mysqld start
  • 使用root登录:
mysql -uroot  -p
  • 首次需要修改密码 :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY  '新密码';

在这里插入图片描述

四、问题拓展

4.1、安装成功后,登录报错ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO),或ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

出错原因
using password: NO:表示输入没有输入密码就尝试登陆了
using password: YES:表示输入了密码,但密码错误
这里表示很有可能是忘记密码了,或者初始化的时候,初始化密码不生效,因此需要重设密码。

4.1.1 设置跳过密码验证

找到 MySQL 的配置文件 “my.ini”,如果自己配置了配置文件,就到自己配置的配置文件里面找,比如我们当前文档2.4处配置的文件地址为/etc/my.cnf,vim配置文件后,找到 [mysqld],在其下面任意一行添加 skip-grant-tables,保存,如下图所示:
在这里插入图片描述

4.1.2 重启mysql后进行登录

  • 重启
service mysqld restart
    • 使用root登录,出现输入密码时,直接回车就好了:
mysql -uroot  -p

4.1.3 将登录密码设置为空

  • 依次执行命令
use mysql;update user set authentication_string='' where user='root';quit;

在这里插入图片描述

4.1.4、修改新密码

  • 重启
service mysqld restart
  • 使用root登录,出现输入密码时,直接回车就好了,因为此时密码为空:
mysql -uroot  -p
  • 刷新权限,输入 flush privileges;后回车
  • 最后输入ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';后回车
# 刷新权限
flush privileges;# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

4.2、新安装的mysql,登录后,执行任何命令报错:You must reset your password using ALTER USER statement before executing this statement.

解决办法

  • MySQL版本5.7.6版本以前用户可以使用如下命令:
mysql> SET PASSWORD = PASSWORD('Admin2022!');
  • MySQL版本5.7.6版本开始的用户可以使用如下命令:
mysql> ALTER USER USER() IDENTIFIED BY 'Admin2022!';

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 信息安全工程师题
  • K8s 核心组件——API Server
  • Python 代码中的 yield 到底是什么鬼?
  • 【C#】Func、Action和Predicate
  • 操作系统:进程1
  • liteos定时器回调时间过长造成死机问题解决思路
  • 拓扑排序与有向无环图 -- Kahn算法和深度优先搜索
  • Redis - SpringDataRedis - RedisTemplate
  • QT Creator下载安装详细教程(保姆级教程)
  • NCRE3 2-1 网络总体设计基本方法
  • 如何使用 API 查看极狐GitLab 镜像仓库中的镜像?
  • Flutter Geocoding插件使用指南:简化地理编码与逆地理编码
  • Redis与MySQL数据一致性问题的策略模式及解决方案
  • 如何从网站获取表格数据
  • 第四十八天 第十章 单调栈part01 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II
  • php的引用
  • SegmentFault for Android 3.0 发布
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Github访问慢解决办法
  • gulp 教程
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • IP路由与转发
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Java小白进阶笔记(3)-初级面向对象
  • Java应用性能调优
  • JS数组方法汇总
  • Laravel Telescope:优雅的应用调试工具
  • Python socket服务器端、客户端传送信息
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 给Prometheus造假数据的方法
  • 记一次删除Git记录中的大文件的过程
  • 排序(1):冒泡排序
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • C# - 为值类型重定义相等性
  • postgresql行列转换函数
  • 数据可视化之下发图实践
  • ​ubuntu下安装kvm虚拟机
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ###项目技术发展史
  • (09)Hive——CTE 公共表达式
  • (11)MATLAB PCA+SVM 人脸识别
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (源码分析)springsecurity认证授权
  • (转) ns2/nam与nam实现相关的文件