Linux中安装mysql8,很详细_linux安装mysql8-程序员宅基地

技术标签: MySQL  linux  mysql  数据库  

一、先前往官网下载mysql8

下载地址:

https://dev.mysql.com/downloads/

在这里插入图片描述

选择Linux
在这里插入图片描述
在这里插入图片描述

二、删除Linux中的mysql(如果有的话),上传安装包

1、先查看mysql是否存在,命令如下:

rpm -qa|grep -i mysql

如果使用这个命令之后没有出现任何内容,表示没有安装过mysql,如果有出现,则删除。

2、如果存在,那么停止mysql,删除所有的服务

在这里插入图片描述
使用如下命令:

find / -name mysql

删除出现的所有文件(如图)

三、解压安装MySQL

1、解压MySQL压缩包

tar xvJf “你的安装包名称”,我这里是

tar xvJf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz

2、重命名解压后的MySQL

觉得解压之后的MySQL文件夹名称太长了,可以 mv “原文件名称” “新文件名称”,重命名一下,注意如果是在当前文件中重命名,新文件名中不能包含斜杆“/”,这是我的

mv mysql-8.0.31-linux-glibc2.12-x86_64 mysql-8.0.31

3、进入MySQL根目录,创建data文件夹

在这里插入图片描述

进入根目录

cd mysql-8.0.31/

创建data文件

mkdir data

四、创建mysql组和用户

这个我没发现有什么用,但很多教程都这么做,我这里也创建一下。

1、创建mysql组

groupadd mysql

2、创建mysql用户

useradd -g mysql mysql

在这里插入图片描述

出现这样的提示表示已经创建过mysql组和用户了。

3、将安装的MySQL权限给mysql用户

命令,chown -R “mysql组名”.“mysql用户名” “mysql安装根目录”

chown -R mysql.mysql /usr/MYSQL/mysql-8.0.31

在这里插入图片描述

五、MySQL初始化

1、初始化

在初始化之前提一嘴,Linux中的MySQL默认是区分表明大小写的,如果你是安装的也是MySQL8,那么不区分大小需要在数据库初始化时设置,不然初始化后,在配置文件在设置重启时是会报错的。

进入MySQL的bin目录进行初始化

./mysqld --user=mysql --basedir=/usr/MYSQL/mysql-8.0.31 --datadir=/usr/MYSQL/mysql-8.0.31/data --lower-case-table-names=1 --initialize

在这里插入图片描述

–lower-case-table-names=1 即设置不区分表明大小写,最后面的 dwW3</EIewj 为初始化生产的临时密码。

2、初始化失败(2023-11-9更新,初始化成功可以不看)

进入bin目录报如下错:

./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

在这里插入图片描述

原因:

这是一个与运行MySQL数据库相关的问题。出现这个错误的原因是系统缺少了名为libaio.so.1的共享库文件。

使用命令查看是否已安装libaio软件包,命令如下:

rpm -qa|grep libaio

在这里插入图片描述

可以看到并没有安装libaio软件包。

解决办法:

先安装numactl软件包,命令如下:

yum -y install numactl.x86_64

在这里插入图片描述

然后安装libaio开发包,命令如下:

yum install  libaio-devel.x86_64

在这里插入图片描述

再次查看是否安装成功libaio软件包

rpm -qa|grep libaio

在这里插入图片描述

可以看到安装成功了,再次初始化应该就可以成功了。

在这里插入图片描述

六、修改MySQL配置文件

初次进入时配置是空的,进入命令

vim /etc/my.cnf

在这里插入图片描述

[mysqld]
port=3306
basedir=/usr/MYSQL/mysql-8.0.31/  # MySQL根目录
datadir=/usr/MYSQL/mysql-8.0.31/data/  # MySQL的data目录
socket=/tmp/mysql.sock
character-set-server=UTF8MB4
symbolic-links=0


#解决“java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list,references column”
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

保存退出

