mysql8.0.12编译安装

前言

  • MYSQL-LINUX7
      • 系统环境
      • 依赖环境安装
      • 下载源码包
      • 创建用户和建立数据目录并赋予用户目录权限
      • 编译安装
      • 配置my.cnf
      • 配置启动脚本
      • 如果报错,修改/etc/init.d/mysqld
      • 启动MySQL服务
      • 重置密码

MYSQL-LINUX7

系统环境

systemctl stop firewalld
systemctl disabled firewalld
setenforce 0
iptables -F

[root@yw-test yum.repos.d]# vim /etc/selinux/config
SELINUX=disabled

#内核参数修改
echo "vm.swappiness=10">>/etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle=1">>/etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse=1">>/etc/sysctl.conf
echo "vm.dirty_background_ratio=8">>/etc/sysctl.conf
echo "* soft nofile 1024000" >>/etc/security/limits.conf
echo "* hard nofile 1024000" >>/etc/security/limits.conf
sysctl -p

依赖环境安装

yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel

#检查libaio,如果没有yum install libaio libaio-devel
[root@localhost ~]# rpm -qa |grep libaio
libaio-devel-0.3.109-13.el7.x86_64
libaio-0.3.109-13.el7.x86_64

下载源码包

cd /u-data
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.12.tar.gz

创建用户和建立数据目录并赋予用户目录权限

groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /u-data/mysql
mkdir -p /u-data/mysql/data
chown -R mysql.mysql /u-data/mysql/*
chmod -R 755 /u-data/mysql

编译安装

tar -zxvf mysql-boost-8.0.12.tar.gz
cd  mysql-8.0.12

cmake . -DCMAKE_INSTALL_PREFIX=/u-data/mysql \    #安装目录
-DMYSQL_DATADIR=/u-data/mysql/data \              #数据存放目录
-DSYSCONFDIR=/etc \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/u-data/mysql-8.0.12/boost \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

make -j6
make install -j6

echo "PATH=/u-data/mysql/bin:$PATH" >> /etc/profile
source /etc/profile

mysqld --initialize-insecure --user=mysql --basedir=/u-data/mysql --datadir=/u-data/mysql/data

配置my.cnf

vim /etc/my.cnf

[client]
port=3306
socket=/u-data/mysql/mysql.sock

[mysqld]
port=3306                      
socket=/u-data/mysql/mysql.sock
basedir=/u-data/mysql                    #安装目录
datadir=/u-data/mysql/data               #数据存放目录
pid-file=/u-data/mysql/data/mysql.pid
log-error=/u-data/mysql/logs/error.log
transaction_isolation = READ-COMMITTED             #设置隔离级别的参数 = 读提交,不允许脏读,但允许不可重复读
character-set-server = utf8mb4              
collation-server = utf8mb4_general_ci
lower_case_table_names = 0                         #表名存储为给定的大小和比较是区分大小写的
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION


default_authentication_plugin = mysql_native_password

wait_timeout=600           #非交互式连接超时时间,默认的连接mysql api程序,jdbc连接数据库等
interactive_timeout=240    #交互式连接超时时间(mysql工具、mysqldump等)

default_storage_engine = innodb  #表示永久表(permanent tables)的默认存储引擎
max_connections = 4000           #设置最大连接(用户)数 
max_connect_errors = 1000        #负责阻止过多尝试失败的客户端以防止暴力破解密码的情况
table_open_cache = 1024          #设置table高速缓存的数量
max_allowed_packet = 128M        #服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小
open_files_limit = 65535         #mysqld进程能使用的最大文件描述(FD)符数量
server-id=1
enforce_gtid_consistency=on      #启动临时表功能
log-slave-updates=1              #主从同步的设置
log-bin=master-bin
log-bin-index = master-bin.index
relay-log = relay-log
relay-log-index = relay-log.index
binlog_format=row   #日志中会记录成每一行数据被修改的形式,然后在 slave 端再对相同的数据进行修改       
skip-name-resolve   #
log-slave-updates=1
relay_log_purge = 0        #禁止SQL线程在执行完一个relay-log后自动将其删除
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /u-data/mysql/logs/mysql-slow.log
mkdir -p /u-data/mysql/logs
touch /u-data/mysql/logs/mysql-slow.log
touch /u-data/mysql/logs/error.log

配置启动脚本

cp ./support-files/mysql.server /etc/init.d/mysqld

[root@localhost mysql-8.0.12]# vim /etc/init.d/mysqld

修改
安装路径
46    basedir=/u-data/mysql
数据库文件存放路径
47    datadir=/u-data/mysql/data

chmod +x /etc/init.d/mysqld 

[root@localhost mysql-8.0.12]# yum -y remove mariadb-libs.x86_64  #不一定是这个版本
[root@localhost mysql-8.0.12]# yum -y remove mysql*
[root@localhost mysql-8.0.12]# service mysqld start
Starting MySQL.Logging to '/usr/local/mysql/data/mysql-error.log'.
 SUCCESS! 

如果报错,修改/etc/init.d/mysqld

##报错
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/web-20200325.pid).

##解决
编辑/etc/init.d/mysqld,找到start模块,添加--user=root到mysqld_safe 即可

如果图片无法查看,可以看连接:
https://blog.csdn.net/u010227042/article/details/105126495/

如果手动执行:
去启动项修改266行成为以下即可:
266       $bindir/mysqld_safe --user=root --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

mysql8.0.12编译安装_第1张图片

#添加到系统服务
chkconfig --add mysqld

检查服务是否生效 
chkconfig  --list mysqld

启动MySQL服务

service mysqld start
service mysqld restart
service mysqld stop

重置密码

方法【1
[root@localhost mysql-8.0.12]# mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

方法【2
#vim /etc/my.cnf
[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程
skip-grant-tables

service mysql restart

[root@localhost mysql-8.0.12]# mysql

先:
mysql> flush privileges;

后:
mysql> alter user 'root'@'localhost' identified by 'Abc@2020';

再退出重试
mysql> quit

查看mysql版本:
mysql --version

删除跳过密码验证
#vim /etc/my.cnf
[mysqld]删除“skip-grant-tables”

你可能感兴趣的:(MHA高可用)