mysql 8.0安装全过程(linux上二进制包安装,非root用户)

news2024/9/29 17:29:03

目录

介绍

安装

0、删除随系统安装的mariadb

1、下载

2、解压

3、创建用户

4、创建数据目录

5、核心启动配置文件

6、安装依赖

7、初始化mysql文件

8、启动服务

9、配置环境变量

10、改root登录密码

可能遇到错误:

1) libaio.so.1 缺少

2)The designated data directory /data/mysql/ is unusable

3)Can't connect to local MySQL server through socket '/tmp/mysql.sock'

4)log-error set to '/data/mysql_log/mysql.log', however file don't exists. Create writable for user 'mysql'

5)未在my.cnf 设定的正确位置产生pid,sock等文件。


介绍

mysql 是一种RDBMS  关系型数据库管理系统 Relational Database Management System

关系型数据库将数据保存在不同的表中,而不是放在一个大仓库内,增加了速度,提高了灵活性。

.

mysql版本

5.7.x    和    8.0.x    是目前主流。2个版本有性能上差异。

一般三个月迭代一个小版本

.

安装

0、删除随系统安装的mariadb

默认linux会安装mariadb,会造成my.cnf等配置的冲突,不能读入默认的my.cnf配置文件。

当发现指定了这个配置文件启动但没有在设定的位置产生log、pid 等文件的时候就来检查下这个问题。

rpm -qa | grep mariadb       #查看是否存在mariadb安装

rpm -e  --nodeps  mariadb-libs          #卸载包。 --nodeps 不检验依赖

1、下载

去官网 https://dev.mysql.com/downloads/mysql/ 下载 Community(社区版) 的 generic(通用版)  二进制包文件。

mysql一般不用源码包编译因为时间太久。

.

看一下自己系统的C文件库是多少版本

 

 .

2、解压

下载文件名为 mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz  ,需用 J 而不是 z 来解压。

tar Jxvf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz

.

做一个软链接让名字变短点。

ln -s mysql-8.0.33-linux-glibc2.17-x86_64-minimal mysql

 

 .

3、创建用户

useradd  -s  /sbin/nologin  mysql       创建一个无系统登录权限的mysql用户

useradd -s /sbin/nologin mysql

.

4、创建数据目录

mkdir -p /data/mysql

最好是单独在一个大的分区且是性能比较好的磁盘。数据库对磁盘读写的性能要求比较高。

.

设定数据目录的属主属组为要写入的用户名

chown -R mysql:mysql /data/mysql

.

5、核心启动配置文件

/etc/my.cnf      

( 很多linux会默认自带有mariadb的配置文件,看内容可识别出来)

客户端【mysql】可配置端口和socket等,也可不配置(也可用【client】配置)。

重要的是服务端【mysqld】的配置,介绍几个最核心配置:

basedir —— 指定mysql程序路径

datadir —— 指定数据存放路径

socket  —— .sock套接字文件是linux本地进程之间通信的一种方式,不熟悉mysql不建议改路径。有个细节,客户端和服务端的socket必须一致。如果只设定服务端里的socket会出问题。最后错误归结里有一个专门说这个问题的。

mysqlx_socket —— 8.0版本用于MySQL X 管理协议,端口33060。从 MySQL 8.0.14 开始,MySQL 服务器允许专门为管理连接配置 TCP/IP 端口。这为用于普通连接的网络接口上允许的单个管理连接提供了一种替代方法,即使已经建立了 max_connections 连接,但这个协议的端口不算在连接数内。但只有在启动时设置了 admin_address 系统变量以指示管理接口的 IP 地址时,该接口才可用。

pid-file  ——  是记录进程启动以后会产生的一个pid 

log-error  —— 错误日志记录的位置

plugin_dir ——  mysql中plugin插件所在的路径;

symbolic-links=0    符号连接。如果设置为1,则mysql数据库和表里的数据支持储存在datadir目录之外的路径下。默认为0

my.cnf 中的【mysql】【mysql】【mysql_safe】是启动程序配置的组名(不是说权限的组)

 $basedir/bin/ 下的各个应用程序能读取不同组的配置

.

.

6、安装依赖

yum  install  libaio-devel 

.

