Linux中安装mysql8,很详细

news/2025/1/17 4:23:46/

一、查看系统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.ppmy.cn/news/1563785.html

相关文章

AV1视频编解码简介、码流结构(OBU)

我的音视频/流媒体开源项目(github) 目录 一、AV1编码技术 二、AV1码流结构(OBU) 三、IVF文件格式 四、ffmpeg支持AV1 五、关于常见格式对AV1的封装 一、AV1编码技术 AV1是由开放媒体联盟(AOM,Alliance for Open Media)在2018年发布的,AV1的前身…

shell脚本练习(5)

一、需求:判断192.168.121.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。 [rootopenEuler-1 script]# cat exist_IP.sh #!/bin/bash ######################### #File name:exist_IP.sh #Email:obboda163.com #Created time:2025-01-…

AI语音机器人大模型是什么?

AI语音机器人的大模型通常是指具有庞大参数规模和复杂结构的深度学习模型,这些模型能够处理大量数据并从中学习复杂的模式和关系,从而在语音识别、自然语言处理、语音合成等任务上表现出色。以下是AI语音机器人中大模型的具体介绍: 1.大模型…

【记录52】el-table-column 添加fixed属性 滚动条无法滑动

问题: el-table-column 添加fixed属性 滚动条无法滑动 使用element UI组件,用到el-table的el-table-column的fixed属性时,当滚动条长度小于固定列时,滚动条无法通过鼠标去点击滑动操作 原因 fixed是用来固定列的属性,其…

Java算法 数据结构 栈 单调栈实战 模版题 [洛谷-P5788]

目录 题目地址 题目描述 输入输出样例 代码 题目地址 【模板】单调栈 - 洛谷 题目描述 输入输出样例 代码 static void solve() throws Exception {int nsc.nextInt();int[] arrnew int[n1];int[] result new int[n1];for(int i1;i<n1;i) {arr[i]sc.nextInt();}Stack …

C# 多线程 Task TPL任务并行

先总结一下 之前发展过程的要点 1&#xff1a; 为了保证多线程正确顺序执行 线程同步 2&#xff1a; 为了节省操作系统线程资源 线程池 异步 方式管理 正常来讲 使用这俩个要点 进行使用 多线程可以满足开发使用需求 但是 新的问题产生了 那就是 多个异步操作 需要编写大量的代…

Rust中的Rc. Cell, RefCell

引用计数Rc 概述&#xff1a; Rc是Rust中用于实现引用计数的类型&#xff0c;它允许多个所有者共享同一个数据。 用法详解&#xff1a; 每当clone一个Rc时&#xff0c;引用计数增加&#xff0c;而每当一个Rc退出作用域时&#xff0c;引用计数减少。当引用计数变为0时&#x…

OpenSeaOtter使用手册-安装

OpenSeaOtter是一个易于安装和使用的容器镜像仓库&#xff0c;是现实了docker registry api v2版本。 OpenSeaOtter包含以下步骤: 下载最新二进制版本初始化配置安装linux服务启动服务接入到OpenLinkSaas项目中(可选步骤)创建验证密钥创建镜像分组 下载 你可以从 GitCode - 全球…