Linux中安装mysql8,很详细

一、查看系统glibc版本号,下载对应版本的MySQL

1、查看glibc版本号办法

方法一:使用ldd命令

在终端中输入ldd --version命令,然后按下回车键。这个命令会显示系统中安装的glibc版本号。例如,如果输出信息是ldd (GNU libc) 2.31,那么glibc的版本号就是2.31。请注意,不同的Linux发行版可能会有不同的命令来查看glibc版本号,但这个命令适用于大多数常见的Linux发行版,如Ubuntu、Debian、CentOS等。

方法二:查看libc.so文件

在Linux系统中,glibc的库文件通常是libc.so。你可以使用ls -l /lib64/libc.so.6命令查看这个文件的链接信息。如果输出信息中包含类似libc-2.12.so的内容,那么glibc的版本号就是2.12。此外,你也可以使用/lib64/libc.so.6命令直接查看glibc的版本信息,输出信息中会包含版本号。

方法三:使用getconf命令

getconf命令也可以用来查看glibc的版本号。在终端中输入getconf _POSIX_VERSION命令,然后按下回车键。如果输出信息是200809L,那么glibc的版本号就是2.12。需要注意的是,这个方法只能用来查看glibc是否符合POSIX标准,而不能直接获取glibc的版本号。

常见问题及解决方法

  1. 命令不存在或无法执行:如果你的系统中没有lddgetconf命令,或者这些命令无法执行,可能是因为你的系统没有安装相应的软件包。你可以尝试使用包管理工具(如apt、yum等)安装这些软件包。
  2. 查看文件时权限不足:如果你无法查看/lib64/libc.so.6文件的内容,可能是因为你没有足够的权限。你可以使用sudo命令以管理员权限执行查看文件的命令。
  3. 多个版本共存:在一些情况下,系统中可能会同时存在多个版本的glibc。你可以使用strings /lib64/libc.so.6 | grep GLIBC命令查看该文件中包含的所有glibc版本信息。

2、下载对应版本的MySQL

下载地址:MySQL :: MySQL Community Downloads

例如,我下载的2.17版本glibc的MySQL

二、检查MySQL是否存在并解压

1、查看MySQL是否存在:

rpm -qa|grep -i mysql

2、解压MySQL压缩包,并重命名原文件夹

解压:

tar xvJf mysql-8.0.40-linux-glibc2.17-x86_64.tar.xz
附注:tar命令参数: -x:解开已有的归档文件   -v:显示详细的过程   -J:使用xz压缩或解压归档文件  -f:指定归档文件名

重命名:重命名主要为觉得解压之后MySQL文件夹名太长了

mv mysql-8.0.40-linux-glibc2.17-x86_64 mysql-8.0.40

三、开始安装MySQL

1、创建data文件夹,data文件夹就是存在MySQL数据的地方,位置任意,保证能访问到即可,一般建议放在MySQL解压之后的文件夹中或附近

2、创建mysql组和用户

这里主要是为了生产环境服务器一般对root用户有限制

1、创建mysql组

groupadd mysql

2、创建mysql用户

useradd -g mysql mysql

3、给解压的MySQL文件夹及创建的data文件夹修改用户及用户组权限

chown -R mysql:mysql /usr/local/soft/mysql/

3、设置MySQL配置文件my.cnf

3.1、一般centos的默认的my.cnf在/etc/my.cnf,其他操作系统自行百度,也可以自定义位置,例如我放在和解压文件夹一起

3.2、设置binlog文件夹用户存放bin-log日志

[mysqld]
#设置MySQL服务监听端口,默认3306
port=3306
#设置MySQL服务器绑定的IP地址,可以设置为自己本机IP
bind-address=0.0.0.0
#设置MySQL数据库用户
user=mysql
#数据库文件路径
basedir=/usr/local/soft/mysql/mysql-8.0.40
#数据库数据目录,存储数据库文件的路径
datadir=/usr/local/soft/mysql/data
#设置MySQL服务器使用的套接字文件路径
socket=/usr/local/soft/mysql/mysql.sock
#设置指定存放进程ID的文件
pid-file=/usr/local/soft/mysql/mysql.pid 
#设置每个连接的默认字符集
character_set_server=utf8mb4 
symbolic-links=0
# mysql-5.6.6丢弃了这个系统变量,版本高于5.6.6的可加上
explicit_defaults_for_timestamp=true
log-bin = /usr/local/soft/mysql/binlog/mysql-bin
lower_case_table_names = 1

4、Mysql初始化

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

