MySQL安装及主从配置

准备工作

将mysql tar包上传到ftp 目录后解压,因为不是用zip算法压缩的所以不支持参数 z

1
tar -vxf mysql-8.0.27-linux-glibc2.17-x86_64-minimal.tar

解压后得到三个压缩文件,分别是主程序、、route路由、测试test

解压主程序

1
tar -vxf mysql-8.0.27-linux-glibc2.17-x86_64-minimal.tar.xz

得到解压后文件就是 已编译好的程序

在bin 目录中可以看见和window版本一一致的主程序 mysqld 和客户端程序 mysql

安装配置

将解压好的的mysql拷贝到local目录下重命名 并进入

1
2
cp -r /usr/ftp/mysql-8.0.27-linux-glibc2.17-x86_64-minimal /usr/local/mysql8
cd /usr/local/mysql8/

创建mysql用户

1
2
useradd -r -g root mysql
#chown -R mysql:root ./

修改mysql的安装目录设置

1
vim /etc/my.cnf

加入

1
2
3
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data
socket=/tmp/mysql/mysql.sock

进入local 下mysql 的安装目录 执行mysql主程序的初始化参数 指定数据目录 注意root@localhost后的密码

1
2
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data
./bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql8/data

把mysql服务拷贝到init目录下 成为系统服务

1
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql

修改系统务器中指定的mysql安装目录

1
vim /etc/init.d/mysql
1
2
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data

创建临时文件夹和日志文件夹 创建一个默认的日志文件

1
2
3
4
mkdir /tmp/mysql
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:root /var 授予mysql用户组访问权限

设置文件配置 字符集和socket

1
vim /etc/my.cnf.d/mysql-clients.cnf
1
2
default-character-set=utf8
socket=/tmp/mysql/mysql.sock

1
chown -R mysql:root /tmp    继续赋予权限

第一次运行 mysql -uroot -p 打不开 执行下面的ln 创建一个软链接(windows中的快捷方式 创建在usr bin 目录中,因为usr/bin 在path变量中)

1
ln -s /usr/local/mysql8/bin/mysql /usr/bin/

启动

1
service mysql start

密码

免密登陆

找到mysql配置文件:my.cnf

1
vim /etc/my.cnf

在【mysqld】模块添加:skip-grant-tables 保存退出

重启mysql服务使配置生效

1
service mysql restart

密码置空

1
mysql -u root -p      //提示输入密码时直接敲回车

选择数据库

1
use mysql;

将密码置空 退出数据库

1
2
update user set authentication_string = '' where user = 'root';
quit

去除免密登陆配置

1
vim /etc/my.cnf

注释掉 skip-grant-tables

重启服务

1
service mysql restart

修改密码

1
2
mysql -u root -p      //提示输入密码时直接敲回车
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; //修改密码

%表示所有地址 localhost 表示本机 如果上方修改密码用的是localhost则需要设置允许远程登录。

允许远程登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#选择数据库
use mysql;

将root用户设置为所有地址可登录 localhost 表示只有本机可登录
update user set host='%' where user='root';

将用户root密码设置为用不过期
alter user 'root'@'%' identified by '123456' password expire never;

修改root用户密码加密方式
alter user 'root'@'%' identified with mysql_native_password by '123456';

刷新权限
flush privileges;

MySQL主从

192.168.139.123 //主库 192.168.139.122 //从库

1
vi /etc/my.cnf

添加

1
2
log-bin=mysql-bin #开启二进制日志
server-id=1 #主机设置server-id=1 主机设置server-id=2

修改后重启mysql

1
systemctl restart mysql

主库

给主数据库创建用户并授权:用户:repl 密码:123456 ip填写从库的ip

1
2
3
CREATE USER 'repl'@'192.168.139.122' IDENTIFIED BY '123456';    //创建用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.139.122'; //授予权限
flush privileges; //刷新权限

查看日志文件的位置和状态

1
SHOW MASTER STATUS;

从库

执行同步SQL语句(主库的ip、主机名、登录凭证、二进制文件的名称和位置)

1
2
3
4
5
6
CHANGE MASTER TO
MASTER_HOST='192.168.139.123',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000005',
MASTER_LOG_POS= 1765;

启动slave同步进程

1
start slave;

查看slave状态

1
show slave status\G;

MySQL主主

192.168.139.122(从库)

给主数据库创建用户并授权:用户:repl 密码:123456 ip填写从库的ip

1
2
3
CREATE USER 'repl'@'192.168.139.123' IDENTIFIED BY '123456';    //创建用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.139.123'; //授予权限
flush privileges; //刷新权限

查看日志文件的位置和状态

1
SHOW MASTER STATUS;

192.168.139.123(主库)

执行同步SQL语句(主库的ip、主机名、登录凭证、二进制文件的名称和位置)

1
2
3
4
5
6
CHANGE MASTER TO
MASTER_HOST='192.168.139.122',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 3941;

启动slave同步进程

1
start slave;

查看slave状态

1
show slave status\G;

报错

原来是主库repl的plugin是caching_sha2_password 就会导致连接不上,修改为mysql_native_password即可解决。

1
select user,host,password_expired from mysql.user;
1
SELECT plugin FROM `user` where user = 'repl';

1
ALTER USER 'repl'@'192.168.139.122' IDENTIFIED WITH mysql_native_password BY '123456';


MySQL安装及主从配置
https://yftxhy.site/2022/11/28/MySQL安装及主从配置/
作者
Taozi
发布于
2022年11月28日
许可协议