安装mysql
卸载之前的版本
1.查看系统是否安装了mysql
yum list installed | grep mysql
2.如果有则卸载之前的版本
例如查询出来的mysql-libs.x86_64
则执行:yum -y remove mysql-libs.x86_64
3.查找相关的mysql文件并删除
查找
find / -name mysql
删除相关文件:rm -rf [文件]
安装wget命令
yum install wget -y
若已经安装了则不管
给CentOS添加rpm源,并且选择较新的源
可以在官网上找到
这里使用
wget wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
安装下载好的rpm文件
yum install mysql80-community-release-el7-3.noarch.rpm
结果如下:
安装成功后会在/etc/yum.repos.d生成两个文件
修改mysql-community.repo文件
打开如下:
可以发现mysql8的enabled为1,其他的为0,这里使用mysql5.7所以需要修改mysql5.7enabled为1,其他为0.
安装mysql
yum install mysql-community-server -y
启动mysql服务并设置开机启动
启动之前需要生成临时密码,需要用到证书,可能证书过期,需要进行更新操作
yum update -y
启动mysql服务
service mysqld start
设置mysql开机启动
systemctl enable mysqld.service
获取mysql的临时密码
grep "password" /var/log/mysqld.log
使用临时密码登录数据库
修改密码
set global validate_password_policy=0;
set global validate_password_length=1;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
这里修改密码为123456
修改远程访问权限
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
修改之后如果开启了防火墙则还需要配置防火墙才能进行远程访问
设置字符集为utf-8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置
character-set-server=utf8
#在文件末尾新增[client]段,并在[client]段添加:
default-character-set=utf8
修改完之后重启服务
service mysqld restart
如果启动失败,可以查看/var/log/mysqld.log日志信息
启动navicat客户端
输入
show variables like '%character%'
结果如下:
mysql主从复制安装配置
首先在两台服务器上安装好数据库
在两台数据库中分别创建数据库
创建数据库,两台服务器上创建的数据库要一样
配置主服务器
1.修改配置文件/etc/my.cnf
在mysqld模块中添加如下配置信息
log-bin=master-bin #二进制文件名称
binlog-format=ROW #二进制日志格式,有row、statement、mixed三种格式,row指的是把改变的内容复制过去,而不是把命令在从服务器上执行一遍,statement指的是在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。mixed指的是默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
server-id=1 #要求各个服务器的id必须不一样
binlog-do-db=xboot #同步的数据库名称
如图配置:
2.配置从服务器登录主服务器的账号授权
--授权操作
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'root'@'%' identified by '123456';
--刷新权限
flush privileges;
从服务器的配置
1.修改配置文件/etc/my.cnf
在mysqld模块中添加如下配置信息
log-bin=master-bin #二进制文件的名称
binlog-format=ROW #二进制文件的格式
server-id=2 #服务器的id
配置如图:
重启主服务器的mysqld服务
1.重启mysqld服务
service mysqld restart
2.登入数据库查看master状态
登录数据库:mysql -uroot -p
查看master状态
show master status;
重启从服务器并进行相关配置
1.重启mysqld服务
2.登录数据库
3.连接主服务器
change master to master_host='192.168.94.142',master_user='root',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=154;
4.启动slave
start slave;
5.查看slave的状态
这里sql没有“;”符号
show slave status\G
结果如图:
当master上数据有变化时发现从机数据也会发生变化