七、添加服务到系统

进入MySQL根目录,直接复制粘贴命令即可。

cp -a ./support-files/mysql.server /etc/init.d/mysql

在这里插入图片描述

八、授权以及添加服务

这里授权和添加服务都是在MySQL的根目录中操作。

1、授权

chmod +x /etc/init.d/mysql

在这里插入图片描述

2、添加服务

chkconfig --add mysql

在这里插入图片描述

九、启动MySQL

1、启动MySQL命令

service mysql start

2、查看MySQL状态

service mysql status

在这里插入图片描述

3、踩坑(2023-4-12更新,成功启动的可以不看)

如果启动时报如下错
在这里插入图片描述

一个原因是上面新建的data目录没有权限,使用如下命令加上:

chmod -R 755 /usr/local/mysql/mysql-8.0.32/data

将data目录改为你的data目录,然后再使用
在这里插入图片描述

然后再启动mysql
在这里插入图片描述

可以看到报错比上面少了,接下来看看上面报错的日志,使用命令:

cat /usr/local/mysql/mysql-8.0.32/data/iZ7xvbz75ed3prrdah1kceZ.err

在这里插入图片描述

前面在初始化时设置了表明大小写不敏感,这里要在mysql的配置文件中显示设置一下
在这里插入图片描述

保存退出,然后重启mysql
在这里插入图片描述

成功启动。

十、将MySQL命令添加到服务

1、添加服务

命令: ln -s “你的MySQL根目录/bin/mysql” /usr/bin ,这一步是为了能在任何地方通过用户名和密码登录MySQL,这是我的

ln -s /usr/MYSQL/mysql-8.0.31/bin/mysql /usr/bin

在这里插入图片描述

2、踩坑(2023-4-12更新,成功登录mysql可以不看)

直到上一步都没有出错,在登录mysql时报如下错:
在这里插入图片描述

可能是挂载的路径错了,到挂载目录查看,命令如下:

cd /usr/bin

可以看到mysql服务是红色的,并且一直在闪,正常的应该是绿色的。
在这里插入图片描述
我当前的mysql根目录是8.0.32,添加的时候写成了8.0.31,怪不得会报错。

解决办法:删除当前mysql的服务,重新添加。

先删除,命令如下:

rm -rf /usr/bin/mysql

重新添加:

ln -s /usr/local/mysql/mysql-8.0.32/bin/mysql /usr/bin

可以看到mysql服务添加成功,可以登录mysql了。
在这里插入图片描述

十一、修改密码

1、先使用前面初始化拿到的临时密码登录

mysql -uroot -p

输入的密码是不显示的

在这里插入图片描述

2、切换到mysql数据库

切换mysql命令

use mysql

如果切换mysql数据库时出现这样的错就直接修改密码:

在这里插入图片描述

查询用户表命令

select Host, User from user;

在这里插入图片描述
可以看到允许访问root的host有哪些,%表示所有,这里只有localhost,修改密码不成功可以看一下root对应的host的值。

3、修改密码

修改密码的命令为:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

修改之后需要刷新,使密码生效

flush privileges;

4、踩坑,修改成功可以不看

(1)、设置简单密码报错

初次修改密码时,如果设置过于简单的密码可能会报错,可以使用命令

show variables like 'validate_password%';

validate_password_policy 的默认值为 1 或者 MEDIUM,表示密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
validate_password_length 的默认值为 8,表示密码长度为8。

注意查看密码安全策略的这步,只有初始密码登录MySQL才能查到结果,修改密码再次使用此命令查询没有结果。

设置简单密码策略

set global validate_password_policy=0;

设置密码长度

set global validate_password_length=6

这样设置之后就可以将密码修改为“123456”了。

(2)、修改密码报错

有些朋友修改密码时会报错,原因可能就在这里,假如你修改密码的命令为:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

那么是没有问题的,如果你修改密码的命令为:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

那么可能就会报错。

