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.开放80,22,8080 端口
/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)就同步了,如图:
上一篇: centos7安装mysql5.7
推荐阅读
-
CentOS7下的linux的MySQL5.7主从数据库的配置
-
centos7下mysql5.7的安装与配置
-
linux下启动dbca或netmgr类的图形界面报错 博客分类: 数据库
-
liunx下的ssh免密匙互信登陆配置 博客分类: linux大数据 ssh
-
Linux下搭建MySQL的主从复制(一)
-
WIN10操作系统下如何修改MySQL5.7数据库的ROOT用户密码(亲测有效)
-
【转载】Linus下的/etc/hosts文件详解 博客分类: Linux/Win 网络配置host文件
-
Linux下subversion的安装与配置 博客分类: Linux linuxsubversion配置安装新增版本库新增用户
-
linux下mysql的root密码忘记解决方 博客分类: 数据库
-
linux下mysql的root密码忘记解决方 博客分类: 数据库