Ubuntu上安装MySQL 8并配置Navicat远程连接

1. 安装MySQL 8

bash 复制代码
sudo apt update
sudo apt install mysql-server -y

2. 启动MySQL服务

bash 复制代码
sudo systemctl start mysql
sudo systemctl enable mysql

3. 设置root密码

3.1 登录MySQL(默认无密码):
bash 复制代码
sudo mysql
3.2 修改root认证方式并设置密码:
sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
EXIT;
3.3 运行安全脚本(可选但推荐):
bash 复制代码
sudo mysql_secure_installation
  • 按提示操作:设置密码强度、删除匿名用户、禁止远程root登录等。

4. 创建远程访问用户

4.1 登录MySQL:
bash 复制代码
mysql -u root -p
4.2 创建用户并授权(替换用户名和密码):
sql 复制代码
CREATE USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%';
FLUSH PRIVILEGES;
EXIT;

5. 允许MySQL远程连接

5.1 修改配置文件:
bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  • 找到 bind-address = 127.0.0.1,改为:

    ini 复制代码
    bind-address = 0.0.0.0
  • 保存并退出(Ctrl+O → Enter → Ctrl+X)。


6. 开放防火墙端口

bash 复制代码
sudo ufw allow 3306/tcp
sudo ufw reload

7. 重启MySQL服务

bash 复制代码
sudo systemctl restart mysql

8. 验证远程连接

  • 在Navicat中使用以下信息连接:
    • 主机/IP: Ubuntu服务器的IP地址
    • 端口: 3306
    • 用户名/密码: 步骤4中创建的用户信息

常见问题解决

  1. 认证插件错误:

    • 确保用户使用mysql_native_password插件(步骤4.2已配置)。
  2. 连接被拒绝:

    • 检查防火墙规则:sudo ufw status
    • 确认MySQL监听所有IP:sudo netstat -tuln | grep 3306
  3. 密码策略问题:

    • 临时降低密码策略:

      sql 复制代码
      SET GLOBAL validate_password.policy = LOW;
相关推荐
这个DBA有点耶10 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风10 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Starry-sky(jing)13 小时前
Vidda ADB 开启:R Pro 65 找不到开发者选项的处理与连接验收
android·adb·远程控制·电视·vidda
杨凯凡17 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Decay__17 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
韩曙亮18 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录
瑞雪兆丰年兮18 小时前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web
FungLeo1 天前
成为全栈·基础补充·数据库迁移与事务:数据结构怎样安全演进
mysql·postgresql·sqlite·数据一致性·数据库事务·数据库迁移·成为全栈
aiks_yuan1 天前
MySQL GROUP BY 很慢怎么优化:加了索引反而从 1 秒变 7 秒,Using temporary 该不该消(MySQL 8.2 实测 400 万行)
mysql
数据库小学妹1 天前
MySQL大字段治理:行溢出机制、覆盖索引与拆表
数据库·mysql·性能优化