一、Centos7安装MySQL8.0.20(文末含参考博客)
开发环境:centos7
1、下载https://downloads.mysql.com/archives/community/ ,下载后上传到服务器,其中 Bundle 是一个包含了各种MySQL 其他组件的包,免去了一个个单独下载的繁琐步骤。
2、卸载mariadb,安装perl
yum remove mariadb-libs
yum install perl
3、解压安装包
tar -xvf mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar
4、安装:为了方便,直接用通配符;注意各个安装包之间有依赖,依照顺序按照即可。
rpm -ivh mysql-community-common-*
rpm -ivh mysql-community-libs-*
rpm -ivh mysql-community-libs-compat-*
rpm -ivh mysql-community-embedded-compat-*
rpm -ivh mysql-community-client-*
rpm -ivh mysql-community-server-*
5、创建数据文件夹,并进行授权
mkdir -p /data/mysql
mkdir -p /data/mysql/logs
chown -R mysql:mysql /data/mysql
6、关闭selinux
setenforce 0
重启生效:vi /etc/sysconfig/selinux
#将SELINUX=enforcing的值改为disabled
7、修改配置文件
vim /etc/my.cnf
参照前边创建的数据文件夹目录修改一下配置
8、启动service mysqld start
9、查看临时密码
grep "A temporary password" /var/log/mysqld.log
10、登录
|
查看已有数据库,mysql报错,提示需要修改临时密码
11、修改临时密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
报错提示密码不符合权限策略,查看权限策略:
SHOW VARIABLES LIKE 'validate_password%';
还是让先修改密码,那就先设置一个复杂的密码,之后再改回来。
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456qQ.';
再查看权限策略
关于 mysql 密码策略相关参数;
1)validate_password_length 固定密码的总长度;
2)validate_password_dictionary_file 指定密码验证的文件路径;
3)validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;
修改权限设置:
set global validate_password.policy=LOW;
set global validate_password.length=4;
set global validate_password.check_user_name = off;
set global validate_password.mixed_case_count =0;
set global validate_password.number_count =0;
set global validate_password.special_char_count = 0;
再将密码修改回来
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
12、创建用户
create USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
查看用户
select host, user, authentication_string, plugin from user;
注意plugin要是再创建用户的时候要制定为mysql_native_password,不然mysql桌面连接程序会报错,如果没指定可以使用alter命令修改
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
13、连接mysql
二、主从复制
虚拟机1:192.168.20.100
虚拟机2:192.168.20.110
已按照上一步在两台主机上安装好mysql8.0.20
主从复制需要在配置文件my.cnf内添加server-id=xx,xx的数值可以自己定义,但是不能相同。
数据库同步需要通过binlog文件,主库会将数据库数据变动记录到binlog,从库根据主库记录同步数据。Mysql8的binlog设置默认是开启的,可以在配置文件用log-bin自定义路径和前缀,binlog还有文件格式和保留天数的设置,这里不过多介绍。
修改完配置文件,重启数据库:
service mysql stop;
service mysql start;
1、在master给mysql中添加一个主从复制专用的用户,并授权给从库
create USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl'
grant replication slave on *.* to 'repl'@'%‘;
flush privileges;
2、查看master的状态
show master status;
3、在standy上设置同步冲binlog.000001的156位置开始
change master to
master_host='192.168.20.100',
master_port=3306,
master_user='repl',
master_password='repl',
master_log_file='binlog.000001',
master_log_pos=156;
然后启动从库:
start slave;
查看从库状态,show slave status如果下图红框内两项为yes
这次配置后一直显示在连接中,是因为之前grant授权没做好,重新配置了授权就可以了,
最后直接在100上新建数据库,看从库110上是否同步
三、双主热备
1、紧接上边的配置,给从库110也添加复制数据的账户,并授权给110
create USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl'
grant replication slave on *.* to 'repl'@'%‘;
flush privileges;
2、查看110的master信息
3、在100上设置同步位置并开启slave;
4、查看100的slave状态
5、双主配置完成,可以在100和110上改变数据库进行验证。
1、安装
https://www.jianshu.com/p/6a5ece10f158
2、主从
https://www.jianshu.com/p/fc90ad7d34e0
3、双主
https://www.jianshu.com/p/50b9446d77f4
4、docker配置双主