使用mysql的bin下面的mysqld脚本:mysql-8.0.40/bin/mysqld

--user=mysql 指定用户;--basedir指定mysql解压文件夹 --datadir指定data文件夹 --defaults-file指定配置文件位置

/usr/local/soft/mysql/mysql-8.0.40/bin/mysqld --defaults-file=/usr/local/soft/mysql/my.cnf --user=mysql --basedir=/usr/local/soft/mysql/mysql-8.0.40 --datadir=/usr/local/soft/mysql/data --lower-case-table-names=1 --initialize

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

如果初始化失败,根据失败原因自行百度,最后面参考资料【2】中记录有libaio.so.1缺少的处理办法【./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory】

如果上面配置文件有修改或其他原因可以重新初始化,重新初始化需要删除data

四、启动并登录MySQL,设置MySQL开机自启动

加入到系统服务并启动mysql

cp /usr/local/soft/mysql/mysql-8.0.40/support-files/mysql.server /etc/init.d/mysql

修改mysql自启服务配置

vim /etc/init.d/mysql

启动服务
service mysql start
#登录mysql,一定要开启服务后才能登陆
/usr/local/soft/mysql/mysql-8.0.40/bin/mysql -u root -p  
./mysql -u root -p
# 登录成功后会提示你重置密码
# 修改密码,SQL语句后面的分号不能丢
ALTER USER 'root'@'localhost' IDENTIFIED BY 'uacsapp';
FLUSH PRIVILEGES;       #刷新 
# 退出 quit
# 重启服务 service mysql restart
# 再次登陆 /usr/local/soft/mysql/mysql-8.0.40/bin/mysql -u root -p //输入刚修改的密码1234敲回车键
# 到此mysql已经安装完成了

vim /etc/init.d/mysql

注:这里我启动失败了多次,提示下图,就是脚本中某些设置使用了默认mysql导致的

四、设置开机自启动(方法一)

添加服务列表的方式,放置到/etc/rc.d/init.d中

linux开机自启动的服务都存在这个/etc/rc.d/init.d/文件夹下面,开机的时候会自动去启动该文件下的服务,那么到这里事情就简单了,我们只需要把mysql的启动服务copy过来即可。

#copy并重命名
cp /usr/local/soft/mysql/mysql-8.0.40/support-files/mysql.server /etc/rc.d/init.d/mysql
#复制成功后我们需要给赋予权限
chmod +x /etc/init.d/mysql
#添加为服务:
chkconfig --add mysql
#查看服务列表 
chkconfig --list

#看到mysql服务的3、4、5状态为开或者为 on 则表示成功。 如果是 关或者 off 则执行一下:
chkconfig --level 345 mysqld on
#重启计算机:
reboot

方法二、设置systemctl自启动

使用方法一配置完自启动后,会自动配置systemctl start mysql.service,但是使用方法一启动的mysql,通过systemctl status mysql.service看状态是Active: inactive (dead),


使用mysql -u root -p 连接数据库的时候提示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)  但是,在my.cnf中已经配了socket项,

这种其实就是客户端client默认使用/tmp/mysql.sock去连接数据库,但是因修改了默认位置,必须也指定client连接的sock位置

修改完my.cnf记得重启数据库 


四、解决本地连接时找不到mysql.sock问题 

当遇到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 错误时,这通常意味着客户端尝试通过Unix套接字文件连接本地MySQL服务器失败,以下是集中可能得原因及其解决方案

1、配置文件中的套接字路径不匹配

如果/var/lib/mysql/目录下或者/tmp/mysql.sock确实不存在mysql.sock文件,则可能是由于配置文件中指定的套接字路径与实际生成的位置不符。此时应该检查并编辑MySQL的配置(my.cnf)文件来修正这个问题。

find / -name my.cnf #查找my.cnf文件位置

确保[mysqld]和[client]节点内查找或添加如下设置以确保两者指向相同的套接字地址:

[client]

socket=/usr/local/soft/mysql/data/mysql.sock

[mysqld]

socket=/usr/local/soft/mysql/data/mysql.sock

 保存更改后重启MySQL服务使配置生效

但测试过程中在自定义的my.cnf中指定client未生效,修改默认my.cnf(centos位置在/enc/mysql.cnf)配置文件,添加上client可以生效,猜测mysql连接服务的时候还是使用了默认的my.cnf去读取socket,默认my.cnf未配置走了/temp/mysql.sock

