当前位置: 首页 > news >正文

在 Ubuntu 上安装 MySQL 的详细指南

在Ubuntu环境中安装 mysql-server 以及 MySQL 开发包(包括头文件和动态库文件),并处理最新版本MySQL初始自动生成的用户名和密码,可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南,包括从官方仓库和MySQL官方仓库安装的两种方法,并介绍如何处理自动生成的初始用户名和密码,以及如何修改root初始密码。

方法一:使用Ubuntu官方仓库安装

步骤一:更新系统包列表

首先,确保您的系统包列表是最新的:

sudo apt update
sudo apt upgrade -y

步骤二:安装 MySQL Server

使用APT安装MySQL服务器:

sudo apt install -y mysql-server

说明:

  • 该命令将安装最新版本的MySQL服务器以及相关依赖项。

步骤三:安装 MySQL 开发包

安装包含头文件和动态库文件的开发包:

sudo apt install -y libmysqlclient-dev

说明:

  • libmysqlclient-dev 包含用于开发的MySQL头文件和动态库文件。

步骤四:启动并配置 MySQL 服务

  1. 启动MySQL服务

    sudo systemctl start mysql
    
  2. 设置MySQL开机自启动

    sudo systemctl enable mysql
    
  3. 检查MySQL服务状态

    sudo systemctl status mysql
    

    您应该看到类似如下的输出,表示MySQL正在运行:

    ● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since ...
    

步骤五:处理初始自动生成的用户名和密码

在最新版本的MySQL安装过程中,系统会自动为root用户生成一个临时密码。您需要找到该临时密码并进行更改。

1. 查找临时密码

安装完成后,MySQL会将临时密码记录在日志文件中。使用以下命令查看日志并获取临时密码:

sudo grep 'temporary password' /var/log/mysql/error.log

您将看到类似如下的输出:

[Date Time] [Note] A temporary password is generated for root@localhost: xXxXxXxXxXx

记下该临时密码(例如 xXxXxXxXxXx)。

2. 运行安全性脚本

为了提高MySQL的安全性,并修改初始密码,建议运行官方提供的安全性脚本:

sudo mysql_secure_installation

您将被提示执行以下操作:

  1. 输入当前root密码:使用上一步骤中获取的临时密码。
  2. 设置新root密码:根据提示设置一个强密码。
  3. 移除匿名用户:建议移除。
  4. 禁止远程root登录:建议禁止以提高安全性。
  5. 移除测试数据库:建议移除。
  6. 重新加载权限表:选择是以应用更改。

示例交互:

Enter password for user root: 
You must change the password now (y/N)? Y
New password: 
Re-enter new password: 
Password updated successfully!
Remove anonymous users? (Y/n) Y
Disallow root login remotely? (Y/n) Y
Remove test database and access to it? (Y/n) Y
Reload privilege tables now? (Y/n) Y

步骤六:修改root初始密码(手动方法)

如果您需要手动修改root密码,可以按照以下步骤操作:

1. 登录MySQL

使用当前root密码登录MySQL:

sudo mysql -u root -p
2. 修改root密码

在MySQL命令行中执行以下命令以修改root用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;

说明:

  • YourNewStrongPassword! 替换为您希望设置的新密码。
3. 验证密码修改

退出MySQL并重新登录以验证新密码是否生效:

exit
sudo mysql -u root -p

输入新密码后,您应能成功登录。

4. 忘记root密码时的重置方法

如果您忘记了root密码,可以通过以下步骤重置:

  1. 停止MySQL服务

    sudo systemctl stop mysql
    
  2. 以安全模式启动MySQL

    sudo mysqld_safe --skip-grant-tables &
    
  3. 登录MySQL

    sudo mysql -u root
    
  4. 修改root密码

    在MySQL命令行中执行:

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
    FLUSH PRIVILEGES;
    EXIT;
    
  5. 停止安全模式下的MySQL

    首先找到MySQL进程ID:

    sudo killall mysqld
    
  6. 重新启动MySQL服务

    sudo systemctl start mysql
    
  7. 使用新密码登录

    sudo mysql -u root -p
    

