在 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的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型,特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤,读…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...
