以下是 Ubuntu 系统下 MySQL 数据库的完整安装、配置、验证流程,包含权限设置、远程访问配置(适配 VS2019 远程开发),步骤清晰且兼容主流 LTS 版本。

一、安装前准备

  1. 更新软件源:确保 Ubuntu 软件包索引最新,避免安装失败:

    运行

    sudo apt update
    
  2. 卸载旧版本(可选):若之前安装过 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

验证安装是否成功

  1. 查看 MySQL 服务状态(显示 active (running) 即为正常):

    运行

    sudo systemctl status mysql
    
  2. 查看 MySQL 版本:

    运行

    mysql --version
    
    输出示例(Ubuntu 22.04):mysql Ver 8.0.36-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

三、初始化配置(关键!)

步骤 1:设置 root 密码(MySQL 8.0 默认无密码,需手动配置)

  1. 登录 MySQL(Ubuntu 安装后默认 root 无密码,直接登录):

    运行

    sudo mysql -u root -p
    

    提示输入密码时,直接按回车(默认无密码),即可进入 MySQL 命令行(提示符为 mysql>)。

  2. 设置 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';
    
  3. 刷新权限,使配置生效:

    sql

    FLUSH PRIVILEGES;
    
  4. 退出 MySQL 命令行:

    sql

    exit;
    

步骤 2:验证 root 登录(用新密码)

运行

mysql -u root -p

输入设置的密码 your_password,能成功进入命令行即配置生效。

步骤 3:安全加固(可选但推荐)

执行 MySQL 官方安全脚本,优化默认配置(如禁用匿名用户、禁止 root 远程登录、删除测试数据库):

运行

sudo mysql_secure_installation

按提示逐步操作:

  1. 输入 root 密码(刚设置的 your_password);
  2. 是否启用密码强度检测(推荐 Y,按需求选择强度);
  3. 是否修改 root 密码(已设置则选 N);
  4. 是否删除匿名用户(选 Y);
  5. 是否禁止 root 远程登录(默认 Y,后续需远程访问可再修改);
  6. 是否删除 test 数据库(选 Y);
  7. 是否刷新权限(选 Y)。

四、配置远程访问(适配 VS2019 远程开发)

默认情况下,MySQL 仅允许本地(localhost)访问,若需在 Windows 端(VS2019)或其他设备远程连接 Ubuntu 的 MySQL,需手动配置:

步骤 1:修改 MySQL 绑定地址

  1. 编辑 MySQL 配置文件(Ubuntu 20.04/22.04 路径为 /etc/mysql/mysql.conf.d/mysqld.cnf,18.04 同路径):

    运行

    sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
    
  2. 找到 bind-address 配置项,修改为 0.0.0.0(允许所有 IP 访问):

    ini

    # 原配置:bind-address = 127.0.0.1(仅本地访问)
    bind-address = 0.0.0.0
    
  3. 保存文件并关闭编辑器。

步骤 2:授权远程登录用户

  1. 登录 MySQL(用 root 账号):

    运行

    mysql -u root -p
    
  2. 执行授权命令(允许 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;
    
  3. 刷新权限:

    sql

    FLUSH PRIVILEGES;
    
  4. 退出 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)

  1. 打开客户端,新建连接:
    • 主机:Ubuntu 的 NAT IP(如 192.168.159.128);
    • 端口:3306
    • 用户名:root
    • 密码:之前设置的 your_password
  2. 点击连接,能成功连接即远程配置生效。

方法 2:用 VS2019 测试(远程开发场景)

  1. 在 VS2019 中安装 MySQL 连接插件(如「MySQL for Visual Studio」);
  2. 新建「数据连接」:
    • 数据源:MySQL Database
    • 服务器名:Ubuntu 的 NAT IP;
    • 用户名 / 密码:root/your_password
  3. 测试连接成功后,即可在 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 限制、密码错误,或加密方式不兼容;
  • 解决:
    1. 重新执行授权命令(确保 @'%' 或指定正确的 Windows IP);
    2. 若用旧客户端(如 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
  • 解决:
    1. 重新执行 sudo ufw allow 3306/tcp
    2. 检查 mysqld.cnf 中 bind-address 是否为 0.0.0.0,重启 MySQL 服务。

问题 3:登录提示「ERROR 1045 (28000): Access denied for user 'root'@'localhost'」

  • 原因:密码错误,或 root 仅授权远程登录(未授权本地登录);
  • 解决:
    1. 用 sudo mysql -u root -p 登录(Ubuntu 本地可免密登录 root);
    2. 授权本地登录:

      sql

      ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'your_password';
      FLUSH PRIVILEGES;
      

八、总结

Ubuntu 安装 MySQL 的核心流程:更新源 → 安装 mysql-server → 初始化 root 密码 → 配置远程访问 → 验证连接。关键注意点:

  1. MySQL 8.0 默认无密码,需手动设置 root 密码;
  2. 远程访问需修改 bind-address 并授权用户,同时开放 3306 端口;
  3. 加密方式优先用 caching_sha2_password,旧客户端兼容问题可切换为 mysql_native_password
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