Ubuntu 安装 MySQL 数据库超详细教程
以下是 Ubuntu 系统下 MySQL 数据库的完整安装、配置、验证流程,包含权限设置、远程访问配置(适配 VS2019 远程开发),步骤清晰且兼容主流 LTS 版本。
一、安装前准备
- 更新软件源:确保 Ubuntu 软件包索引最新,避免安装失败:
运行
sudo apt update - 卸载旧版本(可选):若之前安装过 MySQL/MariaDB,先卸载清理(避免冲突):
运行
# 停止服务 sudo systemctl stop mysql mariadb # 卸载软件 sudo apt remove --purge mysql-server mysql-client mysql-common mariadb-server mariadb-client # 清理残留文件 sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql # 清理依赖 sudo apt autoremove && sudo apt autoclean
二、安装 MySQL 服务器
Ubuntu 官方源默认提供 MySQL 最新稳定版(Ubuntu 22.04 对应 MySQL 8.0,20.04 对应 MySQL 8.0,18.04 对应 MySQL 5.7),直接通过 apt 安装:
运行
# 安装 MySQL 服务器(自动包含客户端)
sudo apt install -y mysql-server
验证安装是否成功
- 查看 MySQL 服务状态(显示
active (running)即为正常):运行
sudo systemctl status mysql - 查看 MySQL 版本:
运行
输出示例(Ubuntu 22.04):mysql --versionmysql Ver 8.0.36-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
三、初始化配置(关键!)
步骤 1:设置 root 密码(MySQL 8.0 默认无密码,需手动配置)
-
登录 MySQL(Ubuntu 安装后默认 root 无密码,直接登录):
运行
sudo mysql -u root -p提示输入密码时,直接按回车(默认无密码),即可进入 MySQL 命令行(提示符为
mysql>)。 -
设置 root 密码(替换
your_password为自定义强密码,如Root@1234):sql
-- MySQL 8.0 版本(推荐,使用 caching_sha2_password 加密) ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your_password'; -- 若后续连接报错(如旧客户端不支持 caching_sha2_password),可改用 mysql_native_password: -- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; -
刷新权限,使配置生效:
sql
FLUSH PRIVILEGES; -
退出 MySQL 命令行:
sql
exit;
步骤 2:验证 root 登录(用新密码)
运行
mysql -u root -p
输入设置的密码 your_password,能成功进入命令行即配置生效。
步骤 3:安全加固(可选但推荐)
执行 MySQL 官方安全脚本,优化默认配置(如禁用匿名用户、禁止 root 远程登录、删除测试数据库):
运行
sudo mysql_secure_installation
按提示逐步操作:
- 输入 root 密码(刚设置的
your_password); - 是否启用密码强度检测(推荐
Y,按需求选择强度); - 是否修改 root 密码(已设置则选
N); - 是否删除匿名用户(选
Y); - 是否禁止 root 远程登录(默认
Y,后续需远程访问可再修改); - 是否删除 test 数据库(选
Y); - 是否刷新权限(选
Y)。
四、配置远程访问(适配 VS2019 远程开发)
默认情况下,MySQL 仅允许本地(localhost)访问,若需在 Windows 端(VS2019)或其他设备远程连接 Ubuntu 的 MySQL,需手动配置:
步骤 1:修改 MySQL 绑定地址
- 编辑 MySQL 配置文件(Ubuntu 20.04/22.04 路径为
/etc/mysql/mysql.conf.d/mysqld.cnf,18.04 同路径):运行
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf - 找到
bind-address配置项,修改为0.0.0.0(允许所有 IP 访问):ini
# 原配置:bind-address = 127.0.0.1(仅本地访问) bind-address = 0.0.0.0 - 保存文件并关闭编辑器。
步骤 2:授权远程登录用户
- 登录 MySQL(用 root 账号):
运行
mysql -u root -p - 执行授权命令(允许 root 用户从任意 IP 登录,或指定 Windows 端 IP):
sql
-- 方案 1:允许 root 从任意 IP 登录(方便开发,不推荐生产环境) CREATE USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; -- 方案 2:仅允许 Windows 端 IP 登录(更安全,替换 192.168.159.1 为你的 Windows VMnet8 IP) -- CREATE USER 'root'@'192.168.159.1' IDENTIFIED WITH caching_sha2_password BY 'your_password'; -- GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.159.1' WITH GRANT OPTION; - 刷新权限:
sql
FLUSH PRIVILEGES; - 退出 MySQL:
sql
exit;
步骤 3:重启 MySQL 服务,使配置生效
运行
sudo systemctl restart mysql
步骤 4:开放 Ubuntu 防火墙 3306 端口(MySQL 默认端口)
若 Ubuntu 开启了防火墙(ufw),需放行 3306 端口,否则远程无法连接:
运行
# 开放 3306 端口(允许 TCP 访问)
sudo ufw allow 3306/tcp
# 查看防火墙状态(确认 3306 已开放)
sudo ufw status
输出示例(显示 3306/tcp ALLOW Anywhere 即为成功)。
五、验证远程连接(Windows 端测试)
方法 1:用 MySQL 客户端测试(如 Navicat、SQLyog)
- 打开客户端,新建连接:
- 主机:Ubuntu 的 NAT IP(如
192.168.159.128); - 端口:
3306; - 用户名:
root; - 密码:之前设置的
your_password;
- 主机:Ubuntu 的 NAT IP(如
- 点击连接,能成功连接即远程配置生效。
方法 2:用 VS2019 测试(远程开发场景)
- 在 VS2019 中安装 MySQL 连接插件(如「MySQL for Visual Studio」);
- 新建「数据连接」:
- 数据源:
MySQL Database; - 服务器名:Ubuntu 的 NAT IP;
- 用户名 / 密码:
root/your_password;
- 数据源:
- 测试连接成功后,即可在 VS2019 中操作 Ubuntu 的 MySQL 数据库。
六、MySQL 常用命令(必备)
服务管理
运行
# 启动 MySQL
sudo systemctl start mysql
# 停止 MySQL
sudo systemctl stop mysql
# 重启 MySQL
sudo systemctl restart mysql
# 设置开机自启(默认已开启)
sudo systemctl enable mysql
数据库操作(MySQL 命令行)
sql
-- 查看所有数据库
show databases;
-- 创建数据库(如 test_db)
create database test_db character set utf8mb4;
-- 使用数据库
use test_db;
-- 查看当前数据库的表
show tables;
-- 创建表示例
create table user (
id int primary key auto_increment,
name varchar(50) not null,
age int
);
-- 插入数据
insert into user (name, age) values ('张三', 25), ('李四', 30);
-- 查询数据
select * from user;
七、常见问题排查
问题 1:远程连接提示「Access denied for user 'root'@'xxx'」
- 原因:授权用户时 IP 限制、密码错误,或加密方式不兼容;
- 解决:
- 重新执行授权命令(确保
@'%'或指定正确的 Windows IP); - 若用旧客户端(如 MySQL 5.7 客户端),将加密方式改为
mysql_native_password:sql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES;
- 重新执行授权命令(确保
问题 2:连接提示「Can't connect to MySQL server on 'xxx' (10060)」
- 原因:Ubuntu 防火墙未开放 3306 端口,或
bind-address未改为0.0.0.0; - 解决:
- 重新执行
sudo ufw allow 3306/tcp; - 检查
mysqld.cnf中bind-address是否为0.0.0.0,重启 MySQL 服务。
- 重新执行
问题 3:登录提示「ERROR 1045 (28000): Access denied for user 'root'@'localhost'」
- 原因:密码错误,或 root 仅授权远程登录(未授权本地登录);
- 解决:
- 用
sudo mysql -u root -p登录(Ubuntu 本地可免密登录 root); - 授权本地登录:
sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your_password'; FLUSH PRIVILEGES;
- 用
八、总结
Ubuntu 安装 MySQL 的核心流程:更新源 → 安装 mysql-server → 初始化 root 密码 → 配置远程访问 → 验证连接。关键注意点:
- MySQL 8.0 默认无密码,需手动设置 root 密码;
- 远程访问需修改
bind-address并授权用户,同时开放 3306 端口; - 加密方式优先用
caching_sha2_password,旧客户端兼容问题可切换为mysql_native_password。
更多推荐

所有评论(0)