步骤七:验证安装

  1. 登录MySQL

    sudo mysql -u root -p
    

    输入您在 mysql_secure_installation 或手动修改时设置的新密码后,您将进入MySQL命令行界面。

  2. 检查MySQL版本

    在MySQL命令行中运行:

    SELECT VERSION();
    

    您将看到MySQL的版本信息。

步骤八:配置防火墙(可选)

如果您需要通过网络访问MySQL,确保防火墙允许3306端口的流量。

  1. 如果使用UFW防火墙

    sudo ufw allow 'MySQL'
    

    或者更具体地:

    sudo ufw allow 3306/tcp
    
  2. 重新加载防火墙规则

    sudo ufw reload
    

注意: 为了安全起见,建议仅允许受信任的IP地址访问MySQL服务。

方法二:使用MySQL官方仓库安装最新版本

如果您需要安装MySQL的最新版本,可以使用MySQL官方提供的APT仓库。

步骤一:下载并添加MySQL APT仓库

  1. 下载MySQL APT仓库配置包

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
    

    注意: 请访问 MySQL APT Repository 页面,确保下载最新版本的 mysql-apt-config 包。

  2. 安装MySQL APT仓库配置包

    sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb
    

    在安装过程中,您将看到一个配置界面,选择您需要的MySQL版本(如8.0),然后确认。

  3. 更新系统包列表

    sudo apt update
    

步骤二:安装 MySQL Server

sudo apt install -y mysql-server

步骤三:安装 MySQL 开发包

sudo apt install -y libmysqlclient-dev

步骤四至步骤七

按照方法一中的 步骤四步骤八 完成MySQL服务的启动、配置、安全性设置和验证。

附加步骤:配置MySQL远程访问(可选)

如果需要从远程主机访问MySQL服务器,需进行以下配置:

步骤一:修改MySQL配置文件

  1. 编辑MySQL配置文件

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  2. 找到 bind-address 行并修改

    将:

    bind-address = 127.0.0.1
    

    修改为:

    bind-address = 0.0.0.0
    

    说明: 这将允许MySQL监听所有IP地址。

  3. 保存并关闭文件(按 Ctrl + O 保存,按 Ctrl + X 退出)

步骤二:重启MySQL服务

sudo systemctl restart mysql

步骤三:创建远程访问用户

  1. 登录MySQL

    sudo mysql -u root -p
    
  2. 创建新用户并授予权限

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    注意: 替换 usernamepassword 为您的实际用户名和密码。

步骤四:配置防火墙

确保防火墙允许来自远程主机的连接:

sudo ufw allow 3306/tcp
sudo ufw reload

注意: 为了安全起见,建议限制允许访问MySQL的IP地址。例如,只允许特定IP访问:

sudo ufw allow from <your_ip_address> to any port 3306

<your_ip_address> 替换为允许访问的IP地址。

常见问题排查

1. 无法启动MySQL服务

解决方案:

  • 查看错误日志:

    sudo journalctl -u mysql
    
  • 检查配置文件是否有语法错误。

  • 确保没有端口冲突(如其他服务占用了3306端口)。

2. 无法连接到MySQL服务器

解决方案:

  • 确保MySQL服务正在运行:

    sudo systemctl status mysql
    
  • 检查防火墙设置是否允许连接。

  • 确认MySQL用户有足够的权限,并且密码正确。

  • 如果是远程连接,确保MySQL配置文件中的 bind-address 设置正确,并且用户权限允许从远程主机连接。

3. 安装 libmysqlclient-dev 后仍提示找不到头文件

