CentOS7下的linux的MySQL5.7主从数据库的配置

一、 分别在主机(192.168.192.111) 、从机(192.168.192.110)上安装mysql
1.下载mysql源安装包:

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

2.安装mysql源:

yum install mysql57-community-release-el7-8.noarch.rpm

3.检查mysql源是否安装成功:

yum repolist enabled | grep "mysql.*-community.*"

这里写图片描述
此图表示安装成功
可以修改vim /etc/yum.repos.d/mysql-community.repo源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0改成enabled=1即可。改完之后的效果如下所示:
这里写图片描述

4.安装MySQL:

yum install mysql-community-server

5.启动mysql服务:

systemctl start mysqld

查看MySQL的启动状态:

systemctl status mysqld

这里写图片描述

6.开机启动:

systemctl enable mysqld
systemctl daemon-reload

7.修改root本地登录密码
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:

grep 'temporary password' /var/log/mysqld.log

这里写图片描述
本地root用户的密码就为上面的红色框内的字符
登陆:

mysql -uroot -p

这里写图片描述
修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_Pass1';

或者

set password for 'root'@'localhost'=password(' Root_Pass1');

注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图所示:
这里写图片描述
通过msyql环境变量可以查看密码策略的相关信息:

show variables like '%password%';

这里写图片描述
validate_password_policy:密码策略,默认为MEDIUM策略
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个
上述参数是默认策略MEDIUM的密码检查规则。
共有以下几种密码策略:
策略 检查规则
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
MySQL官网密码策略详细说明:http://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html#sysvar_validate_password_policy
修改密码策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件

validate_password_policy=0

如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:

validate_password = off

重新启动mysql服务使配置生效:

systemctl restart mysqld

显示数据库:

show databases;

这里写图片描述

8.配置默认编码为utf8:
修改/etc/my.cnf配置文件:

vim /etc/my.cnf

在[mysqld]下添加编码配置,如下所示:

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

重新启动mysql服务,查看数据库默认编码:

systemctl restart mysqld
show variables like '%character%';

这里写图片描述
默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log//var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid

9.远程连接设置
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户。
把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root_Pass1' WITH GRANT OPTION;

打开3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重启防火墙:

firewall-cmd --reload

查看已开放的端口:

firewall-cmd --list-ports

这里写图片描述
centos7版本对防火墙进行 加强,不再使用原来的iptables,启用firewall

1.查看已开放的端口(默认不开放任何端口)
firewall-cmd --list-ports
2.开启80端口
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
3.重启防火墙
firewall-cmd --reload
4.停止防火墙
systemctl stop firewalld.service
5.禁止防火墙开机启动
systemctl disable firewalld.service
6.删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

centos7以下版本

1.开放80228080 端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
2.保存
/etc/rc.d/init.d/iptables save
3.查看打开的端口
/etc/init.d/iptables status
4.关闭防火墙 
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

此时就可以远程连接了
如果是新用户而不是root,则要先新建用户:

create user 'username'@'%' identified by 'password';

二、 主从配置:
1.确保主数据库与从数据库里的数据一样
主数据库里的a的数据库里有b,c,d表,那从数据库里的就应该有一个模子刻出来的a的数据库和b,c,d表,这里在两台MySQL上都创建了个名为“test”的数据库来测试,如图:
这里写图片描述

2.在主数据库里创建一个同步账号
每个从数据库会使用一个MySQL账号来连接主数据库,所以我们要在主数据库里创建一个账号,并且该账号要授予 REPLICATION SLAVE 权限,你可以为每个从数据库分别创建账号,当然也可以用同一个!你可以用原来的账号不一定要新创账号,但你应该注意,这个账号和密码会被明文存放在master.info文件中,因此建议单独创一个只拥有相关权限的账号,以减少对其它账号的危害!创建新账号使用“CREATE USER”,给账号授权使用“GRANT”命令,如果你仅仅为了主从复制创建账号,只需要授予REPLICATION SLAVE权限。
创建一个账号(repl,repl_Pass1):

create user 'repl'@'%' identified by 'repl_Pass1';

授予REPLICATION SLAVE权限:

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

3.配置主数据库
要主数据库,你必须要启用二进制日志(binary logging),并且创建一个唯一的Server ID,这步骤可能要重启MySQL。
主服务器发送变更记录到从服务器依赖的是二进制日志,如果没启用二进制日志,复制操作不能实现(主库复制到从库)。
复制组中的每台服务器都要配置唯一的Server ID,取值范围是1到(232)−1,你自己决定取值。
配置二进制日志和Server ID,你需要关闭MySQL和编辑my.cnf或者my.ini文件,在 [mysqld] 节点下添加配置。
编辑my.cnf:

vi /etc/my.cnf

在[mysqld]中添加:

server-id = 1
log_bin = master-bin
log_bin_index = master-bin.index
binlog_do_db = test
binlog_ignore_db = mysql

备注:server-id 服务器唯一标识,log_bin 启动MySQL二进制日志,binlog_do_db 指定记录二进制日志的数据库,binlog_ignore_db 指定不记录二进制日志的数据库。
重启mysql:

systemctl restart mysqld

登录MySQL状态下,查看主服务器状态:

show master status;

这里写图片描述
注意:master-bin.000002和154这两个值要记录下来

4.配置从数据库
编辑my.cnf:

vi /etc/my.cnf

在[mysqld]下添加:

server-id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index

重启mysql:

systemctl restart mysqld

在slave服务器中登陆mysql,连接master主服务器数据库

change master to master_host='192.168.192.111', master_port=3306, master_user='repl', master_password='repl_Pass1', master_log_file='master-bin.000002', master_log_pos=154;

启动slave:

start slave;

查看slave信息:
这里写图片描述

5.测试
在主库(192.168.192.111)中新建表STUDENT并插入数据,从库(192.168.192.110)就同步了,如图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/m0_37459945/article/details/78577105
今日推荐