当前位置: 首页 > ds >正文

从零开始 保姆级教程 Ubuntu20.04系统安装MySQL8、服务器配置MySQL主从复制、本地navicat远程连接服务器数据库

从零开始:Ubuntu 20.04 系统安装 MySQL 8、服务器配置 MySQL 主从复制、本地 Navicat 远程连接服务器数据库

    • 初始化服务器
      • 1. 更新本地软件包列表
      • 2. 安装 MySQL 服务器
      • 3. 查看 MySQL 安装版本
      • 4. 登录 MySQL 管理终端
      • 5. 设置 root 用户密码(推荐使用 native password 认证(可选,根据自己情况来定))
      • 6. 修改 root 用户访问权限(允许远程登录)(一方面也是为了本地连接服务器)
      • 7. 修改 MySQL 配置文件,允许远程访问(一方面也是为了本地连接服务器)
      • 8. 重启 MySQL 服务(让修改的配置生效)
      • 9. 防火墙相关配置
  • 特大注意(一定要在你租的服务器的安全组里增加一条端口3306的访问规则,不然连接就会出现下面错误)
  • 配置主服务器mysql
  • 配置从服务器mysql
  • navicate远程连接服务器mysql
  • 如果你配置过程中出现什么问题,欢迎评论区讨论。

本文将介绍如何在 Ubuntu 20.04 系统中安装 MySQL 8,并配置 MySQL 主从复制。适用于自建数据库服务、开发环境数据同步测试等场景,同时支持通过 Navicat 等工具远程连接服务器数据库。


初始化服务器

1. 更新本地软件包列表

sudo apt update

2. 安装 MySQL 服务器

sudo apt install mysql-server

3. 查看 MySQL 安装版本

mysql --version

输出示例:

mysql  Ver 8.0.41-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

4. 登录 MySQL 管理终端

sudo mysql

5. 设置 root 用户密码(推荐使用 native password 认证(可选,根据自己情况来定))

这里修改了认证规则为:mysql_native_password
mysql8默认是加密方式是:caching_sha2_password (更安全)
只要你的远程连接方式支持chching_sha2_password加密规则,可以不用修改为native password加密规则。

alter user 'root'@'localhost' identified with mysql_native_password by '123456';

6. 修改 root 用户访问权限(允许远程登录)(一方面也是为了本地连接服务器)

---选择数据库
use mysql;---查询root的访问权限
select user, host from user where user='root';
---更新root的访问权限, '%'表示全部IP都可以访问
---'localhost' 表示只有本地可以访问
update user set host = '%' where user = 'root';---刷新用户权限
flush privileges;

7. 修改 MySQL 配置文件,允许远程访问(一方面也是为了本地连接服务器)

自mysql8版本中,mysql的配置文件被放在了 /etc/mysql/mysql.conf.d/mysqld.conf 文件中

sudo vim /etc/mysql/mysql.conf.d/mysqld.conf

找到bind-address, 修改为:

bind-address = 0.0.0.0

8. 重启 MySQL 服务(让修改的配置生效)

sudo systemctl restart mysql
或
sudo service mysql restart

9. 防火墙相关配置

建议先关闭防火墙,如果有需要可以自行搜索设置防火墙开放端口。
注意:打开防火墙记得一定要先开放个端口,不然你ssh就登不进去了,还得去服务器平台远程连接开启。

查看防火墙状态:sudo ufw status
关闭防火墙:sudo ufw disable
开启防火墙:sudo ufw enable

检查端口监听情况

sudo ss -ltn

特大注意(一定要在你租的服务器的安全组里增加一条端口3306的访问规则,不然连接就会出现下面错误)

错误

配置主服务器mysql

# 新增用户赋权,并设置远程访问,当然你也可以直接使用root
create user 'repl'@'%' identified with mysql_native_password by '123456';# 授权
grant all privileges on *.* to 'repl'@'%' with grant option;# 刷新权限
flush privileges;# 查看主服务器状态
show master
---下面是输出例子:
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000009 |      157 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
---这里file是日志文件,从这个日志文件的第position位置开始备份
---后面要写到 从数据库 中配置# 修改主服务器 MySQL 配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.conf# 添加/修改以下配置
[mysqld]
server-id = 1                   # 主服务器唯一ID(必须与从服务器不同)# 重启MySQL服务
sudo systemctl restart mysql

配置从服务器mysql

# 修改从服务器 MySQL 配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.conf# 添加/修改以下配置
[mysqld]
server-id = 2                   # 从服务器唯一ID(必须与主服务器不同)# 重启MySQL服务
sudo systemctl restart mysql# 进入mysql
sudo mysql -u root -p123456# 配置 从服务器所要备份的主服务器信息(在mysql命令行中)
change master to
master_host = '123.123.123.123', # 填写你的主服务器ip
master_user = 'repl', # 自己创建的用户(授权的)或者root(授权的)
master_password = '123456', # 主服务器上面用户mysql连接密码
master_log_file = 'binlog.000009', # 主服务器的状态中的 file, 主服务器show master status输出的
master_log_pos = 157; # 主服务器的状态中的position# 开启从服务器
start slave;# 查看状态
show slave status\G; # \G表示格式化输出# 如果输出中下面这两个属性值是Yes,即成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

navicate远程连接服务器mysql

在这里插入图片描述

如果你配置过程中出现什么问题,欢迎评论区讨论。

http://www.xdnf.cn/news/19.html

相关文章:

  • HTML:表格数据展示区
  • 《理解 Java 泛型中的通配符:extends 与 super 的使用场景》
  • 趣味编程之分布式系统:负载均衡的“雨露均沾“艺术
  • Python数据可视化
  • 1.Axum 与 Tokio:异步编程的完美结合
  • ubuntu docker 创建镜像 报错 dial tcp xxxx read udp xxxx i/o timeout 还有 Forbidden
  • gRPC 介绍及在嵌入式 Linux 下的成功编译及使用详解
  • 网络规划设计之广域网结构设计,6种架构模式对比
  • 观察者模式:从博客订阅到消息队列的解耦实践
  • 01、单片机简介
  • TAS(Thin-Agent服务)的先决条件与安装指南
  • HttpSessionListener 的用法笔记250417
  • 解读《人工智能指数报告 2025》:洞察 AI 发展新态势
  • 闭坑-- `a-auto-complete` 组件中的 `options` 数据存在重复
  • nginx-基础知识
  • HCIP(OSPF )(2)
  • 内存编码手册:整数与浮点数的二进制世界
  • 音视频相关协议和技术内容