解决方案:

  • 确认开发包安装成功:

    dpkg -l | grep libmysqlclient-dev
    
  • 检查头文件路径是否正确,例如 /usr/include/mysql/

  • 在编译时,确保编译器能够找到头文件和库文件,可能需要在编译命令中添加 -I/usr/include/mysql-L/usr/lib/mysql 等选项。

4. 忘记root密码

解决方案:

参考步骤六中的 忘记root密码时的重置方法,通过停止MySQL服务、以安全模式启动、修改密码、重启服务等步骤来重置root密码。

相关文章:

在 Ubuntu 上安装 MySQL 的详细指南

在Ubuntu环境中安装 mysql-server 以及 MySQL 开发包&#xff08;包括头文件和动态库文件&#xff09;&#xff0c;并处理最新版本MySQL初始自动生成的用户名和密码&#xff0c;可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南&#xff0c;包括从官方仓库和MySQL官方…...

Java 优化springboot jar 内存 年轻代和老年代的比例 减少垃圾清理耗时 如调整 -XX:NewRatio

-XX:NewRatio 是 Java Virtual Machine (JVM) 的一个选项&#xff0c;用于调整 年轻代&#xff08;Young Generation&#xff09;和 老年代&#xff08;Old Generation&#xff09;之间的内存比例。 1. 含义 XX:NewRatioN 用于指定 老年代 与 年轻代 的内存比例。 N 的含义&…...

嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏

eDP是嵌入式显示端口&#xff0c;具有高数据传输速率&#xff0c;高带宽&#xff0c;高分辨率、高刷新率、低电压、简化接口数量等特点。现大多数笔记本电脑都是用的这种接口。整个eDP是很复杂的&#xff0c;这里我们不讲底层原理&#xff0c;我们先掌握如何用泰山派来驱动各种…...

在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。

在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。以下是关于这两种方法的详细解释: 一、虚方法(Virtual Method) 定义:虚方法是指在运行时由实例的实际类型决定的方法。在Java中,所有的非私有、非静态、非final方法都是虚方法。当调用一个虚方法时,JVM会根据实…...

【windows】sonarqube起不来的问题解决

1. 现象与本质 因JDK的问题&#xff08;比如版本太低或者太高,推荐JDK17&#xff09;或者其他环境因素&#xff0c;导致sonarqube启动后自动关闭了。 从日志来看&#xff0c;根本看不出来什么&#xff0c;只有警告&#xff0c;没有ERROR&#xff0c;警告也不是本质问题&#…...

golang异常

panic如果不处理会导致应用进程挂掉 defer recover可以处理这种情况 一个recover只处理自己协程 产生panic的情况 空指针 数组越界 空map中添加键值对 错误&#xff0c;error接口&#xff0c;不严重 error.wrapof解决嵌套问题或者error.unwrap erroe.is方法&#xff0c;判断是…...

搭建MongoDB

title: 搭建MongoDB date: 2024-11-30 23:30:00 categories: - 服务器 tags: - MongoDB - 大数据搭建MongoDB 环境&#xff1a;Centos 7-2009 1. 创建MongoDB的国内yum源 # 下载Centos7对应最新版7.0.15的安装包 cat >> /etc/yum.repos.d/mongodb.repo << &quo…...

Android中坐标体系知识超详细讲解

说来说去都不如画图示意简单易懂啊&#xff01;&#xff01;&#xff01;真是的&#xff01; 来吧先上张图&#xff01; &#xff08;一&#xff09;首先明确一下android 中的坐标系统&#xff1a; 屏幕的左上角是坐标系统原点&#xff08;0,0&#xff09; 原点向右延伸是X轴正…...

不需要服务器,使用netlify快速部署自己的网站

Netlify简介 1.1 Netlify的功能与特点 Netlify 是一个功能强大的静态网站托管平台&#xff0c;它不仅提供了简单的网站部署功能&#xff0c;还集成了许多现代化的开发工具和服务&#xff0c;帮助开发者更高效地构建、部署和管理网站。Netlify 的核心功能包括&#xff1a; 自动…...

