文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-14 13:56

关注

目录

介绍

安装

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版本

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 serverAfter=network.target[Install]WantedBy=multi-user.target[Service]Type=forkingTimeoutSec=0PermissionsStartOnly=trueExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONSExecReload=/bin/kill -HUP $MAINPID  ExecStop=/bin/kill -s QUIT $MAINPID KillMode=processLimitNOFILE=65535Restart=on-failureRestartSec=10RestartPreventExitStatus=1PrivateTmp=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 "support/mysql.server 用作 /usr/lib/systemd/system/mysqld.service 运行会有错误。而自己写这个服务,pid又不会按设定的路径建立。

来源地址:https://blog.csdn.net/lwj457700209/article/details/130449868

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