7、初始化mysql文件

初次运行先要让指定的数据目录/data/mysql 产生初始文件。

使用$basedir/bin/mysqld 来产生。

/usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql

--console   让返回打印在控制台。

--initialize-insecure    产生初始化文件。 -insecure 使用空密码的方式,这样比较方便,可以登录以后再改,不然安装时候会自动随机一个密码给你。

--user   初始化使用的用户名,这样产生的文件属主属组都是这个用户的

.

--console 在启动时候的产生打印效果如下,这部分也可以在log日志中看到

.

 --user = mysql 产生的效果

.

(上一步只是进行初始化,mysql 初始化结束后也并没有启动)

8、启动服务

启动服务用的是$basedir/bin/mysqld_safe

直接启动语句

/usr/local/mysql/bin/mysqld_safe  --defaults-file=/etc/my.cnf  --daemonize

--daemonize   表示后台运行,相当于在最后加上 &  效果一样。

/usr/local/mysql/bin/mysqld_safe  --defaults-file=/etc/my.cnf  --user=root  &

写启动服务的脚本 mysqld.service

vi /usr/lib/systemd/system/mysqld.service

(这些启动服务模板大都具有通用性)(下面这里用mysqld,用mysqld_safe反而有问题)

[Unit]
Description=Mysql server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
TimeoutSec=0
PermissionsStartOnly=true

ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID  
ExecStop=/bin/kill -s QUIT $MAINPID 

KillMode=process
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false

--defaults-file=   指定启动时的配置文件。这里不指定也可以,因为mysql本身就默认会找这个文件

--daemonize   表示后台启动

ExecReload=/bin/kill -HUP -$MAINPID       杀掉进程,可以加 -s HUP  强制杀掉,下面QUIT 也可以改为 -s QUIT 强制退出。

$MAINPID 就是定义的.pid文件

.

在使用系统启动服务之前最好先直接绝对路径运行一下应用看是否能运行成功,加了 --daemonize 后台运行以后有问题不一定及时能看到。

有试过一直程序不正常后来发现根本是就没启动成功但是没报错。

通常 $basedir/support-files 下也会有 mysql.server 官方提供的模板,可以复制到上面位置替换。

编辑好启动服务文件后,因为是新配置的启动服务,因此需要重置一下系统服务

systemctl daemon-reload

.

启动服务

systemctl start mysqld

可以从ps看到记录的mysql服务启动的命令就是 mysql.service 里定义的 ExecStart 命令

.

把服务设为开机自启动

systemctl enable mysqld

设为服务后,systemctl  start  mysqld 可以在/var/log/mesages 里查看报错。.

.

9、配置环境变量

为了使 mysql 的命令能直接输入运行,需要加入环境变量。不然只能用绝对路径 /usr/local/mysql/bin/XXX

vi  /etc/profile     

把mysql的路径加进去。

 source /etc/profile               #重载让文件生效

10、改root登录密码

因为一开始初始化设置的是 --insecure ,现在直接 mysql  -uroot  就能登录进数据库。

mysqladmin  -uroot   password  "新密码"

修改成需要密码形式。

(改过socket的可能还会在此报错,解决办法见下面)

可能遇到错误:

1) libaio.so.1 缺少

 这个错误是在初始化没装依赖  情况下会发生的。

yum provides "/*/libaio.so.1"

i686是32 位的。 x86_64是64位的。

uname  -a    #查看下当前系统的架构

yum install libaio-0.3.109-13.el7.x86_64  -y

2)The designated data directory /data/mysql/ is unusable

数据库存储目录没有使用权,可能是初始化过了需要remove删除过再初始化;也可能是这个文件夹的属组属主不是 --user= 设定的那个,需要chown -R 修改。

3)Can't connect to local MySQL server through socket '/tmp/mysql.sock'

修改完配置文件的 socket地址 经常会出的问题。

 

原因:客户端和服务端的 socket  文件必须一致,但因为经常不写客户端配置,而客户端socket默认是 /tmp/mysql.sock ,就会导致当服务端配置了其他的路径时候会发生上面报错。

把/etc/my.cnf 文件中加上客户端的配置如下,问题解决。可写成【mysql】或【client】

