MySQL 安装部署

news/2025/1/10 19:41:10/文章来源:https://www.cnblogs.com/yaenli/p/18664587

概述

本文主要介绍如何在 Linux 中以 RPM 包的方式安装 MySQL 并进行相关的初始化配置,文中方案均已实践验证。

操作系统 CentOS 7.6
数据库版本 MySQL 8.4.3 LTS

[!NOTE] 说明
本文主要介绍 RPM 包的安装方式,其他安装方法可查阅官网:MySQL :: MySQL 8.4 Reference Manual :: 2.5 Installing MySQL on Linux

环境准备

从官方下载RPM包:MySQL :: Download MySQL Community Server

  • 版本:8.4.3 LTS
  • 系统:RedHat Linux / Oracle Linux
  • 内核:Linux 7 (本文是7-x86-84bit)

各个包之间存在依赖关系,如果需要安装完整版,则下载 RPM bundle tar ,里面包含了所有的RPM包。大多数情况下,标准安装MySQL只需要下载以下RPM包:

  • mysql-community-server
  • mysql-community-client
  • mysql-community-client-plugins
  • mysql-community-libs
  • mysql-community-icu-data-files
  • mysql-community-common
  • mysql-community-libs-compa

如果已安装MySQL,需要先删除旧版本:

yum list installed | grep mysql
rpm -qa | grep mysql
yum remove mysql

安装部署

将下载的RPM包上传至服务器目录,并在目录下执行如下命令进行安装:

$> su - mysql
$> sudo yum install mysql-community-{client,client-plugins,common,libs}-*

[!NOTE] 注意
有些用户会使用 rpm -Uvh ,但是由于潜在的依赖项问题,可能会导致安装失败,因此使用 yum

安装完成后,会创建如下文件和资源:

Files or Resources Location 说明
Client programs and scripts /usr/bin 客户端程序和脚本
mysqld server /usr/sbin mysqld 服务器
Configuration file /etc/my.cnf 配置文件
Data directory /var/lib/mysql 数据目录
Error log file For RHEL, Oracle Linux, CentOS or Fedora platforms: /var/log/mysqld.log

For SLES: /var/log/mysql/mysqld.log
错误日志文件
Value of secure_file_priv /var/lib/mysql-files
System V init script For RHEL, Oracle Linux, CentOS or Fedora platforms: /etc/init.d/mysqld

For SLES: /etc/init.d/mysql
初始化脚本
Systemd service For RHEL, Oracle Linux, CentOS or Fedora platforms: mysqld

For SLES: mysql
系统服务
Pid file /var/run/mysql/mysqld.pid Pid 文件
Socket /var/lib/mysql/mysql.sock
Keyring directory /var/lib/mysql-keyring 密钥环目录
Unix manual pages /usr/share/man
Include (header) files /usr/include/mysql
Libraries /usr/lib/mysql
Miscellaneous support files (for example, error messages, and character set files) /usr/share/mysql
该安装还会创建一个名为 mysql 的用户及用户组(本文已经提前创建了)。

