转载请表明出处 https://blog.csdn.net/Amor_Leo/article/details/85161624 谢谢
Centos7安装mysql5.7并且配置主从复制
安装Mysql
清除Centos7的默认数据库mariadb
rpm -qa |grep mariadb |xargs yum remove -y
下载mysql源码
cd /usr/local/
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
解压mysql
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
为mysql安装目录重命名
mv /usr/local/mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
新建data目录
mkdir /usr/local/mysql/data
新建mysql用户组
groupadd mysql
新建mysql用户
useradd -r -g mysql mysql
修改/usr/local/mysql目录拥有者为新建的mysql用户
cd /usr/local/mysql
chown -R mysql:mysql ./
安装mysql
./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
- 记下初始密码 t:ba%WrRl8XE
修改/etc/my.cnf
如果不存在就新建
vim /etc/my.cnf
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
#设置忽略大小写(简单来说就是sql语句是否严格)
lower_case_table_names = 1
# 开启ip绑定
bind-address = 0.0.0.0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
#指定客户端连接mysql时的socket通信文件路径
[client]
socket=/usr/local/mysql/mysql.sock
default-character-set=utf8
添加开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
修改mysqld
vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
启动mysql
service mysqld start
设置开机启动
chkconfig --add mysqld
配置mysql环境变量
vim /etc/profile
- 添加
export PATH=$PATH:/usr/local/mysql/bin
- 刷新
source /etc/profile
重新启动mysql服务
service mysqld restart
登录mysql并修改root密码
使用上面记录的随机密码登录mysql
mysql -u root -p
修改密码
alter user 'root'@'localhost' identified by 'root';
刷新权限
flush privileges;
设置允许远程连接数据库
show databases;
use mysql;
show tables;
- 查看允许连接的远程地址
select Host,User from user;
设置
update user set user.Host='%' where user.User='root';
刷新权限
flush privileges;
- 退出
ctrl + d
放行端口3306
主从复制
-
先再开一台虚拟机(192.168.0.108)按照上面的步骤安装mysql
-
选择一台作为主机(192.168.0.113)
主机配置(192.168.0.113)
编辑my.cof
vim /etc/my.cnf
- 添加
server-id=1 这个就是我们mysql数据库的标识server-id=1 log-bin=master-bin
log-bin=master-bin 打开我们mysqllog-bin日志 这个日志里面,有sql
mysql里配置
- 新增用户
mysql -u root -p
create user 'lhl518'@'192.168.%.%' identified by '123456';
- 授权
grant replication slave on *.* to 'lhl518'@'192.168.%.%';
- 刷新权限
flush privileges;
- 查看master状态
show master status;
从机配置
编辑my.cof
vim /etc/my.cnf
- 添加
server-id=2
mysql里设置
-
执行以下命令
mysql -u root -p
-
告诉他的主机是什么?用户名,密码 ?
change master to master_host='192.168.0.131',master_port=3306,master_user='lhl518',master_password='123456',master_log_file='master-bin.000001',master_log_pos=763;
- master_host=‘192.168.0.131’ mysql主机ip
- master_port=3306 mysql主机端口号
- master_user=‘lhl518’ 你刚刚在主机上新增的用户名
- master_password=‘123456’ 你刚刚在主机上新增的用户设的密码
- master_log_file=‘master-bin.000001’ 在主机上使用命令show master status;查看
- master_log_pos=763 在主机上使用命令show master status;查看
- 如果报错
- 执行(报错执行)
stop slave;
- 再次告诉从机主机的信息(报错执行)
change master to master_host='192.168.0.131',master_port=3306,master_user='lhl518',master_password='123456',master_log_file='master-bin.000001',master_log_pos=763;
-
启动
start slave;
-
查看是否成功
show slave status \G;
以下两个都为yes就代表成功了
Slave_IO_Running: Yes Slave_SQL_Running: Yes 说明主从成功