2、权限不够问题,MySQL无法在工作目录下创建所需的临时文件mysql.sock,可以通过调整响应目录的所有权和权限来解决问题。

3、如果使用IP,例如mysql -uroot -h'192.168.100.10'则表示使用TCP/IP协议连接mysql,这时不会使用套接字,就没有套接字找不到的问题。

4、在连接命令行上使用"-S"选项指定  mysql -S /data/mysql.sock

5、在/temp/mysql.sock建立软链接执行自定义的mysql.sock位置。

五、解决root不能登录问题 message from server: "' is not allowed to connect to this MySQL server"

出现这种情况的原因是因为:mysql数据库只允许自身所在的本机器连接,不允许远程连接。

可以通过本地登录,查询并修改mysql.user表中的host字段为%解除限制。

#本地登录mysql

mysql -u root -p

#切换数据库

use mysql

#查询user表

select host from user where user='root';

#修改user表

update user set host = '%' where user ='root';

#刷新配置

flush privileges;

六、Public Key Retrieval is not allowed错误,

连接mysql时报错:Public Key Retrieval is not allowed(不允许公钥检索)

解决方法:连接设置——驱动属性——allowPublicKeyRetrieval=false(这里的运输公钥检索是默认关闭的,需要把它开启),改为allowPublicKeyRetrieval=true即可。

连接数据库后,如果不想把此项开启,那在改为false就行,连接过一次后面都可正常在重新连接使用,但是如果新增连接还是要把此项开启,不然还是会继续报错。

至此,数据库完成安装与链接

最后附上我的my.cnf和mysql.server(原文件在mysql安装,例如/usr/local/soft/mysql/mysql-8.0.40/support-files,并已在配置自启动时更名为mysql)仅供参考

附:参考:

1、Linux系统中glibc版本号的查看方法-百度开发者中心

2、Linux中安装mysql8,很详细_linux安装mysql8-CSDN博客

3、https://wenku.csdn.net/answer/33ev78n5u8

4、Can't connect to local MySQL server through socket - 数据派 - 博客园

5、https://www.cnblogs.com/-do-do/articles/18417512mysql数据库连接报错:is not allowed to connect to this mysql server - dodo的安全学习笔记 - 博客园https://www.cnblogs.com/-do-do/articles/18417512

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3248.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot如何解析 Map 的泛型信息来确定要注入哪些 Bean?

我在学习策略模式的时候, 发现当SpringBoot注入一个Map的时候 ,value泛型为T,则注入后Spring会将实例化后的bean放入value ,key则为注入后bean的名字 Springboot如何解析Map中的Value Spring 通过解析 Map 的泛型信息来确定要注入哪些 Bean…

【NextJS】PostgreSQL 遇上 Prisma ORM

NextJS 数据库 之 遇上Prisma ORM 前言一、环境要求二、概念介绍1、Prisma Schema Language(PSL) 结构描述语言1.1 概念1.2 组成1.2.1 Data Source 数据源1.2.2 Generators 生成器1.2.3 Data Model Definition 数据模型定义字段(数据)类型和约束关系&…

一些常见的Java面试题及其答案