还有可能mysql 命令正常了,在运行 mysqladmin 或者 mysqldump 时候依然报错如下:

 这时需要在 my.conf 文件上给各个应用加上.sock路径解决

socket额外资料:

mysql.sock是随每一次 mysql server启动生成的。作用于本地连接,这比指定IP连接的方式要快。本地连接通常用一个Unix域套接字文件进行,一般是/tmp/mysql.sock。

如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了  /tmp下的临时文件,可以用 chmod +t /tmp 使得文件仅能由他们的所有者或超级用户(root)删除。

4)log-error set to '/data/mysql_log/mysql.log', however file don't exists. Create writable for user 'mysql'

日志无法生成问题

 

5)未在my.cnf 设定的正确位置产生pid,sock等文件。

 

因为linux系统默认装有mariadb并占有配置文件my.cnf ,故没有做第0步的时候会产生这种情况。

至于没读到配置文件产生的位置,可以看$basedir/support/mysqld.server 文件中关于路径的描述。下面是关于用hostname做pid的解释。

待处理问题,8.0使用*/support/mysql.server 用作 /usr/lib/systemd/system/mysqld.service 运行会有错误。而自己写这个服务,pid又不会按设定的路径建立。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET Core MVC 从入门到精通之HttpContext

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

kafka常见问题QA(六)

六、常见问题QA 6.1 无消息丢失如何配置 producer 调用方式 (1)网络抖动导致消息丢失,Producer 端可以进行重试。 (2)消息大小不合格,可以进行适当调整,符合 Broker 承受范围再发送。 不要使用…

【Linux Network】网络编程套接字

目录 1. 源IP地址与目的IP地址的认识 2. 端口号的认识 3. 套接字socket 4. TCP协议和UDP协议 5. 网络字节序 6. socket编程 7. socket编程接口 8. 使用UDP协议跨网络通信程序 Linux网络编程✨ 1. 源IP地址与目的IP地址的认识 在因特网上,一台主机和一个IP地址往往是…

【VM服务管家】VM4.2平台SDK_6.1 环境配置类

目录 2.1.1 环境配置:基于Csharp二次开发环境配置方法2.1.2 环境配置:基于MFC二次开发环境配置方法2.1.3 环境配置:基于Qt二次开发环境配置方法2.1.4 用户权限:普通以EXE方式启动Server的方法2.1.5 环境配置:程序启动后…

基于类别级正则化的无监督域自适应眼底图像分割

文章目录 Unsupervised Domain Adaptive Fundus Image Segmentation with Category-Level Regularization摘要方法Inter-domain Category RegularizationSource Domain Category RegularizationTarget Domain Category Regularization总损失 Unsupervised Domain Adaptive Fund…

总结目前敏捷开发框架(持续更新....)

