从零开始:Ubuntu 20.04 系统安装 MySQL 8、服务器配置 MySQL 主从复制、本地 Navicat 远程连接服务器数据库
本文将介绍如何在 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