windows上面配置mysql8主从服务
mysql8下载
mysql下载地址
- dev.mysql.com/downloads/m…
- 下载zip安装包
mysql8安装
下载内容并且解压
创建文件价和文件
创建data目录
创建my.ini文件
[mysqld]
server-id = 1
# 这里设置3306端口
port=3306
# 设置mysql的安装目录
basedir=E:\mysql\mysql83306\mysql-8.0.30-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\mysql\mysql83306\mysql-8.0.30-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
gtid_mode=off
enforce_gtid_consistency=off
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
安装步骤
- 打开cmd窗口,管理员的权限打开
- 去到mysql压缩包解压的bin目录,输入cmd
- 执行mysqld install mysql83306命令安装成功
- 执行mysqld --initialize --console初始化命令,记录下初始化密码
- 启动net start mysql83306
- 登录输入mysql -u root -p
- 输入密码登录
- 修改密码ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '修改密码';
- 创建新用户CREATE USER '新用户'@'%' IDENTIFIED BY '新密码';
- 授予权限GRANT ALL PRIVILEGES ON . TO '新用户'@'%' WITH GRANT OPTION;
- 刷新权限FLUSH PRIVILEGES;
从库安装
- 从库和上面的主库的安装步骤一致,只需要修改端口号即可,例如修改为3307
mysql8主从配置
主库操作
- 配置server-id = 1属性,在my.ini文件中
- 创建同步用户CREATE USER 'jobhu123'@'%' IDENTIFIED BY 'jobhu123';
- 授权GRANT REPLICATION SLAVE ON . TO 'jobhu123'@'%';
- 刷新权限FLUSH PRIVILEGES;
从库操作
- 配置server-id = 2属性,在my.ini文件中
- 查询主库的MASTER_LOG_FILE和MASTER_LOG_POS属性
- 从库reset slave/stop slave ,如果前面启动过,先关闭
- 执行命令change master to master_user='jobhu123', master_password='jobhu123', master_host='127.0.0.1', master_port=3306, MASTER_LOG_FILE='binlog.000002', MASTER_LOG_POS=197;
- start slave;
- show slave status\G;
遇到的问题
- 认证问题mysql8使用的是caching_sha2_password,这里修改为了caching_sha2_password方式,在my.ini配置default_authentication_plugin=mysql_native_password,还有其他解决办法,请百度
- 从数据库库启动不了的问题 change master to master_host='localhost', master_port=3306, master_user='jobhu123', master_password='jobhu123',master_auto_position = 1,结果不能启动,修改master_auto_position =0,修改命令为change master to master_auto_position=0;