文章目录 0 敏捷开发1 类型分类1.1. Scrum1. 2.极限编程(XP)1. 3. 快速应用程序开发 (RAD)1. 4. 动态系统开发方法(DSDM)1.5.统一流程(UP)1. 6. 精益方法1. 7. 看板1. 8.FDD(功能驱动开发&#…

2023年最新版【接口自动化测试,web自动化测试,app自动化测试】全套自动化测试面试题

前言: 自动化测试是软件测试中的一个重要领域,它可以帮助企业提高软件开发质量、缩短测试周期和降低测试成本。随着信息技术的不断发展,自动化测试也在不断地创新和发展。本篇文章收集了2023年最新版的接口自动化测试、Web自动化测试和App自…

通俗理解CNN感受野的计算方法

x o u t x i n − k s 1 x_{out} \frac{x_{in} - k}{s} 1 xout​sxin​−k​1 如果不考虑padding,卷积输出的feature map的计算公式如上,那么 x i n ( x o u t − 1 ) ∗ s k x_{in} (x_{out} - 1) * s k xin​(xout​−1)∗sk。因此计算模型的感…

springbooot使用google验证码

springbooot使用google验证码 1、使用场景2、springboot使用google验证码1、引入依赖2、编写配置类3、编写控制层4、前端实现 1、使用场景 由于需要做一个前后端分离的项目,想着使用google验证码,由于年龄大了,这些知识啊,用完就…

防伪标志使用的全息薄膜,竟可合成大自然的“结构色”

大自然为生物赋予了各种各样的色彩,除了常见的赤橙黄绿青蓝紫外,还有反光效果很好的金属色等等。有趣的是,一些生物身上的颜色也能像金属那样闪闪发光,在不同光线下颜色甚至还会有变化。实际上,大自然很多色彩由色素产…

全注解下的SpringIoc 续6-多环境配置

我们都知道,在企业开发过程中,一个项目往往都会有开发、测试、仿真、生产等环境配置,除了使用配置中心(比如Apollo等)之外,Spring Boot也提供了不同环境之间切换的机制,下面让我们来一起看看。 …

Docker安全最佳实践

目录 1、探测容器开放端口和服务漏洞 2、宿主机、网络、镜像、DockerApi安全 3、更新Docker、日志、事件 4、Docker安全测试 5、Docker安全最佳实践 1、探测容器开放端口和服务漏洞 使用Nmap扫描Docker容器中的开放端口 使用docker ps命令获取正在运行的容器ID或名称。在…

密码学作业——置换密码部分

part1: encrypt加密函数_代码补充&#xff1a; /*请在此处添加*/cout<<Substition[plain[i]]; part2:Decrypt解密函数_代码补充: /*请在此处添加代码*/ cout<<ReverseTable[cipher[i]];part3:设置 转换表Substition[]部分: // 将i对应的置换表元素设为s1中对应…

prometheus实战之三:告警规则

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文是《prometheus实战》系列的第三篇&#xff0c;一起来学习prometheus的告警功能&#xff0c;如下图所示&#xff0c;整个告警功能分为规则和通…

Python使用AI animegan2-pytorch制作属于你的漫画头像/风景图片

Python使用AI animegan2-pytorch制作属于你的漫画头像 1. 效果图2. 原理3. 源码参考 git clone https://github.com/bryandlee/animegan2-pytorch cd ./animegan2-pytorch python test.py --photo_path images/photo_test.jpg --save_path images/animegan2_result.png1. 效果图…

全球首个机器人辅助试管婴儿降生

近日&#xff0c;两名通过机器人辅助受精手术成功诞生的女婴成为全球瞩目的焦点。这是全球首批由机器人成功辅助受精的婴儿案例&#xff0c;预示着未来生育技术的发展趋势。 以往&#xff0c;试管婴儿受精过程中将精子注入卵子内的环节都是由人工完成。胚胎技术人员需要在显微镜…

最简单的循环

☃️个人主页&#xff1a;fighting小泽 &#x1f338;作者简介&#xff1a;目前正在学习C语言和数据结构 &#x1f33c;博客专栏&#xff1a;C语言学习 &#x1f3f5;️欢迎关注&#xff1a;评论&#x1f44a;&#x1f3fb;点赞&#x1f44d;&#x1f3fb;留言&#x1f4aa;&am…

6. Docker——详说镜像

本章讲解知识点 Docker 镜像 Union File System&#xff08;联合文件系统&#xff09;技术 回说 Docker 镜像分层 Docker 镜像分层原理 1. Docker 镜像 镜像是一种轻量级、可执行的独立软件包&#xff0c;用来打包软件运行环境和基于运行环境开发的软件&#xff0c;它包含…

一文了解 Zebec Labs 投资的 Coral Finance,空投计划或在不久推出

在前不久&#xff0c;Zebec Labs 宣布对链上衍生品协议 Coral Finance 进行150万美元的投资&#xff0c;以帮助该协议完成早期启动并&#xff0c;并在后续持续的为其提供孵化支持。Coral Finance 将在不久部署在 Nautilus Chain 主网上。据了解&#xff0c;Coral Finance 是 Na…

【VM服务管家】VM4.2平台SDK_6.2 模块操作类

目录 2.2.1 流程操作&#xff1a;通过流程或Group设置输入输出图像的方法2.2.2 模块操作&#xff1a;设置输入图像、参数和ROI2.2.3 N点标定&#xff1a;清空标定点、生成标定文件2.2.4 分支字符&#xff1a;控制调试模式开关的方法2.2.5 条件检测&#xff1a;条件检测模块设置…