Swin transformer 论文阅读记录 代码分析

该篇文章&#xff0c;是我解析 Swin transformer 论文原理&#xff08;结合pytorch版本代码&#xff09;所记&#xff0c;图片来源于源paper或其他相应博客。 代码也非原始代码&#xff0c;而是从代码里摘出来的片段&#xff0c;配上简单数据&#xff0c;以便理解。 当然&…...

信息安全概论

文章目录 预测题重要考点1.遇到什么威胁有什么漏洞怎么缓解分析题2.网络安全现状分析 2.网络安全亮点 时间信息安全概论期末简答题软件学院实验室服务器安全风险分析与PDRR策略 1.1 信息时代的特点1.2 信息安全威胁1.3信息安全趋势1.4 研究网络与信息安全的意义2.1安全风险分析…...

2024年12月16日Github流行趋势

项目名称&#xff1a;PDFMathTranslate 项目维护者&#xff1a;Byaidu reycn hellofinch Wybxc YadominJinta项目介绍&#xff1a;基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/Ollama/OpenAI 等服务&#xff0c;提供 CLI/GUI/Docker。项目star数…...

Go 1.24即将到来!

Go 1.24 尚未发布。以下是正在撰写中的发布说明&#xff0c;预计 Go 1.24 将于 2025 年 2 月发布。 语言改进 Go 1.24 现在全面支持 泛型类型别名&#xff1a;类型别名可以像定义类型一样被参数化。详情请参阅语言规范。目前&#xff0c;可通过设置 GOEXPERIMENTnoaliastypep…...

FFmpeg库之ffplay

文章目录 FFmpeg环境搭建ffplay使用通用选项视频选项音频选项快捷键使用滤镜直播拉流 FFmpeg环境搭建 FFmpeg官网 FFmpeg环境搭建 ./configure \--prefix"$HOME/ffmpeg" \--extra-cflags"-I$HOME/ffmpeg/include" \--extra-ldflags"-L$HOME/ffmpeg…...

scala中模式匹配的应用

package test34object test6 {case class Person(name:String)case class Student(name:String, className:String)// match case 能根据 类名和属性的信息&#xff0c;匹配到对应的类// 注意&#xff1a;// 1 匹配的时候&#xff0c;case class的属性个数要对上// 2 属性名不需…...

WebRTC搭建与应用(一)-ICE服务搭建

WebRTC搭建与应用(一) 近期由于项目需要在研究前端WebGL渲染转为云渲染&#xff0c;借此机会对WebRTC、ICE信令协议等有了初步了解&#xff0c;在此记录一下&#xff0c;以防遗忘。 第一章 ICE服务搭建 文章目录 WebRTC搭建与应用(一)前言一、ICE是什么&#xff1f;二、什么…...

【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式&#xff0c;同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向&#xff0c;为读者提供从数据组织、预处理、加载到可视化展示的完整过程&#xff0c;并为后续模型训练打下基础。 前言 在计算机视觉的深…...

Kafka学习篇

Architecture 系统间解耦&#xff0c;异步通信&#xff0c;削峰填谷 Topic 消息主题&#xff0c;用于存储消息 Partition 分区&#xff0c;通过扩大分区&#xff0c;可以提高存储量 Broker 部署Kafka服务的设备 Leader kafka主分区 Follwer kafka从分区 高性能之道&#xff1a…...

冬日养仓鼠小指南:温暖与陪伴同行

随着冬日的脚步悄然来临&#xff0c;家中可爱的小仓鼠也需要我们给予更多的关怀与呵护。仓鼠虽小&#xff0c;但它们的冬日养护却大有学问&#xff0c;关乎着这些小生命能否健康快乐地度过寒冷季节。 保暖是冬季养仓鼠的首要任务。我们可以为仓鼠的小窝增添一些保暖材料&#…...

【计算机视觉基础CV】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中&#xff0c;我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型&#xff0c;特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤&#xff0c;读…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...