Ubuntu上MySQL数据库详细安装指南

 更新时间:2026年07月29日 10:53:03   作者:项目工程打工马  
MySQL是一款开源免费的数据库软件,广泛应用于Web开发领域,尤其适合中小型网站使用,这篇文章主要介绍了Ubuntu上MySQL数据库详细安装指南的相关资料,需要的朋友可以参考下

Ubuntu24上MySQL安装指南

本文介绍在Ubuntu环境中通过APT包管理器安装mysql-server、MySQL开发包,处理最新版本MySQL自动生成的初始账号密码,包含Ubuntu官方仓库MySQL官方仓库两种安装方法,同时讲解密码修改、远程访问配置及常见问题排查。

方法一:使用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

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

  1. 启动MySQL服务
sudo systemctl start mysql
  1. 设置开机自启动
sudo systemctl enable mysql
  1. 检查服务运行状态
sudo systemctl status mysql

正常运行输出示例

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

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

最新版本MySQL会为root用户自动生成临时密码,需找到并修改:

  1. 查找临时密码:临时密码记录在日志文件中,执行命令提取:
sudo grep 'temporary password' /var/log/mysql/error.log

输出示例

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

记下输出中的临时密码。

  1. 运行安全性脚本:官方脚本可提升MySQL安全性并修改初始密码,执行:
sudo mysql_secure_installation

交互步骤(建议全部选择Y)

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  # 禁止root远程登录
Remove test database and access to it? (Y/n) Y  # 移除测试数据库
Reload privilege tables now? (Y/n) Y  # 重新加载权限表

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

若需手动修改密码,按以下步骤操作:

  1. 登录MySQL