解决办法,使用如下命令:

update user set Host='%' where User='root';

将root用户对应的Host改为“%”再重新修改密码就行了。

记得修改密码后用命令

flush privileges;

刷新一下密码,不然修改的密码是不生效的。

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/studio_1/article/details/128345934

智能推荐

Vue中 Vue.extend() 详解及使用-程序员宅基地

文章浏览阅读3w次,点赞13次,收藏45次。Vue中 Vue.extend() 详解及使用_vue.extend

解决springboot,单元测试启动ApplicationRunner问题_applicationrunner解决-程序员宅基地

文章浏览阅读1.6k次。在执行单元测试时,ApplicationRunner被意外启动,导致了Netty服务器被初始化,单元测试无法执行的问题。解决方案:通过设置ApplicationRunner对应Bean的Profile解决对应组件添加注解:@Profile("!test")单元测试添加注解:@ActiveProfiles("test")..._applicationrunner解决

Java前景如何,容易找工作嘛_java 岗位找工作容易-程序员宅基地

文章浏览阅读748次。/*文章很长,能看完的少走一个月弯路,绝不抖机灵*/这篇文章是为了介绍自己自学用过的Java视频资料。本套整合教程总共180+G,共450+小时。考虑到绝大部分视频至少要看两遍,而且视频总时长并不代表学习时长,所以零基础初学者总学习时间大约为:600小时视频时长 + 100小时理解 + 100小时练习,至少需要800小时。你可能觉得自己能一天学习8小时,实际上平均下来每天能学4小时都算厉害了。总会有各种原因,比如当天内容太难,公司聚会,要出差等等。如果周末你也是坚持学习,那么最理想状况下,6_java 岗位找工作容易

【顺序表和链表】_什么是顺序表?什么是链表?-程序员宅基地

文章浏览阅读1.5k次,点赞27次,收藏14次。文章目录一:线性表1.1 顺序表1.1.1 接口实现1.2 链表1.2.1 链表与数组的区别1.2.2 结构体的自引用1.2.3 链表的分类一:线性表线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表有:顺序表,链表,栈,队列,字符串等。线性表在逻辑上是线性结构,也就是说是一条连续的实线,但其实在物理结构上不一定连续,其中线性表在储存的时候,通常以数组和链式结构的形式存储。1.1 顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性_什么是顺序表?什么是链表?

valine评论系统不能使用_code 403: 访问被api域名白名单拒绝,请检查你的安全域名设置-程序员宅基地

文章浏览阅读2.1k次。一.今天发现 Valine 评论系统不见了,没法使用啦,发现原来是valine里的av -min.js检查不到的原因。官方也给了说法,是因为 leancloud.cn 以及 …lncld.net 域名不能解析了。那我的解决方法是什么呢??首先,我找到了av -min.js和valine.min.js的源码。源码链接如下: av -min.js valine.min.js接下来我们在我们的github.io上/js下新建两个js文件,分别是av -min.js和valine.min.js然_code 403: 访问被api域名白名单拒绝,请检查你的安全域名设置

tp框架文件上传七牛服务器,TP5开发 - 七牛云图片上传方法-程序员宅基地

文章浏览阅读280次。1、config.php配置文件里配置七牛云密钥等里面 secretKey accessKey domain bucket对应换成自己七牛云申请的,步骤:(1)七牛云注册成功后—对象存储申请10G免费空间,(2)右上角个人中头像image.pngimage.png//配置文件return [// 文件上传默认驱动'UPLOAD_DRIVER' => 'Qiniu', //设置七牛上传驱动//..._lkqtp

随便推点

多行业万能预约门店小程序源码系统 带完整的搭建教程以及安装代码包-程序员宅基地

