從零開始: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