[!NOTE] 注意

  • mysql 用户是使用 useradd 命令的 -r 和 -s /bin/false 选项创建的,因此它没有登录服务器主机的权限(有关详细信息,请参阅创建 mysql 用户和组。要切换到 mysql 用户,请使用 su 命令及选项:
$> su - mysql --shell=/bin/bash
  • 安装旧版本的MySQL时,软件包可能已经创建了 /usr/my.cnf 的配置文件,请检查文件内容并迁移其中的所需配置至新的配置文件 /etc/my.cnf ,然后删除 /usr/my.cnf

至此安装完成,启动服务:

$> systemctl start mysqld

可以根据需要设置开机自启动:

systemctl enable mysqld
systemctl list-unit-files|grep mysqld 

初始启动后,会创建超级用户root'@'localhost,用如下命令查看临时密码:

$> sudo grep 'temporary password' /var/log/mysqld.log

使用临时密码登录后修改密码:

$> mysql -uroot -pmysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

如果在安装过程中出现问题,可以在错误日志文件 /var/log/mysqld.log 查看相关信息。

如果需要安装多个客户端库版本已保持兼容性,使用--oldpackage,例如:

$> rpm --oldpackage -ivh mysql-community-libs-5.5.50-2.el6.x86_64.rpm

[!NOTE] 注意
更多详细信息可参见官网文档:MySQL :: MySQL 8.4 Reference Manual :: 2.5.4 Installing MySQL on Linux Using RPM Packages from Oracle

初始配置

配置远程连接

  1. 修改 /etc/my.cnf,在mysqld 块加入配置项 bind-address=* (或者 `bind-address=0.0.0.0)。
  2. 修改 /etc/my.cnf,在mysqld 块加入配置项mysql_native_password=ON 以允许本地密码连接,重启服务。
  3. 修改用户的host字段,允许远程主机连接,用通配符 % 表示任意主机:
use mysql;update user set host = '%' where user = 'root';flush privileges;
  1. 确保服务器的防火墙规则允许MySQL服务端口(默认为3306)上的入站流量。

创建用户授权登录

创建新库

CREATE DATABASE mydatabase;

创建用户和密码

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';

授权用户

GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'%';

刷新权限

FLUSH PRIVILEGES;

验证登录:

mysql -h xx.xx.xx.xx -P 3306 -u myuser -p

常见问题

无法使用临时密码登录,登录时出现Access denied for user ‘root‘@‘localhost‘ (using password: YES) 拒绝访问。

  1. 设置登录时跳过权限检查:修改 /etc/my.cnf,在mysqld 块加入配置项 skip-grant-tables ,然后重启数据库 systemctl restart mysqld

  2. 登录mysql :mysql –uroot –p

  3. 修改密码:

update mysql.user set authentication_string = 'Root@1234' where user = 'root';
flush privileges;

远程客户端(如Navicat、DBeaver等)连接报错:Authentication plugin 'caching_sha2_password' cannot be loaded

由于MySQL 8.4.3 默认使用的是caching_sha2_password验证方式,但客户端不支持,需要服务端开启 mysql_native_password ,即在my.cnf 文件的 [mysqld] 部分中加入mysql_native_password=ON 或者以参数 --mysql-native-password=ON 启动 MySQL 服务。

查看当前配置:

mysql> select user, host, plugin from mysql.user;

[!NOTE] 注意
mysql_native_password 身份验证 plugin 从 MySQL 8.0.34 开始被弃用,在 MySQL 8.4 中默认处于禁用状态 ,并从 MySQL 9.0.0 中删除。

修改my.cnf配置后MySQL无法启动

由于MySQL 8.4.3 的部分配置参数对比之前版本存在较大差异,而目前网络上大部分文章的配置参数都是早期版本,导致修改后启动服务报错,比如:

旧版本是default-character-set=utf8 ,新版本是 character-set-server = utf8 ;

旧版本是default-authentication-plugin=mysql_native_password ,新版本是 mysql_native_password=ON

各参数配置请以官网为准:
MySQL :: MySQL 8.4 Reference Manual :: 7.1.7 Server Command Options

参考文章

  • MySQL :: MySQL 8.4 Reference Manual

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

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

相关文章

In‐band Network Telemetry

#卫星 #遥测技术 #INT 一、INT是什么? INT,In‐band Network Telemetry ,带内网络遥监测。telemetry,英文原意是遥测技术。从其英文名称可以了解如下: a.In-band,说明监测指令及数据均在带内传输 b.telemetry ,说明是长距离,远程获取网络数据的方法。 想象一下卫星在…

潮汐指纹识别工具 : 在线网站识别利器

最近发现了一个免费在线收集网站信息的工具,感觉挺好用的,给各位推荐下。潮汐在线指纹识别是山东新潮信息技术有限公司安全团队提供的一个免费开源在线网站信息收集工具。 功能亮点: 全面扫描 只需输入目标网站的URL或IP地址,即可获取该网站的标题、中间件、操作系统、域名…

JAVA-Day 11:数组的静态初始化和遍历

数组的静态初始化和遍历 数组静态初始化格式 数组的静态初始化与遍历 完整格式:数据类型 [] 数组名=new 数据类型[]{元素1,元素2,元素3,....} 简化格式:数据类型 [] 数组名={元素1,元素2,元素3,....} []在数组名前后都可以 代码如下: int number[]={1,2,3,4,5};for (int …

JAVA-Day 10:Do...While循环语句

Do...While循环语句 Do...While循环格式 初始化语句; do{ 循环体语句; 条件控制语句; }while(条件判断语句); 例: 使用do...while循环输出1-10的和(包括10) int i=1;int count=0;do{count+=i;i++;}while(i<=10);System.out.println(count);代码运行结果如下图所示:

配置tigerVNC,登陆远程服务器

1.在远程服务器安装、配置 (1) sudo apt update sudo apt install xfce4 xfce4-goodies (2) 安装TigerVNC sudo apt install tigervnc-standalone-server (3) 配置vnc vncpasswd (4) 配置.vnc: vim ~/.vnc/xstartup 添加:cat .vnc/xstartup#!/bin/sh # 启动 D-Bus 会话 (如果未…

CF1993F2 Dyn-scripted Robot (Hard Version)

Dyn-scripted Robot (Hard Version) 题目链接。 Problem Easy Version:\(K \le n\)。 Hard Version:\(K \le 10^{12}\)。 一个 \(Oxy\) 平面上有一个 \(w \times h\) 矩形,矩形的左下方有点 \((0, 0)\) ,右上方有点 \((w, h)\) 。 您还有一个最初位于点 \((0, 0)\) 的机器人…

OmniNxt 论文阅读

来源: https://arxiv.org/html/2403.20085?_immersive_translate_auto_translate=1 标题: OmniNxt: A Fully Open-source and Compact Aerial Robot with Omnidirectional Visual Perception OmniNxt 感觉是, 取自 Omnidirectional 中 全的意思, Nxt 像是 Next 的意思,表…

2024-12-1-#{}与¥{}的区别-response

{}与¥{}的区别response实现重定向response响应字符数据response响应字节数据以及导入工具类实现响应

手动部署前后端分离的项目到本地

1.准备工作 使用maven打包springboot项目为.jar文件得到springboot-0.0.1-SNAPSHOT.jar打包vue项目 npm install -g @vue/cli安装Vue CLI 在项目根目录下,运行npm run build命令来构建项目得到一个dist文件夹将打包好的文件通过远程仓库中转至docker虚拟机在虚拟机拉取镜像,并…

nvm 安装进行node多版本管理及环境变量配置

注意: 1、安装nvm之前需要卸载之前的nodejs,并且还要删除之前的环境变量配置,否则会出现一些奇怪的问题 2、nvm的安装路径不能有中文或者空格,否则后面在cmd中切换node版本会出现乱码 一、完全卸载旧的nodejs 参考文章《Node卸载超详细步骤》 1、打开系统的控制面板,点击卸…

M5Stack 发布全双工通信语音识别硬件;雷蛇发布 AI 游戏伴侣 Project AVA,实时指导复盘

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

WPF 怎么利用behavior优雅的给一个Datagrid添加一个全选的功能

前言:我在迁移旧项目代码的时候发现别人写很多界面都涉及到一个DataGrid的全选,但是每个都写的很混乱,现在刚好空闲下来,写一个博客, 给部分可能不太会写这个的同学讲一下,怎么实现全选功能,并且可以在任何项目里面复用这个功能。 先准备一个Datagrid,我们给这个DataGr…