Ubuntu 上 MySQL 详细安装指南

Ubuntu24上MySQL安装指南

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

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

步骤一:更新系统包列表

确保系统包列表为最新状态:

Bash 复制代码
sudo apt update
sudo apt upgrade -y

步骤二:安装 MySQL Server

通过APT安装MySQL服务器及相关依赖:

Bash 复制代码
sudo apt install -y mysql-server

步骤三:安装 MySQL 开发包

安装包含头文件和动态库的开发包,用于MySQL相关开发:

Bash 复制代码
sudo apt install -y libmysqlclient-dev

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

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

正常运行输出示例

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

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

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

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

输出示例

Plain 复制代码
[Date Time] [Note] A temporary password is generated for root@localhost: xXxXxXxXxXx

记下输出中的临时密码。

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

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

Plain 复制代码
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
Bash 复制代码
sudo mysql -u root -p
  1. 执行密码修改命令(替换YourNewStrongPassword!为自定义强密码)
SQL 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;  # 刷新权限使修改生效

#ALTER USER 'root'@'localhost' IDENTIFIED BY 'Cybstar@2026';
  1. 验证密码:退出后重新登录,确认新密码可用
Bash 复制代码
exit
sudo mysql -u root -p  # 输入新密码登录
忘记root密码的重置方法
  1. 停止MySQL服务
Bash 复制代码
sudo systemctl stop mysql
  1. 以安全模式启动MySQL(跳过权限验证)
Bash 复制代码
sudo mysqld_safe --skip-grant-tables &
  1. 免密登录MySQL
Bash 复制代码
sudo mysql -u root
  1. 重置密码并刷新权限(替换YourNewStrongPassword!为新密码)
SQL 复制代码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;
EXIT;
  1. 停止安全模式进程并重启MySQL
Bash 复制代码
sudo killall mysqld
sudo systemctl start mysql
  1. 用新密码登录验证
Bash 复制代码
sudo mysql -u root -p

步骤七:验证安装

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

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

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

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

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

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

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

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

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

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

步骤二:安装 MySQL Server

Bash 复制代码
sudo apt install -y mysql-server

步骤三:安装 MySQL 开发包

Bash 复制代码
sudo apt install -y libmysqlclient-dev

步骤四至八

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

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

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

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

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

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

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

1. 登录MySQL

```Bash
sudo mysql -u root -p
  1. 创建用户并授予所有权限
SQL 复制代码
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. 开放端口
Bash 复制代码
sudo ufw allow 3306/tcp
  1. 限制特定IP访问(推荐,替换<your_ip_address>为允许的IP)
Bash 复制代码
sudo ufw allow from <your_ip_address> to any port 3306
  1. 重新加载防火墙
Bash 复制代码
sudo ufw reload

常见问题排查

1. 无法启动MySQL服务

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

2. 无法连接到MySQL服务器

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

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

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

4. 忘记root密码

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

安装好后这里提供了数据库语法练习网站:MySQL学习链接

相关推荐
刘延林.9 小时前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
用户342688776219612 小时前
Agent + Ollama 部署踩坑记录
ubuntu
宁波阿成12 小时前
在ubuntu22.04源码级安装sub2api
linux·运维·ubuntu·ai·api·token·中转站
程序猿online13 小时前
本地mysql密码重置
数据库·mysql
为美好的生活献上中指14 小时前
本地虚拟机部署redis集群
前端·redis·ubuntu·bootstrap·html·redis集群
Bert.Cai14 小时前
MySQL CEIL()函数详解
数据库·mysql
一叶龙洲14 小时前
Ubuntu开机无法用向日葵远程控制
linux·运维·ubuntu
Bert.Cai15 小时前
MySQL FLOOR()函数详解
数据库·mysql
小碗羊肉15 小时前
【MySQL | 第七篇】索引
数据库·mysql
hanyi_qwe15 小时前
Mysql 与 Nginx 双机高可用
数据库·mysql·nginx