MySQL 二进制安装(正式篇)

server/2025/1/31 21:39:39/

0_hM4PQP9yoePYv-RB

Author:Arsen
Date:2025/01/24

官方参考文档:点击链接跳转


目录

    • 规划
    • 下载
    • 安装
    • 管理
    • FAQ


规划

OSMySQL Server Version备注
CentOS 7.9 or Linux - Generic8.0.33(GNU libc) 2.17

下载

二进制包下载地址:https://downloads.mysql.com/archives/community/

image-20250124135145737

注意,OS Version 选择对应的 glibc 版本:

首先查看自己服务器 glibc 版本:

ldd --version

image-20250124112718808

因此,需要选择对应的 2.17 版本。

安装

创建 mysql 数据目录

/data/mysql

创建 mysql 用户组

groupadd -g 27 -o -r mysql

创建 mysql 用户

useradd -M -N -g mysql -o -r -d /data/mysql -s /bin/false -c "MySQL Server" -u 27 mysql

选项解析:

-M:不创建用户的主目录

-N:不为用户自动创建同名的组,如果需要加入一个已存在的组,可通过 -g 选项来指定

-g:指定用户的主组,此时,不会自动创建 mysql 组,前提是系统中已经存在 mysql

-o:允许新用户使用已经存在的 UID

-r:创建系统用户,系统用户通常用于没有交互性登录权限的服务账户,UID 通常小于 1000

-d:指定用户的家目录,通常是 MySQL 数据文件的存储目录

-s:禁用用户登录,即不提供交互式 shell 登录

-c:为用户添加注释,在系统的 /etc/passwd 文件中可以看到该注释

-u:指定 UID,通常,MySQL 用户会使用固定的 UID 以便与系统中的 MySQL 服务保持一致

安装包上传至服务器并解压

