在 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 服务
-
启动MySQL服务
sudo systemctl start mysql -
设置MySQL开机自启动
sudo systemctl enable mysql -
检查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
您将被提示执行以下操作:
- 输入当前root密码:使用上一步骤中获取的临时密码。
- 设置新root密码:根据提示设置一个强密码。
- 移除匿名用户:建议移除。
- 禁止远程root登录:建议禁止以提高安全性。
- 移除测试数据库:建议移除。
- 重新加载权限表:选择是以应用更改。
示例交互:
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密码,可以通过以下步骤重置:
-
停止MySQL服务
sudo systemctl stop mysql -
以安全模式启动MySQL
sudo mysqld_safe --skip-grant-tables & -
登录MySQL
sudo mysql -u root -
修改root密码
在MySQL命令行中执行:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!'; FLUSH PRIVILEGES; EXIT; -
停止安全模式下的MySQL
首先找到MySQL进程ID:
sudo killall mysqld -
重新启动MySQL服务
sudo systemctl start mysql -
使用新密码登录
sudo mysql -u root -p
步骤七:验证安装
-
登录MySQL
sudo mysql -u root -p输入您在
mysql_secure_installation或手动修改时设置的新密码后,您将进入MySQL命令行界面。 -
检查MySQL版本
在MySQL命令行中运行:
SELECT VERSION();您将看到MySQL的版本信息。
步骤八:配置防火墙(可选)
如果您需要通过网络访问MySQL,确保防火墙允许3306端口的流量。
-
如果使用UFW防火墙
sudo ufw allow 'MySQL'或者更具体地:
sudo ufw allow 3306/tcp -
重新加载防火墙规则
sudo ufw reload
注意: 为了安全起见,建议仅允许受信任的IP地址访问MySQL服务。
方法二:使用MySQL官方仓库安装最新版本
如果您需要安装MySQL的最新版本,可以使用MySQL官方提供的APT仓库。
步骤一:下载并添加MySQL APT仓库
-
下载MySQL APT仓库配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb注意: 请访问 MySQL APT Repository 页面,确保下载最新版本的
mysql-apt-config包。 -
安装MySQL APT仓库配置包
sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb在安装过程中,您将看到一个配置界面,选择您需要的MySQL版本(如8.0),然后确认。
-
更新系统包列表
sudo apt update
步骤二:安装 MySQL Server
sudo apt install -y mysql-server
步骤三:安装 MySQL 开发包
sudo apt install -y libmysqlclient-dev
步骤四至步骤七
按照方法一中的 步骤四 到 步骤八 完成MySQL服务的启动、配置、安全性设置和验证。
附加步骤:配置MySQL远程访问(可选)
如果需要从远程主机访问MySQL服务器,需进行以下配置:
步骤一:修改MySQL配置文件
-
编辑MySQL配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf -
找到
bind-address行并修改将:
bind-address = 127.0.0.1修改为:
bind-address = 0.0.0.0说明: 这将允许MySQL监听所有IP地址。
-
保存并关闭文件(按
Ctrl + O保存,按Ctrl + X退出)
步骤二:重启MySQL服务
sudo systemctl restart mysql
步骤三:创建远程访问用户
-
登录MySQL
sudo mysql -u root -p -
创建新用户并授予权限
CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;注意: 替换
username和password为您的实际用户名和密码。
步骤四:配置防火墙
确保防火墙允许来自远程主机的连接:
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 开发包(包括头文件和动态库文件),并处理最新版本MySQL初始自动生成的用户名和密码,可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南,包括从官方仓库和MySQL官方…...
Java 优化springboot jar 内存 年轻代和老年代的比例 减少垃圾清理耗时 如调整 -XX:NewRatio
-XX:NewRatio 是 Java Virtual Machine (JVM) 的一个选项,用于调整 年轻代(Young Generation)和 老年代(Old Generation)之间的内存比例。 1. 含义 XX:NewRatioN 用于指定 老年代 与 年轻代 的内存比例。 N 的含义&…...
嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏
eDP是嵌入式显示端口,具有高数据传输速率,高带宽,高分辨率、高刷新率、低电压、简化接口数量等特点。现大多数笔记本电脑都是用的这种接口。整个eDP是很复杂的,这里我们不讲底层原理,我们先掌握如何用泰山派来驱动各种…...
在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。
在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。以下是关于这两种方法的详细解释: 一、虚方法(Virtual Method) 定义:虚方法是指在运行时由实例的实际类型决定的方法。在Java中,所有的非私有、非静态、非final方法都是虚方法。当调用一个虚方法时,JVM会根据实…...
【windows】sonarqube起不来的问题解决
1. 现象与本质 因JDK的问题(比如版本太低或者太高,推荐JDK17)或者其他环境因素,导致sonarqube启动后自动关闭了。 从日志来看,根本看不出来什么,只有警告,没有ERROR,警告也不是本质问题&#…...
golang异常
panic如果不处理会导致应用进程挂掉 defer recover可以处理这种情况 一个recover只处理自己协程 产生panic的情况 空指针 数组越界 空map中添加键值对 错误,error接口,不严重 error.wrapof解决嵌套问题或者error.unwrap erroe.is方法,判断是…...
搭建MongoDB
title: 搭建MongoDB date: 2024-11-30 23:30:00 categories: - 服务器 tags: - MongoDB - 大数据搭建MongoDB 环境:Centos 7-2009 1. 创建MongoDB的国内yum源 # 下载Centos7对应最新版7.0.15的安装包 cat >> /etc/yum.repos.d/mongodb.repo << &quo…...
Android中坐标体系知识超详细讲解
说来说去都不如画图示意简单易懂啊!!!真是的! 来吧先上张图! (一)首先明确一下android 中的坐标系统: 屏幕的左上角是坐标系统原点(0,0) 原点向右延伸是X轴正…...
不需要服务器,使用netlify快速部署自己的网站
Netlify简介 1.1 Netlify的功能与特点 Netlify 是一个功能强大的静态网站托管平台,它不仅提供了简单的网站部署功能,还集成了许多现代化的开发工具和服务,帮助开发者更高效地构建、部署和管理网站。Netlify 的核心功能包括: 自动…...
Swin transformer 论文阅读记录 代码分析
该篇文章,是我解析 Swin transformer 论文原理(结合pytorch版本代码)所记,图片来源于源paper或其他相应博客。 代码也非原始代码,而是从代码里摘出来的片段,配上简单数据,以便理解。 当然&…...
信息安全概论
文章目录 预测题重要考点1.遇到什么威胁有什么漏洞怎么缓解分析题2.网络安全现状分析 2.网络安全亮点 时间信息安全概论期末简答题软件学院实验室服务器安全风险分析与PDRR策略 1.1 信息时代的特点1.2 信息安全威胁1.3信息安全趋势1.4 研究网络与信息安全的意义2.1安全风险分析…...
2024年12月16日Github流行趋势
项目名称:PDFMathTranslate 项目维护者:Byaidu reycn hellofinch Wybxc YadominJinta项目介绍:基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/Docker。项目star数…...
Go 1.24即将到来!
Go 1.24 尚未发布。以下是正在撰写中的发布说明,预计 Go 1.24 将于 2025 年 2 月发布。 语言改进 Go 1.24 现在全面支持 泛型类型别名:类型别名可以像定义类型一样被参数化。详情请参阅语言规范。目前,可通过设置 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 能根据 类名和属性的信息,匹配到对应的类// 注意:// 1 匹配的时候,case class的属性个数要对上// 2 属性名不需…...
WebRTC搭建与应用(一)-ICE服务搭建
WebRTC搭建与应用(一) 近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC、ICE信令协议等有了初步了解,在此记录一下,以防遗忘。 第一章 ICE服务搭建 文章目录 WebRTC搭建与应用(一)前言一、ICE是什么?二、什么…...
【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解
本文将深入介绍鲜花分类数据集的加载与处理方式,同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向,为读者提供从数据组织、预处理、加载到可视化展示的完整过程,并为后续模型训练打下基础。 前言 在计算机视觉的深…...
Kafka学习篇
Architecture 系统间解耦,异步通信,削峰填谷 Topic 消息主题,用于存储消息 Partition 分区,通过扩大分区,可以提高存储量 Broker 部署Kafka服务的设备 Leader kafka主分区 Follwer kafka从分区 高性能之道:…...
冬日养仓鼠小指南:温暖与陪伴同行
随着冬日的脚步悄然来临,家中可爱的小仓鼠也需要我们给予更多的关怀与呵护。仓鼠虽小,但它们的冬日养护却大有学问,关乎着这些小生命能否健康快乐地度过寒冷季节。 保暖是冬季养仓鼠的首要任务。我们可以为仓鼠的小窝增添一些保暖材料&#…...
【计算机视觉基础CV】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用
引言 在上一篇文章中,我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型,特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤,读…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...
spring boot使用HttpServletResponse实现sse后端流式输出消息
1.以前只是看过SSE的相关文章,没有具体实践,这次接入AI大模型使用到了流式输出,涉及到给前端流式返回,所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...