sudo mysql -u root -p
  1. 执行密码修改命令(替换YourNewStrongPassword!为自定义强密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;  # 刷新权限使修改生效

#ALTER USER 'root'@'localhost' IDENTIFIED BY 'Cybstar@2026';
  1. 验证密码:退出后重新登录,确认新密码可用
exit
sudo mysql -u root -p  # 输入新密码登录

忘记root密码的重置方法

  1. 停止MySQL服务
sudo systemctl stop mysql
  1. 以安全模式启动MySQL(跳过权限验证)
sudo mysqld_safe --skip-grant-tables &
  1. 免密登录MySQL
sudo mysql -u root
  1. 重置密码并刷新权限(替换YourNewStrongPassword!为新密码)
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;
EXIT;
  1. 停止安全模式进程并重启MySQL
sudo killall mysqld
sudo systemctl start mysql
  1. 用新密码登录验证
sudo mysql -u root -p

步骤七:验证安装

  1. 登录MySQL后,执行版本查询命令,确认安装成功:
SELECT VERSION();

执行后会输出当前MySQL的版本信息。

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

若需通过网络访问MySQL,需开放3306端口(UFW防火墙):

  1. 开放端口(二选一)
# 方式1:直接允许MySQL服务
sudo ufw allow 'MySQL'
# 方式2:精准允许3306/TCP端口
sudo ufw allow 3306/tcp
  1. 重新加载防火墙规则
sudo ufw reload

注意:为提升安全性,建议仅允许受信任的IP地址访问3306端口。

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

若需安装MySQL最新版本,使用MySQL官方提供的APT仓库,步骤一至三为专属操作,后续步骤同方法一。

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

  1. 下载官方APT仓库配置包(建议前往MySQL APT Repository确认最新版本)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
  1. 安装配置包,安装中会弹出版本选择界面,选择所需MySQL版本(如8.0)后确认
sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb
  1. 更新系统包列表
sudo apt update

步骤二:安装 MySQL Server

sudo apt install -y mysql-server

步骤三:安装 MySQL 开发包

sudo apt install -y libmysqlclient-dev

步骤四至八

参考方法一步骤四到步骤八,完成服务启动、密码配置、安全性设置、安装验证和防火墙配置。

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

若需从远程主机访问MySQL服务器,需完成以下配置(注意:远程访问存在安全风险,建议仅对受信任IP开放):

步骤一:修改MySQL配置文件,允许监听外网

  1. 编辑配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  1. 找到bind-address行,将本地监听改为全网监听
# 原配置
bind-address = 127.0.0.1
# 修改后
bind-address = 0.0.0.0
  1. 保存并退出(Ctrl + O保存,Ctrl + X退出)

步骤二:重启MySQL服务使配置生效

sudo systemctl restart mysql
```### 步骤三:创建远程访问专用用户
**不建议直接使用root用户远程访问**,创建专用用户并授予权限(替换`username`和`password`为自定义账号密码):

1. 登录MySQL

```Bash
sudo mysql -u root -p
  1. 创建用户并授予所有权限
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

说明%表示允许该用户从任意IP访问,若需限制特定IP,将%替换为具体IP(如192.168.1.100)。

步骤四:配置防火墙开放3306端口

  1. 开放端口
sudo ufw allow 3306/tcp
  1. 限制特定IP访问(推荐,替换<your_ip_address>为允许的IP)
sudo ufw allow from <your_ip_address> to any port 3306
  1. 重新加载防火墙
sudo ufw reload

常见问题排查

1. 无法启动MySQL服务

  1. 查看错误日志定位问题
sudo journalctl -u mysql
  1. 检查配置文件是否存在语法错误;
  2. 确认3306端口未被其他服务占用。

2. 无法连接到MySQL服务器

  1. 检查MySQL服务是否正常运行
sudo systemctl status mysql
  1. 确认防火墙已开放3306端口;
  2. 验证MySQL账号密码正确,且用户有对应访问权限;
  3. 远程连接需确认bind-address已改为0.0.0.0,且远程用户权限配置正确。

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

  1. 确认开发包安装成功
dpkg -l | grep libmysqlclient-dev
  1. 检查头文件路径是否正确(默认路径:/usr/include/mysql/);
  2. 编译时手动指定头文件和库文件路径,示例:
# 编译时添加参数
-I/usr/include/mysql -L/usr/lib/mysql

4. 忘记root密码

参考方法一·步骤六中的「忘记root密码的重置方法」,通过安全模式重置密码。

总结

到此这篇关于Ubuntu上MySQL数据库的文章就介绍到这了,更多相关Ubuntu安装MySQL数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql大表全表update的的实现

    Mysql大表全表update的的实现

    有些时候在进行一些业务迭代时需要我们对Mysql表中数据进行全表update,本文主要介绍了Mysql大表update的的实现
    2024-08-08
  • mysql存储过程之case语句用法实例详解

    mysql存储过程之case语句用法实例详解

    这篇文章主要介绍了mysql存储过程之case语句用法,结合实例形式详细分析了mysql存储过程中case语句的相关功能、原理与使用技巧,需要的朋友可以参考下
    2019-12-12
  • 一篇文章掌握MySQL的索引查询优化技巧

    一篇文章掌握MySQL的索引查询优化技巧

    这篇文章主要给大家介绍了关于如何通过一篇文章掌握MySQL的索引查询优化技巧,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • MYSQL端口号3306被占用解决过程

    MYSQL端口号3306被占用解决过程

    3306端口是MySQL数据库的默认端口,当运行MySQL或其他应用程序时,如果发现3306端口已被占用,可能会导致服务启动失败或其他相关问题,这篇文章主要介绍了MYSQL端口号3306被占用解决的相关资料,需要的朋友可以参考下
    2026-02-02
  • win10 下安装 mysql 5.7.14 详细图文教程

    win10 下安装 mysql 5.7.14 详细图文教程

    本文通过文字和图片相结合的形式给大家介绍了win10 下安装 mysql 5.7.14的教程的,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • MySQL COUNT(*)性能原理详解

    MySQL COUNT(*)性能原理详解

    这篇文章主要介绍了MySQL COUNT(*)性能原理详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Mysql binlog的查看方法

    Mysql binlog的查看方法

    MySQL的二进制日志可以说是MySQL最重要的日志了,本文主要介绍了Mysql binlog的查看方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • MySQL与PHP的基础与应用专题之索引

    MySQL与PHP的基础与应用专题之索引

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,本系列将带你掌握php与mysql的基础应用,本篇从索引开始
    2022-02-02
  • mysql 正确清理binlog日志的两种方法

    mysql 正确清理binlog日志的两种方法

    这篇文章主要介绍了mysql 正确清理binlog日志的相关资料,需要的朋友可以参考下
    2017-07-07
  • SQL实战演练之网上商城数据库商品类别数据操作

    SQL实战演练之网上商城数据库商品类别数据操作

    一直认为,扎实的SQL功底是一名数据分析师的安身立命之本,甚至可以称得上是所有数据从业者的基本功。当然,这里的SQL绝不单单是写几条查询语句那么简单,接下来请跟着小编通过案例项目演练一遍商品类别的数据操作吧
    2021-10-10

最新评论