tar xf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz
mv mysql-8.0.33-linux-glibc2.17-x86_64-minimal/* /data/mysql

MySQL Linux 通用二进制分发目录解释:

  • bin:包含了软件的主程序或者工具的可执行文件
  • docs:MySQL 手册(Info 格式)
  • man:Unix 手册页(包含了命令的用法、选项和示例)
  • include:存放头文件(通常是 C 或 C++ 编程语言的头文件)
  • lib:存放库文件(动态或静态库)
  • LICENSE:软件的许可证文件
  • README:包含软件的简要说明和安装信息
  • share:存放共享的资源文件
  • support-files:与管理多个服务器进程、自动启动配置和日志轮换相关的其他支持文件

创建文件导入、导出安全目录(防止 SQL 注入)

mkdir /data/mysql/secure-file

创建配置文件目录

mkdir /data/mysql/conf

创建数据目录

mkdir /data/mysql/data

创建日志目录

mkdir /data/mysql/logs

配置 MySQL

官方:https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html

vim /data/mysql/conf/my.cnf
[mysqld]
datadir=/data/mysql/data
socket=/tmp/mysql.sock
port=13306
log-error=/data/mysql/logs/localhost.localdomain.err
user=mysql
secure_file_priv=/data/mysql/secure-file
local_infile=OFF

目录/文件授权

chown mysql.mysql -R /data/mysql/
chmod 750 -R /data/mysql

初始化数据目录(较快,秒级)

cd /data/mysql/
bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --initialize

过滤出初始密码

cat logs/localhost.localdomain.err |grep 'root@localhost'# 初始密码为: >BqGh,R>D5-G

image-20250124150748723

管理

配置 systemd 管理,实现在主机重启时启用 MySQL 服务器的自动重启功能。

vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target[Install]
WantedBy=multi-user.target[Service]
User=mysql
Group=mysql# Have mysqld write its state to the systemd notify socket
Type=notify# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0# Start main service
ExecStart=/data/mysql/bin/mysqld --defaults-file=/data/mysql/conf/my.cnf $MYSQLD_OPTS # Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql# Sets open_files_limit
LimitNOFILE = 10000Restart=on-failureRestartPreventExitStatus=1# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1PrivateTmp=false

设置开机自启动

systemctl enable mysqld.service

使配置生效

systemctl daemon-reload

启动 MySQL 服务

systemctl start mysqld.service

查看 MySQL 状态

systemctl status mysqld.service

image-20250124151538031

重置 MySQL root 账户密码

bin/mysql -u root -p# 这里输入我们上面过滤出来的“初始密码 >BqGh,R>D5-G”
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Zhurs@123!';

新密码验证

bin/mysqlshow -u root -p

image-20250124152041590

systemd 常用管理命令:

# 启动
systemctl start mysqld.service# 停止
systemctl stop mysqld.service# 重启
systemctl restart mysqld.service# 开机自启
systemctl enable mysqld.service

FAQ

[ERROR] [MY-013276] [Server] Failed to set datadir to …

现象:

image-20250124162144670

原因:

MySQL 无法访问 datadir 指定的目录 /data/mysql/data/,错误信息显示 OS errno: 13 - Permission denied,这表明 MySQL 的 mysqld 进程没有足够的权限在该目录中创建和写入文件。

解决:

# 赋权
chmod 750 -R /data/mysql# 再次初始化
bin/mysqld --defaults-file=/data/mysql/conf/my.cnf --initialize

ERROR 1820 (HY000): You must reset your password …

现象:

image-20250124161841762

原因:

未修改初始密码。

解决:

# 修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Zhurs@123!';


http://www.ppmy.cn/server/163886.html

相关文章

OpenFGA

1.什么是OpenFGA Fine-Grained Authorization 细粒度关系型授权 2.什么是细粒度授权 细粒度授权 (FGA) 意味着能够授予特定用户在特定资源中执行特定操作的权限。 精心设计的 FGA 系统允许您管理数百万个对象和用户的权限。随着系统不断添加对象并更新用户的访问权限&#…

使用Shell实现一个看门狗功能

最近在使用PrometheusGrafana监控系统过程中,发下部分服务器的客户端监控经常停掉,因此需要再客户端编写一个看门狗脚本定时检查客户端端口是否启动,如果没有启动则启动相关程序。 脚本 watchdog.sh脚本内容如下: #!/bin/bash#…

Ubuntu安装GitLab

在 Ubuntu 上安装 GitLab 的步骤如下。这里以 GitLab Community Edition(CE)为例: 前提条件 确保你的 Ubuntu 系统是 20.04 或更高版本。确保你的系统满足 GitLab 的硬件要求。 步骤 更新系统包: sudo apt update sudo apt upg…

新站如何快速获得搜索引擎收录?

本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/8.html 新站想要快速获得搜索引擎收录,需要采取一系列有针对性的策略。以下是一些具体的建议: 一、网站内容优化 高质量原创内容: 确保网站内容原创、…

linux系统centos版本上安装mysql5.7

步骤 1: 安装 MySQL 5.7 添加 MySQL Yum Repository 首先,你需要添加 MySQL 的官方 Yum repository。打开终端并执行以下命令: sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 这条命令会为 CentOS 7 添加 MySQL…

git和idea重新安装后提交异常

场景:我重装了系统,idea装了2024.3版本的,git也重新装了,但是项目中还是有.git文件夹的,下载了idea的码云插件后,提交报错如下: 异常:Error updating changes: detected dubious ow…

effective-Objective-C 第四章阅读笔记

协议与分类 文章目录 协议与分类通过委托与数据源协议进行对象间通信小结 将类的实现代码分散到便于管理的多个分类中小结 为第三方类的分类名称提供前缀不在分类中声明属性小结 使用拓展隐藏实现细节小结 通过协议提供匿名对象小结 通过委托与数据源协议进行对象间通信 对象之…

《程序人生》工作2年感悟

一些杂七杂八的感悟: 1.把事做好比什么都重要, 先树立量良好的形象,再横向发展。 2.职场就是人情世故,但也不要被人情世故绑架。 3.要常怀感恩的心,要记住帮助过你的人,愿意和你分享的人,有能力…