从零开始: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