文章浏览阅读472次。小编给大家分享一款多行业万能预约门店小程序源码系统。该系统不仅具备高度的可定制性,还提供了丰富的功能模块,能够轻松应对不同行业的预约需求。:该系统支持多行业预约需求,无论是美容美发、餐饮娱乐还是医疗健身等行业,都能找到适合的预约模板和功能模块。:该系统提供了完整的搭建教程和安装代码包,用户只需按照教程操作,即可轻松完成小程序的搭建和部署。:系统提供了丰富的数据分析和统计功能,可以帮助商家了解预约情况、客户分布等信息,为门店运营提供有力支持。同时,还支持预约提醒功能,确保客户能够按时到店,提高预约的准确率。

解决antd的select下拉框因为数据量太大造成卡顿的问题_select 数据量太大-程序员宅基地

文章浏览阅读2.1w次,点赞23次,收藏42次。相信用过antd的同学基本都用过select下拉框了,这个组件数据量少的时候很好用,但是当数据量大的时候,比如大几百条上千条甚至是几千条的时候就感觉一点都不好用了,卡的我怀疑人生,一点用户体验都没有了。当然这不是我想去优化它的动力,主要是公司业务人员和后端的同事也无法忍受,于是我只能屈从于他们的淫威。。。。想要优化肯定要知道为什么会卡,初步判断就是数据量过大导致渲染option组件的时间过长导致卡..._select 数据量太大

使用MQTT.fx与百度天工物接入平台实现嵌入式设备的对接_百度天工mqtt还能用嘛-程序员宅基地

文章浏览阅读120次。通过本文的介绍,我们了解了如何使用MQTT.fx与百度天工物接入平台对接嵌入式设备。首先,我们注册了百度天工账号并创建了物接入应用;最后,我们通过订阅和发布消息的方式实现了与百度天工物接入平台的数据交互。在这个背景下,百度推出了天工物接入平台,为开发者提供了简单、高效的物联网设备连接方案。MQTT.fx是一款开源的MQTT客户端工具,它支持多种操作系统,并提供了直观的用户界面,方便开发者进行MQTT消息的订阅和发布操作。百度天工物接入平台是百度基于物联网技术推出的一款用于连接和管理物联网设备的平台。_百度天工mqtt还能用嘛

【深度学习】Normalizing flow原理推导+Pytorch实现-程序员宅基地

文章浏览阅读1.4k次,点赞33次,收藏31次。1、前言Normalizingflow\boxed{Normalizing \hspace{0.1cm} flow}Normalizingflow​,流模型,一种能够与目前流行的生成模型——GAN、VAE\boxed{\mathbf{GAN、VAE}}GAN、VAE​相媲美的模型。其也是一个生成模型,可是它的思路和另外两个的迂回策略却很大不同。本文我们就简单来介绍一个这个模型吧2、引入在生成模型中,我们的目的就是计算出数据x的概率分布。然而,数据的分布总是千奇百怪的。其无法被定义,无法被观测,无法被_normalizing flow

系统架构设计师之备考攻略(2024年修订版)——一篇就够_系统架构师复习攻略-程序员宅基地

文章浏览阅读1.8w次,点赞34次,收藏141次。2020年9月至11月初,本人用两个月的时间来备考【系统架构设计师】这一科目,最终以综合题 59/75 案例 57/75 论文 53/75 的成绩顺利通过。备考过程中,发现由于这个考试比较冷门,遇到了【学习资料少】、【备考方向不明确】等问题,走了不少弯路。因此想分享一下备考中的干货,帮助想要备考【系统架构设计师】的同学。_系统架构师复习攻略

领域驱动设计(Domain-Driven Design DDD)——通过重构找到深层次模型2-程序员宅基地

文章浏览阅读9.1k次,点赞21次,收藏26次。深层模型和柔性设计并非唾手可得。想要取得进展,必须学习大量领域知识并进行充分的讨论,还需要经历大量的尝试和失败。在实际的研究领域问题实践时,有一些成熟的模式可以供我们借鉴和套用。这样我们可以从这个起点来重构和试验,虽然它们不是现成的解决方案。