最近政府项目对安全要求很高,mysql 5.7 版本有漏洞,信息泄露,需要升级
提供了厂家补丁信息,进去一看,啥也没有。
时间紧,任务重,备份,升级
1.卸载原部署mysql 服务,或者自带mariadb
#找到
rpm -qa |grep MariaDB
#remove
yum remove mari***
下载rpm包
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
解压位置随意
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar
解压后出现一堆rmp包,找自己需要的
rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm --force --nodeps
# 不解释了,按照顺序来就行 --force --nodeps 要加上
安装好之后 修改 没有文件就创建一个 /etc/my.conf
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 最好选择
basedir=/data/mysql
# 设置mysql数据库的数据的存放目录
datadir=/data/mysql/mysqldb
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。
max_connect_errors=100
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#
default_authentication_plugin=mysql_native_password
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
interactive_timeout = 1800
wait_timeout = 1800
#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600
#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 64M
max_heap_table_size = 64M
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
因为自定义了数据位置 /data/mysql 提前创建好
赋权
chown mysql:mysql /var/lib/mysql -R
chown mysql:mysql /data/mysql -R
#不执行初始化不好使
初始化数据库
#执行后可以看到/data/mysql 目录下有文件生成
mysqld --initialize --no-defaults
#查看初始密码
cat /var/log/mysqld.log
#末尾: 以后就是密码
启动服务
#启动服务
systemctl start mysqld
#开机自启
systemctl enable mysqld
#登录
mysql -uroot -p密码
#修改root密码
ALTER user 'root'@'localhost' IDENTIFIED BY 'Root@2022!';
# 创建用户
CREATE USER 'xxx'@'%' IDENTIFIED BY 'xxx@2022!';
#删除用户
drop user 'xxx'@'%';
#创建数据库
create database xxx_db;
#赋权
GRANT ALL ON xxx_db.* TO 'xxx'@'%' WITH GRANT OPTION;
数据库完了,主从配置 修改/etc/my.cnf
主库 在[mysqld] 后添加如下
[mysqld]
log-bin=mysql-bin
server-id=1
重启systemctl restart mysqld
登录创建同步用户
CREATE USER 'xxx'@'从库ip' IDENTIFIED WITH mysql_native_password BY 'xxx@2022!';
GRANT REPLICATION SLAVE ON *.* TO 'xxx'@'从库ip';
查看同步点SHOW MASTER STATUS;
[mysqld]
server-id=2
重启systemctl restart mysqld
#登录执行
CHANGE MASTER TO
MASTER_HOST='主库ip',
MASTER_USER='xxx',
MASTER_PASSWORD='xxx@2022!',
MASTER_LOG_FILE='截图file值',
MASTER_LOG_POS=截图position值;
#启动同步
start slave;
#查看同步状态
show slave status\G;
#看到两个yes 说明ok