Java基础 1. Java中的基本数据类型有哪些? 答案:Java中的基本数据类型包括整数类型(byte、short、int、long)、浮点类型(float、double)、字符类型(char)和布尔类型(boo…

Vue2+OpenLayers实现折线绘制功能(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、代码实现 3.1、初始变量 3.2、画一条折线 3.3、完整代码 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 3.1、初始变量 关键代码: data() {return {map:null,// 定义路径坐…

【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

: 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 在本篇文章中,博主将带大家去学习所谓的…

【服务治理中间件】consul介绍和基本原理

目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理&#xff…

Linux命令行工具-使用方法

参考资料 Linux网络命令:网络工具socat详解-CSDN博客 arm-linux-gnueabihf、aarch64-linux-gnu等ARM交叉编译GCC的区别_aarch64-elf-gcc aarch64-linux-gnu-CSDN博客 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 热爱学习地派大星-CS…

5-1 创建和打包AXI Interface IP

创建和打包AXI Interface IP的前流程和后流程 step 1 : 选择类型 1: 将当前的工程打包成IP 2: 将当前的BD工程打包成IP 3: 将指定的源码打包成IP 4: 创建一个新的AXI 接口IP 其中3和4是比较常用的,本次…

贪心算法(题1)区间选点

输出 2 #include <iostream> #include<algorithm>using namespace std;const int N 100010 ;int n; struct Range {int l,r;bool operator <(const Range &W)const{return r<W.r;} }range[N];int main() {scanf("%d",&n);for(int i0;i&l…

攻防世界 unseping

开启场景 整体来说是创建了一个case类&#xff0c;然后可接受post传来的ctf的值&#xff0c;并对其进行base64解码以及反序列化。所以我们能控制ctf变量。 先看__wakeup方法&#xff0c;该方法使用waf方法对$arg中的内容进行了防护&#xff0c;过滤掉了| & ; 空格 / cat f…

光伏储能电解水制氢仿真模型Matlab/Simulink

今天更新的内容为光伏储能制氢技术&#xff0c;这个方向我之前在21年就系统研究并发表过相关文章&#xff0c;经过这几年的发展&#xff0c;绿色制氢技术也受到更多高校的注意&#xff0c;本篇博客也是在原先文章的基础上进行更新。 首先让大家熟悉一下绿氢制取技术这个概念&a…

java spring,uName,kValue,前端传值后端接不到

大神链接https://blog.csdn.net/qq_39327650/article/details/134419523本文是参考上述大神链接&#xff0c;自己写这个博客主要是给自己加深印象&#xff0c;大神链接里描述的很清晰&#xff0c;包括源码解析&#xff0c;详细描述参考大神。 由于springboot用的是jackson进行…

XML序列化和反序列化的学习

1、基本介绍 在工作中&#xff0c;经常为了调通上游接口&#xff0c;从而对请求第三方的参数进行XML序列化&#xff0c;这里常使用的方式就是使用JAVA扩展包中的相关注解和类来实现xml的序列化和反序列化。 2、自定义工具类 import javax.xml.bind.JAXBContext; import javax.x…

【时时三省】(C语言基础)柔性数组的使用

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 示例&#xff1a; 柔性数组是一次性开辟的一块空间&#xff0c;实际上后面arr的空间是通过预设的方式&#xff0c;给它增加了一块空间 用柔性数组得好处 第一个好处是&#xff1a;方便内存…

RAG 切块Chunk技术总结与自定义分块实现思路

TrustRAG项目地址&#x1f31f;&#xff1a;https://github.com/gomate-community/TrustRAG 可配置的模块化RAG框架 切块简介 在RAG&#xff08;Retrieval-Augmented Generation&#xff09;任务中&#xff0c;Chunk切分是一个关键步骤&#xff0c;尤其是在处理结构复杂的PDF文…

【MySQL】数据库约束和多表查询

目录 1.前言 2.数据库约束 2.1约束类型 2.2?NULL约束 2.3 NUIQUE&#xff1a;唯一约束 2.4?DEFAULT&#xff1a;默认值约束 2.5?PRIMARY KEY&#xff1a;主键约束 2.6 FOREIGN KEY&#xff1a;外键约束 1.7?CHECK约束 3.表的设计? 3.1一对一 3.2一对多 3.3多…

解锁C#语法的无限可能:从基础到进阶的编程之旅

目录 一、C# 基础语法 1.1 数据类型 1.2 变量与常量 1.3 运算符 1.4 控制流语句 二、C# 面向对象编程语法 2.1 类与对象 2.2 封装 2.3 继承 2.4 多态 虚方法 抽象类 接口 三、C# 高级语法 3.1 特性&#xff08;Attribute&#xff09; 预定义特性 自定义特性 3…

【2024年华为OD机试】 (C卷,100分)- 小明找位置(Java JS PythonC/C++)

一、问题描述 题目描述 小朋友出操&#xff0c;按学号从小到大排成一列&#xff1b; 小明来迟了&#xff0c;请你给小明出个主意&#xff0c;让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n)&#xff1b;学号为整数类型&#xff0c;队列规模 ≤ 10000&#xff1…

vue2配置跨域后请求的是本机

这个我来说明一下&#xff0c;因为我们公司的后端设置解决了跨域问题&#xff0c;所以我有很久没有看相关的内容了&#xff0c;然后昨天请求了需要跨域的接口&#xff0c;请求半天一直不对&#xff0c;浏览器显示的是本机地址&#xff0c;我以为是自己配置错了&#xff0c;后面…

【Uniapp-Vue3】@import导入css样式及scss变量用法与static目录

一、import导入css样式 在项目文件中创建一个common文件夹&#xff0c;下面创建一个css文件夹&#xff0c;里面放上style.css文件&#xff0c;编写的是公共样式&#xff0c;我们现在要在App.vue中引入该样式。 在App.vue中引入该样式&#xff0c;这样就会使样式全局生效&#…